Free on WordPress.org

Make your articles
easier to finish.

Turnkey Directories Reading Toolbar puts one glass bar above every post: listen to it, translate it, read it in the dark, print it clean, summarize it, share it. It installs from WordPress.org, works on any theme, and asks for no configuration — no account, no API key, no external service.

Install free from WordPress.org Try it right here

7 tools · 12 languages · ~21 KB gzipped · GPL-2.0

Not a screenshot

This is the toolbar. Press something.

Every button below actually works, using the same browser APIs the plugin uses on your site. Listen really speaks. Dark really repaints. Translate really opens a translated copy. Nothing here calls a server, because the plugin doesn't either.

Print view — toolbars and site chrome stripped

How to choose a roofer without getting burned

Most homeowners hire the first contractor who answers the phone, which is roughly the same strategy as picking a surgeon from a billboard. A roof is the single most expensive thing on your house, and the difference between a good install and a bad one does not show up for six years.

Start with the paperwork nobody wants to read. Ask for the licence number and check it yourself with the state board — it takes ninety seconds. Ask for proof of liability insurance and workers' compensation, then call the insurer to confirm the policy is current.

Then ask the question that separates the professionals from the rest: what happens when the deck underneath is rotten? A good roofer already has a written per-sheet price for that, because it happens on roughly one job in three.

On phones it becomes a speed-dial

Below 640px the bar collapses into a floating button that fans out into share, dark mode, listen, translate and summarize. Text-to-speech gets its own bottom-sheet player. The button fades down while the reader is scrolling and comes back when they stop, so it never sits on top of the sentence they're reading.

Native share sheet
On mobile, Share hands off to the operating system's own sheet instead of a row of network icons.
It obeys your settings
Switch Share off and the speed-dial stops offering it. Switch the toolbar off and there is no floating button at all.
Everything in the free plugin

Seven switches. All of them on by default.

The free version on WordPress.org is the whole reading experience — not a trial, not a teaser, and not a locked panel with a padlock on it. Every feature below is a toggle you own, and the plugin ships with all of them turned on.

Text-to-speech

Reads the article aloud using the browser's own speech synthesis at 0.75x to 2x. Play, pause, stop. Chunked playback with watchdogs for the browsers that stall mid-paragraph. No external API, no key, no cost per listen.

Dark mode

One click, theme-agnostic — it doesn't need your theme to support dark mode, because it doesn't ask. The reader's choice is remembered in their own browser storage, so it survives the next visit.

Translate — 12 languages

Spanish, French, German, Portuguese, Italian, Dutch, Polish, Japanese, Korean, Chinese, Arabic and Hindi. Each one opens a Google-translated copy in a new tab. No translation widget is loaded on your site.

Summarize

Opens the article's public URL in ChatGPT with a "summarize the key takeaways" prompt. It is a plain link the reader clicks — your server sends nothing, and there is no API key to buy.

Share & copy

X, Facebook, LinkedIn, Gmail and copy-link. Gmail opens a prefilled web compose window rather than a mailto: link, which silently does nothing on a machine with no mail app configured.

Print view

A dedicated print stylesheet that strips the toolbar and the site chrome, so Ctrl+P produces the article and nothing else — or a clean PDF. It loads as media="print", so it never costs you a millisecond on screen.

Mobile speed-dial

Below 640px the bar becomes a floating button that fans out into share, dark mode, listen, translate and summarize, with a bottom-sheet player for speech. It fades while scrolling and returns on stop.

Theme profiles

Dedicated profiles for Kadence, Astra, GeneratePress, Blocksy, Neve, OceanWP, Divi, Avada, Storefront, Hello Elementor and the Twenty Twenty-Three/Four/Five block themes, plus Elementor, Bricks, Breakdance, Beaver, Brizy and WPBakery.

Content targeting

Choose which post types the toolbar renders on. It ships targeting post only, so it never appears on your pages, your products or your landing pages until you say so.

Anything not on that list still works

Themes with a dedicated profile get theme-specific overrides. Everything else runs through a universal isolation layer that keeps the toolbar's styles inside the toolbar and your theme's styles out of it. Kadence deliberately gets no compatibility stylesheet at all — it's clean out of the box, and loading a fix it doesn't need would just be weight.

A compatibility report, not a guess
The Compatibility tab shows what it actually detected: your theme, child theme, page builder and whether you're on a block theme.
Filters if you need them
Content and header selectors are both filterable, so an unusual template is a one-line fix in a child theme rather than a support ticket.
Guideline 5, and why you benefit

The interesting part is what the free plugin doesn't contain

WordPress.org forbids a free plugin from shipping locked, upsell-driven code. We took that literally, and an automated gate in our build fails the release if any of it ever creeps back in. Here is what that means on your server.

Not in the free plugin
No licence code, licence checks, or is_pro() branches
No greyed-out buttons or teased features you can't use
No database tables — nothing is created on activation
No REST routes and no cron jobs
No outbound HTTP request initiated by the plugin, ever
No inline scripts, inline styles or on* handlers in PHP
What that buys you
Uninstall leaves nothing behind
Settings live in one option row. There's a switch to delete even that on uninstall — off by default, because most people change their mind.
Nothing phones home
ChatGPT, Google Translate, Gmail and the share endpoints are all links your reader clicks, disclosed in the readme. Your server never talks to any of them.
Reviewed by WordPress.org
Approved and published under the same account that owns the TurnKey Directories plugin, which has been through the same review.
Pro is an add-on, not an unlock
It is a separate plugin that requires this one. There is no dormant paid code sitting in the free install waiting for a key.
Read it on WordPress.org
Optional add-on

Free makes the article readable. Pro makes it measurable.

Pro is a second plugin that installs on top of the free one. It adds the furniture around the article — the table of contents, the sticky call-to-action — and everything that tells you whether any of it worked.

Pro

Table of contents sidebar

Built automatically from the article's own H2/H3/H4 headings into a sticky card, with scroll-spy that highlights the section the reader is in and names it in the card header.

Reading progress rail
A vertical fill bar tracking position through the article — horizontal on mobile.
Estimated reading time, then a countdown
Starts as "8 min read" and becomes a live "~3 min left" as they go.
Collapsible, and it remembers
A reader who folds it away keeps it folded. On phones it becomes a bottom-sheet drawer with its own toggle.
Pro

A layout engine, not a fixed sidebar

Floating sidebars break on the themes that don't expect them. So this measures first: it reads your header height (including sticky headers that pin on scroll), finds your theme's own sidebars so it doesn't collide with them, anchors to the post title, and re-runs on load and resize.

Auto
Float when there's room, fall back to inline when there isn't. The default, and the right answer for most sites.
Force inline
Never float — render in the article column. For full-width layouts, or sites that already have a sidebar.
Force sidebars
Always float on desktop. Only sensible on a narrow (~800px) content column.
Pro

Sticky call-to-action

A right-hand card that follows the reader down the page — heading, description, button text, button URL, set per post. On phones it becomes a bottom bar you can swipe away. On narrow layouts it mirrors into an inline panel after the first H2, early enough to be seen.

Pro

A/B testing that survives your cache

Two CTA variants per post, split 50/50. The assignment happens in the browser against a cookie — because if the server picked, your full-page cache would serve every visitor whichever variant it happened to store first, and the test would be meaningless.

Pro

Click analytics

Total clicks, split by desktop, mobile and tablet, on a daily chart, with a per-post table showing which variant was clicked. Tracking fetches a fresh nonce before it records, so clicks on cached pages aren't silently dropped.

Pro

Engagement analytics

Which reading tools people actually use — listen, translate, dark mode, copy, print, share, summary — and scroll depth at 25%, 50%, 75% and 100% with a completion rate per post. Off by default; you turn it on deliberately.

Pro

"Was this helpful?"

A Yes/No prompt at the end of each article and a per-post helpful-rate table — the cheapest signal there is for which posts in your back catalogue are quietly disappointing people. Needs engagement tracking switched on, or there is nowhere to record it.

Pro

AI CTAs and summaries

Optional. Writes a context-aware call-to-action from the article, and can replace the ChatGPT link with a summary rendered in the page. Bring your own Anthropic or OpenAI key; it's stored encrypted, never in plaintext.

If you turn AI on

It is off until an administrator accepts a consent banner that spells out exactly what gets sent where, and it stays off for everyone who never touches it.

The model is configuration, not code
Pick a provider and a model from the dropdown, or type any model id in the custom box. When a provider retires a model — and they do — it's a one-field fix, not a plugin update.
A spend guard, because loops happen
A hard cap on calls so a runaway bulk job can't quietly empty your API budget overnight. Bulk generation runs through WP-Cron rather than one enormous request.
Your key is stored as ciphertext
Not in an options row anyone with database access can read.
Four ways in, one of them free

Every paid plan has every Pro feature

There is no feature ladder to climb. The only things that change between the three paid plans are the price, the billing, and how many sites you can run it on — so the decision is just "how many sites, and do I want to stop paying?"

Free
$0
forever, on WordPress.org

The complete reading toolbar. Not a trial — there is no expiry and no cap.

  • Text-to-speech, 0.75x–2x
  • Dark mode
  • Translate, 12 languages
  • Summarize with ChatGPT
  • Share, copy link, print view
  • Mobile speed-dial
  • Unlimited sites
Pro Annual
$29.99
per year

Every Pro feature, plus updates and support for as long as the licence is active.

  • Everything in Free
  • Table of contents + reading progress
  • Sticky CTA sidebar
  • Click + engagement analytics
  • A/B testing
  • AI CTAs and summaries
  • Priority support
  • 1 site
Most people pick this
Pro Lifetime
$99.99
once

Pay once, keep it forever — every Pro feature and all future updates, no renewal.

  • Everything in Pro Annual
  • All future Pro features
  • No recurring billing, ever
  • Priority support
  • 1 site
Agency
$79.99
per year

For agencies and anyone running more than one blog. Every Pro feature, everywhere.

  • Everything in Pro Annual
  • Use it across client sites
  • Updates and priority support
  • Unlimited sites
30-day money-back guarantee All plans, one checkout Free keeps working if a licence lapses

Paid plans are sold through LemonSqueezy, who handle checkout and act as merchant of record. Full terms in the refund policy.

Already a customer?

A TurnKey Directories Pro or Agency key already unlocks this

The two plugins come from the same workshop, so licensing accepts either key. If you bought TurnKey Directories Pro or Agency, activate Reading Toolbar Pro with that same licence — there is nothing extra to buy.

One licence field, either key
Paste a Reading Toolbar Pro key or a TurnKey Directories Pro/Agency key into the same box. The plugin works out which it is.
Two plugins, two activations
Each plugin registers its own activation, so a site running both uses two slots on the key. Worth knowing before you install on the tenth site.
Updates come to you
Pro checks for its own updates while the licence is active, so it appears on the Plugins screen like anything else.
Measured, not claimed

What it costs your page, exactly

These are byte counts from the shipping 1.0.1 files, not a marketing round-down. A post with every feature switched on loads the numbers below. Every other URL on your site loads nothing at all.

21 KB
Over the wire, gzipped
0
External requests
0
Tables added by free
PHP 7.4
Minimum · WordPress 5.9

Where the weight goes

94 KB of CSS and JS, uncompressed
Which is about 21 KB after gzip — and your host almost certainly gzips. Add roughly 13 KB on themes that need the compatibility stylesheet; Kadence needs none.
The print stylesheet is free of charge
It loads as media="print", so the browser never blocks rendering on it.
Switch a feature off and its file stops loading
Turn off speech and tts.js is never enqueued. Turn off the toolbar and the mobile files go with it.
Plain JavaScript
No React, no jQuery dependency, no build step, no bundle to explain. It is readable source on your server.

What it knows about your readers

Nothing, until you switch analytics on
Free records nothing at all. Pro's engagement tracking ships off, and stays off until an administrator enables it.
Four columns, and that's the lot
When it is on, a row is: post id, event type, timestamp, and whether the device was desktop, mobile or tablet. No IP addresses, no user agents, no referrers, no visitor identity.
It stays in your database
Aggregate counts in your own tables. There is no analytics service behind this, and nothing to opt your readers out of.
AI is the one thing that leaves
If — and only if — you enable it, article text goes to the provider whose key you supplied, after a consent banner that says so in plain words.

Questions worth asking

Is the free version actually free, or is it a trial?
Free, with no expiry, no site limit and no nag wall. It is hosted on WordPress.org, which does not permit locked or time-limited code in a free plugin — and there is none in it. Pro is a separate plugin you install alongside; it is an addition, not a key that unlocks something already sitting on your server.
Will it slow my site down?
A post with every feature on loads 94 KB of CSS and JavaScript, which gzips to about 21 KB. Nothing loads on your pages, your archives, your shop or any post type you haven't enabled — by default that means everything except blog posts. The print stylesheet loads as media="print" and costs nothing on screen, and switching a feature off stops its file being enqueued at all.
Does it work with my theme?
Very probably. Dedicated profiles ship for Kadence, Astra, GeneratePress, Blocksy, Neve, OceanWP, Divi, Avada, Storefront, Hello Elementor and the recent Twenty Twenty-* block themes, plus Elementor, Bricks, Breakdance, Beaver Builder, Brizy, WPBakery and Fusion. Anything else runs through a universal isolation layer and still works — it just doesn't get theme-specific tweaks. The Compatibility tab tells you what was detected, and both the content and header selectors are filterable if your template is unusual.
Does "Summarize" send my content to OpenAI?
Not from your server, no. In the free plugin, Summarize is an ordinary link: it opens chatgpt.com in the reader's own browser with your article's public URL and a "summarize the key takeaways" prompt. Your site makes no request and needs no API key. It only becomes a server-side call if you buy Pro and deliberately switch on AI summaries with your own key — and that path is gated behind a consent banner.
Does text-to-speech cost anything per listen?
No — it uses the speech synthesis built into the reader's browser, so there is no API, no key and no per-character bill no matter how popular the article gets. The trade-off is honest: voice quality is whatever the reader's operating system provides, which is excellent on recent macOS and iOS and more variable elsewhere. You can hear your own device's voice in the demo above.
What exactly is the split between free and Pro?
Free is the reading toolbar: speech, dark mode, translate, summarize, share, copy, print, and the mobile speed-dial. Pro is the furniture around the article and everything that measures it: the table-of-contents sidebar with reading progress and reading time, the layout engine that positions it, the sticky call-to-action, A/B testing, click and engagement analytics, the "was this helpful?" widget, and the optional AI features. If you only want your articles to read better, free is the whole product.
Do you collect data about my visitors?
We collect nothing — there is no service on our end to collect it. The free plugin records nothing at all and creates no tables. Pro can record engagement in your database, but only after you switch it on, and a row holds four things: the post id, the event type, a timestamp, and whether the device was desktop, mobile or tablet. No IP addresses, no user agents, no referrers.
Can I use it on client sites?
The free plugin, on as many as you like. For Pro features across several sites, Agency at $79.99/year covers unlimited activations; Pro Annual and Pro Lifetime are each licensed for one site.
I already bought TurnKey Directories. Do I have to pay again?
No. A TurnKey Directories Pro or Agency licence also activates Reading Toolbar Pro — paste the same key into the licence field. One thing worth knowing: each plugin registers its own activation, so a single site running both consumes two activation slots on that key.
What happens if I let a Pro licence lapse?
The free plugin carries on exactly as before — it doesn't know or care about licences. Pro stops registering its features and shows only its Licence tab until a key is active again. Your settings and your analytics data stay in the database.
Is it translation-ready?
Yes. Every user-facing string goes through WordPress's standard internationalisation functions and a .pot file ships in the plugin, so Loco Translate or any tool that handles POT files will pick it up. That's separate from the Translate button, which is about translating your articles for readers.
What's your refund policy?
A 30-day money-back guarantee on paid plans — email support@turnkeydirectories.com and we'll process it. The full wording, including how prorated credits work after 30 days, is on the refund policy page. And the reading toolbar itself is free, so you can find out whether you like it before any of this matters.

One minute to install.
No configuration.

Search for it in your Plugins screen, activate it, open any post. The toolbar is already there with everything switched on. If you don't like it, deactivating it leaves your database exactly as it found it.

Unlimited sites, free No account, no API key GPL-2.0