BLACK FRIDAY
Save 59% on PageForge Annual $191/year $485/year
Claim 59% Off →
FlexiTOC – Flexible Table of Contents icon
Actively maintained Tested with WP 7.1

FlexiTOC – Flexible Table of Contents

The WordPress table of contents you never have to set up — and never have to fix. Curate it heading by heading; your choices survive every edit.

Active installs<10New
Downloads · 30d72▼ -54.1% vs prev. 30d
Rating—0 reviews
Health score60/100Fair
All-time downloads391Since Jul 2026
Support resolved—No recent threads
RequiresWP 6.5PHP 7.4+
Downloads · 7d15▼ -11.8% week over week
Our verdict

Use with caution

FlexiTOC works, but test it on a staging site before relying on it in 2026. Was last updated 1 month ago, and scores 60/100 on our health check.

  • Tested with the latest WordPress (7.1)
  • Small user base (<10 active installs)
  • Very few reviews so far

How does it stack up?

Side-by-side on installs, updates, ratings & support

Daily downloads

112334Jul 18Aug 24Sep 30
Yesterday2
Daily average (1y)5
Peak day46Jul 26, 2026
Last 12 months391

Download spikes usually follow a new release — each site that auto-updates counts as a download.

Rankings

Where FlexiTOC stands today

WordPress.org search rankings

Live position in the plugin search, top 100
KeywordPositionCompeting pluginsCategory
block >100 10,000 Best block plugins →
table of contents >100 10,000 Best table of contents plugins →
table of contents block >100 4,977 Best table of contents block plugins →
table-of-content >100 10,000 Best table-of-content plugins →
toc #79 216 Best toc plugins →

About FlexiTOC – Flexible Table of Contents

From the official readme · v1.0.6

Description

Install it, and every post that needs a table of contents gets one. That is the whole setup.

FlexiTOC reads the final rendered page — Gutenberg blocks, classic content, shortcode output — finds the headings, gives them stable anchor links, and builds the navigation in one pass. Because the TOC and the anchors come from the same pass, they cannot drift apart: no orphaned links, no “TOC shows a heading I deleted”, no anchors pointing nowhere. That same reliability makes it SEO-friendly — and just as usable for readers: choose exactly which heading levels appear, or flatten the hierarchy entirely, so a long page gets a clean list instead of a wall of deeply nested levels.

Authors stay in control without ever maintaining a list:

  • Every Heading block gets a simple choice — include, exclude, or just follow the site’s level defaults. Force one important H5 into the TOC, or drop a noisy H2 out, without touching global settings.
  • Give any heading a shorter TOC-only label (“Getting started with the plugin” can appear as just “Getting started”). The visible heading never changes.
  • Manage every heading from one place: the FlexiTOC Headings panel in the editor sidebar lists them all with toggles, labels, search, and bulk actions.
  • Choices are stored on the heading itself — rename it, move it, drag it around: your curation survives, because there is nothing to re-match.

One engine, three doors

However you place it, the same engine renders it:

  • Automatic – pick position and post types once in Settings. Each post can override the position, or opt out, in the FlexiTOC Display panel.
  • Block – put the FlexiTOC block exactly where you want it: in the post, in a sidebar, in a Site Editor template (it follows the post it sits next to, including inside a Query Loop). Sticky, “highlight current section”, and a flat (non-indented) heading hierarchy make it a proper documentation sidebar.
  • Shortcode – [flexitoc] for classic content and page builders, including Elementor and Divi.

Looks native, behaves politely

  • Inherits your theme’s colors and typography — including dark themes. Three style presets (Default, Boxed, Minimal) plus the native block color, border, spacing and typography controls when you want more.
  • Clean, accessible markup: a real nav landmark, native details collapsing (no JS), aria-current on the active link, reduced-motion respected.
  • Loads nothing on pages without a TOC. The optional scroll-spy script is under 1 KB.
  • Never rewrites your stored content — anchors are added at render time with WordPress’s HTML API. Deactivate the plugin and your content is exactly as it was.
  • A “Fixed header offset” setting keeps anchors, the sticky block and the section highlight clear of fixed headers.
  • Hidden headings (hidden, aria-hidden) are ignored automatically.
  • Writing in Bengali, Devanagari, Japanese, Arabic, Cyrillic or any non-Latin script? Your headings get complete, readable anchor links automatically — no setting to find, and none of the truncation or collisions that percent-encoded anchors cause.

For developers and page builders

  • Utility classes work anywhere, on the heading or a wrapper: flexitoc-include, flexitoc-exclude (or no-toc) on headings or their containers; flexitoc-ignore on a container to skip everything inside it.
  • Filters: flexitoc_headings (the list an instance will show), flexitoc_html (final markup), flexitoc_settings (effective settings).
  • Existing heading ids are always respected, and generated ids never collide with any id already in the document.

Installation

  1. Install FlexiTOC from Plugins → Add New (search “FlexiTOC”), or upload the zip from Plugins → Add New → Upload Plugin.
  2. Activate it. That’s it — the next eligible post or page gets a table of contents automatically.
  3. To adjust position, heading levels, or style, visit Settings → FlexiTOC. To place it manually instead, use the FlexiTOC block or the [flexitoc] shortcode.

Frequently asked questions

Will FlexiTOC slow down my site?

No measurable impact on pages without a TOC — no CSS or JS loads unless a TOC actually renders. Even where it does, the stylesheet is small and the optional scroll-spy script (only loaded if you enable “highlight current section”) is under 1 KB.

Is FlexiTOC really free — will there be a paid upgrade later?

Yes, really free, and it stays that way. There is no Pro tier, no feature paywall, and no upsell nags. Every feature described on this page — automatic insertion, per-heading control, sticky sidebar, the works — is in the free plugin, permanently.

Why doesn’t the TOC appear on a post?

By default it needs at least 2 eligible headings (configurable). A TOC listing one entry is noise, so the automatic mode skips it — but a block or shortcode you placed yourself always renders.

Where do I include/exclude a single heading?

Select the heading block and use its “Table of contents” panel — or open FlexiTOC Headings in the document sidebar to manage all of them at once. In the classic editor or a page builder, add the flexitoc-include / flexitoc-exclude CSS class instead.

How do per-heading choices interact with heading levels?

Levels are the default; explicit choices win. A heading you explicitly include shows even if its level isn’t selected, and one you exclude never shows. Headings you never touched simply follow the effective levels (block setting → per-post setting → site default).

Does it modify my post content in the database?

No. Anchor ids are injected at render time only. Your stored content is never touched.

Can I put it in a sidebar or template?

Yes — the FlexiTOC block works in widget areas, template parts and Site Editor templates, and shows the TOC of the post being viewed. Enable Sticky and “Highlight current section” for a documentation-style sidebar.

What are the shortcode options?

[flexitoc title=”Contents” levels=”2,3″ list=”ol” hierarchy=”flat” collapse=”closed” sticky=”1″ scrollspy=”1″ class=”my-class”] — every attribute is optional; anything you omit inherits the global settings. list accepts ul (bulleted), ol (numbered), or none (no marker). hierarchy accepts nested (default) or flat (single level — best for sidebars).

A post shouldn’t have an automatic TOC — how do I turn it off?

Open FlexiTOC Display in that post’s sidebar and choose “Do not auto-insert” (or a different position for just that post). Manual blocks and shortcodes are not affected.

Changelog

1.0.6

  • Fix: headings written in non-Latin scripts (Bengali, Devanagari, Japanese, Arabic, Cyrillic and so on) got mangled anchor links. WordPress’s URL-slug handling percent-encodes each of those characters into about nine, then truncates at 200 — so only ~22 characters of the heading survived, cut off mid-word. Worse, two different headings sharing that opening ran together into the same anchor, and the resulting “-2” suffixes shift if headings are later added or reordered, quietly breaking links that were already shared. Anchors now keep the heading’s own characters, so they stay complete, readable and stable. Latin-script headings are unaffected: their anchors are byte-for-byte what they were before.

1.0.5

  • Fix: TOC links could scroll to the wrong position when “Smooth scrolling” was on — a layout shift while the browser’s native smooth-scroll animation was still running (a web font or image finishing load and changing the page height, for example) could stop it short of the target heading. A small script, loaded only when smooth scrolling is enabled, now checks the landing position shortly after and corrects it if a shift knocked it off course. Not yet confirmed against WordPress 7.1 — needs its own live verification pass.

1.0.4

  • Fix: on a WordPress 7.1 Release Candidate, the FlexiTOC block occasionally failed to register at all (missing from the block inserter), caused by a timing race where window.wp was still undefined when the block’s editor script ran, despite correct script dependencies. Both editor scripts now defer their setup until wp and the specific sub-modules they need are confirmed available, which resolves this regardless of the underlying timing cause and is safe on all supported WordPress versions.
  • Confirmed compatible with WordPress 7.1 after repeated (8x) testing on the environment that originally reproduced the issue, with the fix applied.

1.0.3

  • Fix: block.json was missing declarative editorScript/style/editorStyle references, which WordPress.org’s plugin-directory scanner needs to detect and list a plugin’s blocks (the “Blocks” section on the plugin page, and visibility in the block editor’s “Available to install” search). The actual script/style registration is unchanged — these are handled in PHP as before, for translations and settings-aware localization — this only makes them statically visible to the directory’s scanner.
  • Add: readme tags now include “block” (moved into the first five, since only the first five tags are used for WordPress.org search).
  • Improve: readme wording refined against real search-demand data (highest-volume validated query is “wordpress table of contents”; page-builder compatibility — Elementor and Divi, both verified working via the shortcode — also has measurable search demand).
  • Add: an Installation section, and two FAQ entries addressing performance impact and the free/no-upsell guarantee up front.

1.0.2

  • Fix: when automatic insertion was off and a FlexiTOC block was placed outside the post content (a sidebar, widget area, or Site Editor template part), anchor ids were never added to the article’s headings. The sidebar TOC’s links pointed at ids that did not exist anywhere on the page, so clicking them did nothing (or occasionally jumped to the top of the page instead). Anchor ids are now always added whenever the page is displayed, regardless of where the TOC itself is placed.
  • Harden: some themes call the_content more than once for the same post; the plugin now caches its own processed output per post for the request so a second call can’t strip a custom heading label a second time with nothing left to restore it from.

1.0.1

  • Add: a third list style, None, for a clean nav-style list with no bullets or numbers.
  • Add: Heading hierarchy setting (Nested/Flat) — Flat lists every included heading at a single level, ideal for sidebar and sticky placements where nested indentation competes with the available width. Configurable globally, per block, and per shortcode.
  • Improve: the Numbered style now uses outline-style numbering for nested headings (1, 1.1, 1.2, 2, 2.1 …) instead of switching to letters (a, b, c) at the second level.
  • Fix: the block editor’s list-style preview (Bulleted/Numbered) always showed a bulleted list regardless of the selected setting; it now matches whatever is actually selected.
  • Fix: the “Bulleted” list style set no visible marker at all (ol correctly showed numbers, but ul had no matching override and stayed markerless). Bullets now render for the Bulleted style, both on the front end and in the editor preview.

Full changelog on WordPress.org →

Screenshots

The table of contents on a post, inheriting the theme's look.
The table of contents on a post, inheriting the theme's look.
Per-heading controls on the Heading block.
Per-heading controls on the Heading block.
The FlexiTOC Headings manager panel.
The FlexiTOC Headings manager panel.
Settings page.
Settings page.

For developers

Is this your plugin? Show off the numbers.

Add a live badge to your site, docs or GitHub README. It updates on its own — no account needed.

Active installs badge Rating badge Health score badge

Best FlexiTOC alternatives

All block plugins →
Alternatives
Rank Plugin Active installs Rating Updated Health
1 Spectra Legacy – Gutenberg Blocks Spectra Legacy – Gutenberg Blocks Gutenberg blocks for existing Spectra websites. Maintained, stable, and fully supported —… by Brainstorm Force 1M+ ★★★★★★★★★★ 4.7 (1.9K) 3 days ago 88
2 Breadcrumb NavXT Breadcrumb NavXT Adds breadcrumb navigation showing the visitor's path to their current location. by John Havlik 800K+ ★★★★★★★★★★ 4.6 (132) 1 month ago 77
3 PDF Embedder – PDF Viewer & Embed PDF Files for WordPress PDF Embedder – PDF Viewer & Embed PDF Files for WordPress Embed PDF files in WordPress posts and pages with a responsive PDF viewer block, live Block… by Syed Balkhi 300K+ ★★★★★★★★★★ 4.7 (523) 2 months ago 92
4 Layout Grid Block Layout Grid Block A Gutenberg container block to let you align items consistently across a global grid. by Automattic 200K+ ★★★★★★★★★★ 4.7 (13) 3 years ago 43
5 Crowdsignal Forms Crowdsignal Forms The Crowdsignal Forms plugin allows you to create and manage polls right from within the… by Automattic 200K+ ★★★★★★★★★★ 5 (3) 3 months ago 73
6 Content Views – Post Grid & Filter (Shortcode, Blocks, Elementor Widgets) Content Views Easy to show posts, pages, custom posts in customizable grid, list, slider, accordion… by Content Views 100K+ ★★★★★★★★★★ 4.8 (333) 1 month ago 84
7 Email Address Encoder Email Address Encoder A lightweight plugin that protects email addresses from email-harvesting robots, by… by Till Krüss 100K+ ★★★★★★★★★★ 4.2 (160) 6 months ago 77
8 Simple Sitemap – Responsive HTML Sitemap for WordPress Simple Sitemap – Responsive HTML Sitemap for WordPress Build a responsive HTML sitemap in the block editor with live preview, flexible sorting… by David Gwyer 60K+ ★★★★★★★★★★ 3.9 (72) 4 weeks ago 90
9 Flexible Table Block Flexible Table Block Flexible Table Block is a custom block plugin for the WordPress block editor that allows… by Aki Hamano 40K+ ★★★★★★★★★★ 4.9 (34) 2 months ago 76
10 Genesis Blocks Genesis Blocks A collection of content blocks, sections, & full-page layouts for the block editor. by StudioPress 40K+ ★★★★★★★★★★ 3.7 (24) 1 month ago 65

FAQ

FlexiTOC: quick answers

Straight answers, pulled from live WordPress.org data.

Live data from WordPress.org · checked Oct 1, 2026

Is FlexiTOC free?

Yes. FlexiTOC is free to download and use from the official WordPress.org plugin directory.

Is FlexiTOC safe to use in 2026?

FlexiTOC works, but test it on a staging site before relying on it in 2026. Was last updated 1 month ago, and scores 60/100 on our health check.

How many websites use FlexiTOC?

FlexiTOC is active on <10 WordPress websites and has been downloaded 391 times since it launched in July 2026. It was downloaded 72 times in the last 30 days.

Does FlexiTOC work with WordPress 7.1?

Yes. The developer has tested FlexiTOC up to WordPress 7.1.2, the latest release. It requires WordPress 6.5 or newer.

What PHP version does FlexiTOC need?

FlexiTOC requires PHP 7.4 or higher. Most hosts run PHP 8.x today, so it works on any modern WordPress hosting.

When was FlexiTOC last updated?

The latest version, 1.0.6, was released on August 21, 2026 (1 month ago).

Who makes FlexiTOC?

FlexiTOC is developed and maintained by Nazmul Asif.

What are the best alternatives to FlexiTOC?

The most popular alternatives to FlexiTOC are Spectra Legacy (1M+ installs), Breadcrumb NavXT (800K+ installs) and PDF Embedder (300K+ installs).

Powered by PageForge

Want thousands of pages that rank like these? Build them in an afternoon.

This directory runs on the same engine as PageForge. Turn any spreadsheet, CSV or API into thousands of fast, SEO-ready WordPress pages — with schema, internal links and AI-written copy baked in.

  • CSV, Google Sheets & API data sources
  • AI content, schema & internal links per page
  • Works with Elementor, Gutenberg, Yoast & Rank Math
  • Free on WordPress.org — no credit card
Sarah is here to help!
Hi there! 👋 Need help finding what you're looking for?
Sarah
Sarah
Online & Ready to Help
Hi there! 👋 Need help finding what you're looking for?

We'll use this to continue our conversation

Just now ✓ Verified

Join 500+ SEO Pros Scaling Their Strategy

Get exclusive programmatic SEO tactics, AI content workflows, and the latest PageForge updates delivered straight to your inbox. Stay ahead of the algorithm.

We care about your data in our privacy policy.