Free Table of Contents Plugins for WordPress – Reviewed and Tested

I recently needed to add a table of contents to a blog post. As usual I looked for the most popular plugin to try first and installed it.

The problem was that, on the theme I was using, it looked rubbish right off the bat. And it made the post, with it’s photo at the top look pretty ridiculous. So I followed the instructions to make the TOC appear in the sidebar, but that that didn’t seem to work at all.

The issue with choosing a table of contents plugin is that unless you see screenshots of how they look it’s difficult to pick one which looks OK out of the box.  Of course many of them can be customized by writing css code to make it fit with your theme. Sometimes it’s just easier to pick one which looks OK and not have to go to that effort.

Here is my review of the top 6 TOC WordPress plugins.  These are the only free ones I found which have more that 100 reported installs in the WordPress plugin directory.

Positioning of TOC Tables within the text for maximum aesthetic effect

I wanted to be able to position the TOC wherever in the text I wanted.  after the first paragraph is my preferred location so there is a paragraph of introductory text – perhaps with an image, the TOC and then the body of the article follows.

All the plug-ins where you have to explicitly use a shortcode to position the TOC allow it to be placed anywhere in the text.  However, any plugin (like TOC+) which auto-generates the tables on every page, you have to specify a set position to display the TOC.  However, on a large site this is a major time saver.

Some plugins allow you to put the table of contents in the sidebar. This in my testing was of limited success, with issues ranging from lack of word-wrapping to the table simply not appearing.

The Contenders

Table Of Contents Plus

TOC+ is the most widely installed TOC plugin with over 100,000 installs.  It has many customizable options

Table of contents plus can be set to put a TOC on every page of the website automatically (remove by shortcode) or to only insert one where you want it by use of a shortcode.  You can also set it to create a TOC automatically on every page except for the pages/posts specified by a no-toc shortcode.

As with most of the plugins, I set my own title for the table of contents

For the auto insert it has a number of different positions,  before first heading, after first heading, top and bottom.  It automatically indents heading levels, but that can be switched off, as can the numbering.

The feature that I thought would be common to all was the shortcode which enabled me to add the TOC into the text where-ever I liked.  That worked well, and I was surprised to find that this was the only plugin I tested which had that feature – and it worked.

I like the option to smooth scroll to the destination. I also liked the option to “hide” or rather collapse the table of contents and to show it collapsed initially.  Good for when you really want your readers to read the whole article.

What I didn’t like was the aesthetic.  When the menu was closed the box looked clunky.  They could take a drawing lesson from easy TOC.

I thought the automatic generation of table of contents didn’t work until I realized that the option “post” was not checked on the auto-insert on the following content types selection.  the default was just pages.

The widget in the sidebar didn’t work for me when I was using a custom theme, but that was almost certainly an issue with the theme as it worked fine on WordPress 2016 theme – and unlike Easy TOC below, it wraps the text correctly to maintain readability.

Not my favorite in terms of looks, but in terms of functionality it’s the most complete. I can see why this is the most popularly installed TOC plugin.

CM Table Of Contents

This plugin automatically put the TOC at the top of the post.  It didn’t have a surrounding box, which I liked, the font size is customizable as is the heading for the TOC (as is TOC+) no option for numbering, but headings are indented according to their levels.

To make the plugin appear on the page, I had to scroll down to below the edit box and check the “Search for Table of Content Items on this post or page” box.

I thought that the table of contents should automatically update after that, however changing one of the headings from “what we thought of another plugin” to  “what we thought of Bainternet Simple TOC” resulted only in the “what we thought of” being output and the rest of the sentence was missing.  A black mark to CM Table of Contents, and at that point I stopped testing it.

Simple TOC from Bainternet

There is no configuration or settings page for Simple TOC which confused me at first.  I had to go to the plugin’s web page to get the instructions. It turns out to be an add-in for the TinyMCE editor, which luckily I install on all my sites automatically.  To activate the table of contents on any page, you simply put the cursor where you want the toc to appear, press the button (top right on the ribbon bar) and the instructions appear.  Select which heading level you would like to include in the table of contents and then as if by magic your table appears on the finished page.

However, the magic doesn’t always work. It appears to work OK when you specify only one level of heading to appear in your TOC list, but when I specified h2 and h3 then no TOC was generated.

This is a write your own CSS to style it option, but at least the instructions tell you how.

There are options to add in your own headings for the toc wherever you like in the text, and to customize the title of the actual Table of Contents. Unfortunately, using the 2016 theme, I couldn’t make these options work.

It’s a shame. If it worked properly, then it could be a really useful plugin for specific applications.  At the time of writing, this was also the most recently updated plugin.

Easy Table of Contents

As I was working my way through the different plugins, Easy Table OF Contents became my new favorite.  Primarily because I like the look of the collapsed table of contents which it’s little hamburger type icon in the right corner.  It’s just drawn better that TOC+. However, it does have a number of problems which I needed to overcome in order to make it work for me.

What I don’t like is the decimal numbering, which because I only use h2 and h3 in my TOC (one h1 per page and that’s the title), the numbering as shown below is very peculiar.

Showing the rather odd decimal number system

I removed the numbering and that looked much better.

The config page looked almost identical to TOC+, with pretty much the same options and phrasing – This is in fact a derivation of that plugin. However, the “toc” shortcode which TOC+ has so you can insert the Table of Contents anywhere on the page, is not present in this component. So it’s on every page and/or post or no-where depending on your configuration options.

This plugin does have the ability to put the TOC in the sidebar using a toc widget which is installed as part of the plugin.  Providing your headings are short, this works OK, but it doesn’t appear to word wrap, so longer headings disappear off the side of the page.

Easy Table Of Contents in the Sidebar
The text doesn’t word wrap, it disappears off the side of the screen.

Although I liked the way this looked and it’s customization options, it’s problems were too numerous to really recommend.

Table Of Content

This plugin by SedLex produces by default a rather different layout. Ideally suited to book style posts it’s lead text of Chapters and Sections is fully configurable. The table is inserted into the desired location in the page or post using a shortcode.  There is no generation on each post automatically.

Table of Content plugin from SedLex

It’s customised by CSS and the CSS is all in the configuration page for the plugin, so no hunting around or having to put it in your own .css file, however, if css isn’t your thing, then this plugin might be a challenge too far.

f(x) TOC

f(x) toc is a very simple plugin again operated by shortcode.  Like Simple TOC there is no configuration page and I had to look back to the wordpress site to find the instructions, however they are very simple and you simply add attributes to the shortcode to set the title of the table, the depth of nesting and whether you want bullets or numbers.

The only negative I found on the out of the box plugin is that the bullets don’t line up with the left margin.However, apart from that for ease of use and looks it seemed OK.

If you don’t want auto-generation and simply want to insert a table where you want it, this might be the plug-in for you.


To be honest, I didn’t find any which meet my exacting standards and were fully bug free. I chose to use Easy Table Of Contents, but with serious reservations – TOC+ would have been a more logical choice, but Easy TOC looked slightly better out of the box.

However as everyone’s website is different, there may be one of these which will work for you better than the others.

There may well be a gem I haven’t found yet, if you know of one, please let me know in the comments below.