Title: Table of Contents Plus – Automatic Table of Contents for Posts &amp; Pages
Author: Syed Balkhi
Published: <strong>July 1, 2011</strong>
Last modified: July 26, 2026

---

Search plugins

![](https://ps.w.org/table-of-contents-plus/assets/banner-772x250.png?rev=578600)

![](https://ps.w.org/table-of-contents-plus/assets/icon-256x256.png?rev=1151771)

# Table of Contents Plus – Automatic Table of Contents for Posts & Pages

 By [Syed Balkhi](https://profiles.wordpress.org/smub/)

[Download](https://downloads.wordpress.org/plugin/table-of-contents-plus.202607.1.zip)

 * [Details](https://wordpress.org/plugins/table-of-contents-plus/#description)
 * [Reviews](https://wordpress.org/plugins/table-of-contents-plus/#reviews)
 *  [Installation](https://wordpress.org/plugins/table-of-contents-plus/#installation)
 * [Development](https://wordpress.org/plugins/table-of-contents-plus/#developers)

 [Support](https://wordpress.org/support/plugin/table-of-contents-plus/)

## Description

Table of Contents Plus automatically creates a table of contents for your long posts
and pages by reading their headings. Your readers get a clickable summary at the
top of the article, jump straight to the section they need, and stay on the page
longer. Set it up once and every qualifying post gets a table of contents from then
on, with no block to insert and no shortcode to remember.

A clear table of contents also helps search engines understand how your content 
is structured, and Google sometimes turns those headings into jump-to links in the
search results. It is a small addition that improves navigation for readers and 
gives your long-form articles a better chance of standing out.

#### Automatic Table of Contents for Every Long Post

Turn the table of contents on for posts, pages, or any custom post type, and it 
appears automatically once an article has enough headings. You set the threshold,
so short posts stay clean and only genuinely long content gets an index. Place the
table of contents before the first heading, after the first paragraph, at the top,
or at the bottom, so it fits the way you write.

#### Smooth Scrolling and Clean Anchor Links

Every entry in the table of contents is an anchor link that jumps to the matching
heading. Smooth scrolling is on by default, so clicking an item glides down to the
section instead of snapping to it. Anchor IDs are lowercase and hyphenated, which
keeps your URLs readable and easy to share, for example yoursite.com/guide/#getting-
started.

#### Style the Table of Contents to Match Your Theme

Choose from several ready-made themes or set your own colors for the background,
border, title, and links. A live preview shows each theme before you apply it, so
you see the result without saving and reloading. Set the width and font size, show
a numbered list or a plain list, and nest sub-headings so the table of contents 
mirrors the structure of your article.

#### Decide Exactly Where the Table of Contents Appears

Show the table of contents across your whole site or limit it to one section by 
URL path, keep it off the homepage, and set how many headings an article needs before
one shows up. Pick which heading levels to include, exclude individual headings 
by name with wildcard matching, and add the [no_toc] shortcode to any post to hide
the table of contents on that page.

#### Table of Contents Widget and Shortcode

Want the table of contents in your sidebar? Add the Table of Contents Plus widget
or block to any widget area and it follows the post being viewed. For full control
over placement, the [toc] shortcode outputs the table of contents wherever you put
it in your content, and it works inside synced (reusable) blocks.

#### A Table of Contents for Any Kind of Content

 * Documentation and knowledge bases
 * Long-form guides and tutorials
 * Recipes and how-to posts
 * Wikis and reference pages
 * Product and support pages
 * Research and academic articles

#### Built by the AIOSEO Team

Table of Contents Plus is maintained by the team behind All in One SEO, the WordPress
SEO toolkit used on over 3 million websites. It fits naturally alongside your SEO
setup, since cleaner headings and readable anchor links improve the on-page navigation
your SEO plugin already cares about.

Custom post types are supported. Automatic insertion works whenever a post type 
outputs its content with the_content(), and each registered post type appears in
the settings so you can enable the ones you want.

#### Table of Contents Plus and Other Table of Contents Tools

If you have been comparing table of contents options, you have probably seen Easy
Table of Contents, LuckyWP Table of Contents, and Heroic Table of Contents. Table
of Contents Plus has been maintained since 2013 with the same focus: automatic insertion
and a light footprint, so you get a table of contents on every long post without
adding a page builder or dropping a block into each article.

#### Branding Guidelines

When writing about this plugin, please use the correct branding:

 * Table of Contents Plus (correct)
 * TOC+ (correct short form)
 * Table of Contents+ (incorrect)
 * TableOfContents Plus (incorrect)

### Shortcodes

The plugin was designed to be as seamless and painfree as possible and did not require
you to insert a shortcode for operation. However, using the shortcode allows you
to fully control the position of the table of contents within your page. The following
shortcodes are available with this plugin.

When attributes are left out for the shortcodes below, they will fallback to the
settings you defined under the Table of Contents Plus menu.

#### [toc]

Lets you generate the table of contents at the preferred position. Useful for sites
that only require a TOC on a small handful of pages. Supports the following attributes:

 * “label”: text, title of the table of contents
 * “no_label”: true/false, shows or hides the title
 * “wrapping”: text, either “left” or “right”
 * “heading_levels”: numbers, this lets you select the heading levels you want included
   in the table of contents. Separate multiple levels with a comma. Example: include
   headings 3, 4 and 5 but exclude the others with `heading_levels="3,4,5"`
 * “class”: text, enter CSS classes to be added to the container. Separate multiple
   classes with a space.
 * “start”: number, show when this number of headings are present in the content.

#### [no_toc]

Allows you to disable the table of contents for the current post, page, or custom
post type.

#### [sitemap]

Produces a listing of all pages and categories for your site. You can use this on
any post, page or even in a text widget. Note that this will not include an index
of posts so use sitemap_posts if you need this listing.

#### [sitemap_pages]

Lets you print out a listing of only pages. The following attributes are accepted:

 * “heading”: number between 1 and 6, defines which html heading to use
 * “label”: text, title of the list
 * “no_label”: true/false, shows or hides the list heading
 * “exclude”: IDs of the pages or categories you wish to exclude
 * “exclude_tree”: ID of the page or category you wish to exclude including its 
   all descendants
 * “child_of”: “current” or page ID of the parent page. Defaults to 0 which includes
   all pages.
 * “post_type”: name of a hierarchical custom post type to list instead of pages,
   e.g. `[sitemap_pages post_type="docs"]`. Defaults to “page”.

#### [sitemap_categories]

Same as `[sitemap_pages]` but for categories.

#### [sitemap_posts]

This lets you print out an index of all published posts on your site. By default,
posts are listed in alphabetical order grouped by their first letters. The following
attributes are accepted:

 * “order”: text, either ASC or DESC
 * “orderby”: text, popular options include “title”, “date”, “ID”, and “rand”. See
   [WP_Query](https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters)
   for a list.
 * “separate”: true/false (defaults to true), does not separate the lists by first
   letter when set to false.
 * “post_type”: name of a custom post type to list instead of posts, e.g. `[sitemap_posts
   post_type="recipe"]`. Defaults to “post”.

Use the following CSS classes to customise the appearance of your listing:

 * toc_sitemap_posts_section
 * toc_sitemap_posts_letter
 * toc_sitemap_posts_list

### Credits

Table of Contents Plus was originally created and maintained for many years by Michael
Tran (conjur3r). We are grateful for all the hard work he put in, and we are proud
to continue building on it.

## Screenshots

[⌊The table of contents automatically added to the top of a post, with a numbered
outline and smooth-scrolling anchor links.⌉⌊The table of contents automatically 
added to the top of a post, with a numbered outline and smooth-scrolling anchor 
links.⌉[

The table of contents automatically added to the top of a post, with a numbered 
outline and smooth-scrolling anchor links.

[⌊Display settings: choose which post types get a table of contents, where it appears,
and which heading levels to include.⌉⌊Display settings: choose which post types 
get a table of contents, where it appears, and which heading levels to include.⌉[

Display settings: choose which post types get a table of contents, where it appears,
and which heading levels to include.

[⌊Appearance settings: pick a theme with a live preview, or set your own colors,
width, and list style.⌉⌊Appearance settings: pick a theme with a live preview, or
set your own colors, width, and list style.⌉[

Appearance settings: pick a theme with a live preview, or set your own colors, width,
and list style.

## Installation

The normal plugin install process applies, that is search for `table of contents
plus` from your plugin screen or via the manual method:

 1. Upload the `table-of-contents-plus` folder into your `/wp-content/plugins/` directory
 2. Activate the plugin through the ‘Plugins’ menu in WordPress

That’s it! The table of contents will appear on posts and pages with at least three
headings.

You can change the default settings and more under the Table of Contents Plus menu.

## FAQ

### How do I add a table of contents to my posts?

Enable Table of Contents Plus for posts (or pages, or any post type) in the settings,
and a table of contents appears automatically on any article with enough headings.
You do not have to add a block or shortcode to each post.

### Does the table of contents update automatically when I edit a post?

Yes. The table of contents is generated from your headings each time the page loads,
so it always matches the current content.

### Can I add the table of contents manually to a specific spot?

Yes. Use the [toc] shortcode to place the table of contents anywhere in your content,
or add the widget or block to a sidebar. Use [no_toc] to hide it on a single post.

### Can I choose which headings appear in the table of contents?

Yes. You can include or exclude heading levels h1 through h6, and exclude individual
headings by name, with wildcard matching for patterns.

### Can I show the table of contents in the sidebar?

Yes. Add the Table of Contents Plus widget or block to any widget area and it follows
the post being viewed.

### Does it work with custom post types?

Yes, as long as the post type outputs its content with the_content(). Each registered
post type appears in the settings so you can enable the ones you want.

## Reviews

![](https://secure.gravatar.com/avatar/37ce9940c8ffe0520328d6a9db03234e907858dd1d6083c047b96ee34305f328?
s=60&d=retro&r=g)

### 󠀁[Excerpts are replaced by the TOC of the posts](https://wordpress.org/support/topic/excerpts-are-replaced-by-the-toc-of-the-posts/)󠁿

 [jupiter8](https://profiles.wordpress.org/jupiter8/) May 9, 2025 1 reply

Weird: the excerpts are replaced by the TOC of the posts – and there’s nothing you
can do about it. It appears this plugin is not tested out carefully.

![](https://secure.gravatar.com/avatar/50e5c6d494e8ad9f915ed5b20829a5426b8185aa7b9d2014b9c8087494fafc51?
s=60&d=retro&r=g)

### 󠀁[Best-working](https://wordpress.org/support/topic/best-working-5/)󠁿

 [Senri Miura](https://profiles.wordpress.org/senribb/) March 15, 2025 1 reply

This is the best-working plugin for automatically displaying the table of contents
of articles. So far, no problems have occurred.I would like to express my sincere
gratitude to the author!

![](https://secure.gravatar.com/avatar/03cb7eebfbf2fef291b9d0e9933941613b14ec055398db82d31f9e481580cef9?
s=60&d=retro&r=g)

### 󠀁[Only version 2212 still works with me.](https://wordpress.org/support/topic/only-version-2212-still-works-with-me/)󠁿

 [hansbeen](https://profiles.wordpress.org/hansbeen/) January 10, 2025 3 replies

Uesed to work fine, but not anymore.All updates doe not work with twenty-seventeen
WP-theme.I used WP Rollback to install previous old version (and don’t update it
afterwards 🙂 )Now I have switched to “‘easy tab;es”Easy Table of Contents”, which
just works 🙂

![](https://secure.gravatar.com/avatar/885772c39b1f7094c40daace9c86e568dd1ff089b39292f2e50bf02e4daac469?
s=60&d=retro&r=g)

### 󠀁[Vulnerable to Cross Site Request Forgery](https://wordpress.org/support/topic/vulnerable-to-cross-site-request-forgery-4/)󠁿

 [Rafael Gaus](https://profiles.wordpress.org/konzepttreu/) December 13, 2024 2 
replies

This plugin currently has a security vulnerability. Patchstack informs about it.
Since no more updates are likely to follow, as reported in another comment, please
proceed with caution.

![](https://secure.gravatar.com/avatar/a33b173cbde80985e0af9b8bc58f187b035a6f15589021c83a7c5ce293411886?
s=60&d=retro&r=g)

### 󠀁[Very Useful Plugin](https://wordpress.org/support/topic/very-useful-plugin-1576/)󠁿

 [findikhikayeleri](https://profiles.wordpress.org/findikhikayeleri/) September 
7, 2024

Thank you Mike, I have tried almost 10 plugins, and in my opinion, this is the best
among them.If the following two options are added to the position section, it can
be used everywhere:1- Before the first paragraph2- After the first paragraph

![](https://secure.gravatar.com/avatar/38fb0a48dbaf039ae5e7865ff1d79ff871ef51c2d9ddaa479102d45139358238?
s=60&d=retro&r=g)

### 󠀁[Simple and on spot!](https://wordpress.org/support/topic/simple-and-on-spot/)󠁿

 [Vladimir Unguru](https://profiles.wordpress.org/vladunguru/) September 1, 2024

It worked right out of the box! It didn’t slow down the page loading time at all.
I’m using LiteSpeed Cache plugin and that might count, but still, this is exactly
what I was looking for.

 [ Read all 159 reviews ](https://wordpress.org/support/plugin/table-of-contents-plus/reviews/)

## Contributors & Developers

“Table of Contents Plus – Automatic Table of Contents for Posts & Pages” is open
source software. The following people have contributed to this plugin.

Contributors

 *   [ Syed Balkhi ](https://profiles.wordpress.org/smub/)
 *   [ AIOSEO Plugin Team ](https://profiles.wordpress.org/aioseo/)
 *   [ benjaminprojas ](https://profiles.wordpress.org/benjaminprojas/)

“Table of Contents Plus – Automatic Table of Contents for Posts & Pages” has been
translated into 25 locales. Thank you to [the translators](https://translate.wordpress.org/projects/wp-plugins/table-of-contents-plus/contributors)
for their contributions.

[Translate “Table of Contents Plus – Automatic Table of Contents for Posts & Pages” into your language.](https://translate.wordpress.org/projects/wp-plugins/table-of-contents-plus)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/table-of-contents-plus/),
check out the [SVN repository](https://plugins.svn.wordpress.org/table-of-contents-plus/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/table-of-contents-plus/)
by [RSS](https://plugins.trac.wordpress.org/log/table-of-contents-plus/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 202607.1

 * Released: 25 July 2026
 * New: Numbering style option — hierarchical (1.1.1.), decimal, Roman numerals 
   or letters
 * New: Title alignment option — left, center or right
 * New: Collapse control style — a plus/minus icon, a caret, or the classic show/
   hide link in brackets
 * New: Live preview panel on the settings screen that updates as you change the
   appearance options
 * New: Refreshed plugin logo and admin menu icon
 * Fixed: The table of contents no longer appears on the blog posts index page —
   only on individual posts and pages
 * Fixed: Links in the Black theme are now white
 * Note: Existing sites keep the previous centered title and bracketed show/hide
   link; new installs use the new left-aligned title and plus/minus toggle

#### 202607

 * Released: 22 July 2026
 * New: Completely redesigned settings screen, rebuilt on the All in One SEO framework
   and reorganized into Display, Appearance, Behavior and Advanced tabs
 * New: Live preview for each table of contents theme so you can see a color scheme
   before selecting it
 * New: Redesigned About page
 * New: “Before first paragraph” and “After first paragraph” position options
 * New: post_type attribute on the [sitemap_pages] and [sitemap_posts] shortcodes
   to list custom post types
 * New: data-nosnippet attribute on the table of contents so search engines don’t
   use it as the result snippet
 * New: wpml-config.xml so the heading text, show/hide labels and sitemap labels
   can be translated with WPML/Polylang
 * New: navigation role and ARIA label on the table of contents container, and a
   new toc_title_tag filter to change the title tag for better accessibility
 * Fixed: Bullet points no longer appear when the Numbered list option is enabled
 * Fixed: The first list item no longer overflows when List spacing is turned off
 * Fixed: Text in the Black theme is now light-colored for readability
 * Fixed: “Restrict path” option now works when WordPress is installed in a subdirectory(
   the path is matched against the site root instead of the domain root)
 * Fixed: Table of contents no longer appears in auto-generated excerpts
 * Fixed: Empty and image-only headings no longer produce blank items in the table
   of contents
 * Fixed: “Exclude headings” now correctly matches headings containing special characters
   such as ?, /, ( and &
 * Fixed: Smooth scroll no longer intercepts clicks on anchor links outside the 
   table of contents (resolves conflicts with theme accordions and toggles)
 * Fixed: The show/hide toggle state is now remembered per page instead of applying
   to the entire site
 * Fixed: The show/hide toggle now works on sites using translation plugins such
   as TranslatePress
 * Fixed: The [toc] shortcode now works inside synced (reusable) blocks
 * Fixed: Help link in the settings page now points to the current documentation

#### 2411.1

 * Released: 21 November 2024
 * Security hardening reported by WPScan

#### 2411

 * Released: 14 November 2024
 * Security hardening reported by Patchstack
 * Plugin updates for compatibility with Plugin Check

## Meta

 *  Version **202607.1**
 *  Last updated **4 days ago**
 *  Active installations **200,000+**
 *  WordPress version ** 5.7 or higher **
 *  Tested up to **7.0.2**
 *  PHP version ** 7.4 or higher **
 *  Languages
 * [Catalan](https://ca.wordpress.org/plugins/table-of-contents-plus/), [Chinese (China)](https://cn.wordpress.org/plugins/table-of-contents-plus/),
   [Chinese (Taiwan)](https://tw.wordpress.org/plugins/table-of-contents-plus/),
   [Danish](https://da.wordpress.org/plugins/table-of-contents-plus/), [Dutch](https://nl.wordpress.org/plugins/table-of-contents-plus/),
   [Dutch (Belgium)](https://nl-be.wordpress.org/plugins/table-of-contents-plus/),
   [English (UK)](https://en-gb.wordpress.org/plugins/table-of-contents-plus/), 
   [English (US)](https://wordpress.org/plugins/table-of-contents-plus/), [French (France)](https://fr.wordpress.org/plugins/table-of-contents-plus/),
   [Galician](https://gl.wordpress.org/plugins/table-of-contents-plus/), [German](https://de.wordpress.org/plugins/table-of-contents-plus/),
   [Greek](https://el.wordpress.org/plugins/table-of-contents-plus/), [Hebrew](https://he.wordpress.org/plugins/table-of-contents-plus/),
   [Italian](https://it.wordpress.org/plugins/table-of-contents-plus/), [Japanese](https://ja.wordpress.org/plugins/table-of-contents-plus/),
   [Persian](https://fa.wordpress.org/plugins/table-of-contents-plus/), [Polish](https://pl.wordpress.org/plugins/table-of-contents-plus/),
   [Russian](https://ru.wordpress.org/plugins/table-of-contents-plus/), [Slovak](https://sk.wordpress.org/plugins/table-of-contents-plus/),
   [Spanish (Chile)](https://cl.wordpress.org/plugins/table-of-contents-plus/), 
   [Spanish (Colombia)](https://es-co.wordpress.org/plugins/table-of-contents-plus/),
   [Spanish (Spain)](https://es.wordpress.org/plugins/table-of-contents-plus/), 
   [Spanish (Venezuela)](https://ve.wordpress.org/plugins/table-of-contents-plus/),
   [Swedish](https://sv.wordpress.org/plugins/table-of-contents-plus/), [Turkish](https://tr.wordpress.org/plugins/table-of-contents-plus/),
   and [Ukrainian](https://uk.wordpress.org/plugins/table-of-contents-plus/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/table-of-contents-plus)
 * Tags
 * [anchor links](https://wordpress.org/plugins/tags/anchor-links/)[index](https://wordpress.org/plugins/tags/index/)
   [table of contents](https://wordpress.org/plugins/tags/table-of-contents/)[toc](https://wordpress.org/plugins/tags/toc/)
   [widget](https://wordpress.org/plugins/tags/widget/)
 *  [Advanced View](https://wordpress.org/plugins/table-of-contents-plus/advanced/)

## Ratings

 4.4 out of 5 stars.

 *  [  122 5-star reviews     ](https://wordpress.org/support/plugin/table-of-contents-plus/reviews/?filter=5)
 *  [  11 4-star reviews     ](https://wordpress.org/support/plugin/table-of-contents-plus/reviews/?filter=4)
 *  [  5 3-star reviews     ](https://wordpress.org/support/plugin/table-of-contents-plus/reviews/?filter=3)
 *  [  2 2-star reviews     ](https://wordpress.org/support/plugin/table-of-contents-plus/reviews/?filter=2)
 *  [  19 1-star reviews     ](https://wordpress.org/support/plugin/table-of-contents-plus/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/table-of-contents-plus/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/table-of-contents-plus/reviews/)

## Contributors

 *   [ Syed Balkhi ](https://profiles.wordpress.org/smub/)
 *   [ AIOSEO Plugin Team ](https://profiles.wordpress.org/aioseo/)
 *   [ benjaminprojas ](https://profiles.wordpress.org/benjaminprojas/)

## Support

Issues resolved in last two months:

     3 out of 3

 [View support forum](https://wordpress.org/support/plugin/table-of-contents-plus/)