A contents list is the difference between a two-thousand-word post that gets skimmed and one that gets used. The reader can see the whole shape of it before they commit, jump to the part they came for, and find their way back — instead of scrolling until they give up.
Google can link into your sections
Every heading gets a clean, permanent anchor. Those are what search engines use to offer a jump-to link straight into the right part of your page, and what anybody sharing one section of your article needs in order to link to it at all.
It fits the site you already have
Sixteen designs, four colours you can override, and a list that inherits your own typeface. No page builder, no template files, and nothing loaded from anyone else's server — the whole thing is one small stylesheet and one small script.
Right on every post without touching any of them
Set it once and every long post gets a contents list; short ones do not, because a list of three links helps nobody. Any single post can overrule that from its own editor, and the shortcode and the block are there for the ones that want it somewhere specific.
Features
Everything you need to make a long post easy to read
Sixteen designs, not one with sixteen colour schemes
A plain list, a card, a rail, a bracket, ruled notebook paper, a magazine contents page, numbered steps, and a ladder whose dots fill in as the reader moves down the article. Each is a different shape, not the same box in a different colour. Override any of the four colours or leave them and the design decides.
Marks the section being read
The entry for whichever section the reader is in is highlighted as they scroll, so a long article always says where they are. It works from position rather than from what is on screen, which means it still has an answer in the middle of a long section where no heading is visible at all.
Every heading gets a permanent anchor
Readable ids generated the way WordPress makes post slugs, unique on the page, and never rewritten if a heading already had one — because an existing id is somebody's shared link. These are what a search engine uses to offer a jump straight into the right part of your page.
Automatic, but never on the wrong post
Added before the first heading — after the intro, above the first section — on any post long enough to need one. Set the threshold yourself, limit it to the post types and pages you choose, and overrule the whole thing from any single post's editor.
A shortcode and a block for the rest
[toc] anywhere in the content, or the Table of contents block in the editor. Both take their settings from the plugin unless you override them on the spot, so [toc design="rail" numbering="nested"] tries something on one post without changing anything for the others.
Comes back after it has scrolled away
A small button in the corner reopens the list once the real one has scrolled off the top, so the reader can jump to another section from anywhere in the article — without a sidebar, and without moving the list out of the post where it belongs.
A plain list, a card, a rail, a bracket, ruled notebook paper, numbered steps, a ladder whose dots fill as you read. Each is a different shape, not the same box in another colour.
yoursite.com/guides/shipping
02
They can see where they are
The entry for whichever section they are reading is marked as they scroll, and every heading gets a permanent anchor — so one section can be linked to, shared, or offered by Google as a jump straight into your page.
yoursite.com/wp-admin
03
Right on every post, without touching any
Added before the first heading on posts long enough to need one, on the post types you choose. The shortcode and the block are there for the ones that want it somewhere specific.
yoursite.com/guides/shipping
04
Where it matters most
A long list on a small screen would push the article off the bottom, so it folds away in a tap — and the button in the corner brings it back from anywhere in the piece.
Pricing
Get Table of Contents
Every plan includes every feature. Yearly plans renew automatically and can be cancelled any time; lifetime is a single payment. 30-day money-back guarantee on every first purchase.
1 domain
Billed yearly
$19/year
Renews automatically. Cancel whenever you like.
1 domain
One year of updates
One year of support
Free dev and staging sites
Cancel any time
Most popular
5 domains
Billed yearly
$29/year
Renews automatically. Cancel whenever you like.
5 domains
One year of updates
One year of support
Free dev and staging sites
Cancel any time
Unlimited
Billed yearly
$39/year
Renews automatically. Cancel whenever you like.
Unlimited domains
One year of updates
One year of support
Free dev and staging sites
Cancel any time
5 domains
One-time payment
$49once
No recurring charge, ever.
5 domains
Lifetime updates
Lifetime support
Free dev and staging sites
Pay once, no renewals
Most popular
Unlimited
One-time payment
$69once
No recurring charge, ever.
Unlimited domains
Lifetime updates
Lifetime support
Free dev and staging sites
Pay once, no renewals
Secure checkout by Stripe · 30-day refund policy · Cancel any time
After checkout you get a licence key and a download link straight away, plus an email copy. Upload the ZIP under Plugins → Add New, activate it, and paste your key into the plugin settings.
How do updates work?
Once your key is entered, new versions appear on your Plugins screen and install with one click, exactly like a plugin from the WordPress directory.
What happens when my licence expires?
The plugin keeps working. You only lose access to new updates and support until you renew.
Do staging sites use an activation?
No. Local installs, .test and .local domains, and staging or dev subdomains are free and unlimited.