A tiny and simple to help with navigation in long texts by forming an automatic Wikipedia-like table of contents.

It works by scanning the text for headings (<h1>-<h6> HTML tags). If more than a certain amount of headings (3 by default) are found – a table of contents with bookmarks is formed and inserted to the post content. Location (above or below) the text can be chosen in settings page.

TOC is formed as HTML5 <nav> element with nested ordered list inside. No specific styling is provided, so that it fits organicaly into the text. If you need specific styling, include it to your theme’s CSS.

You can also use a shortcode – [toc], template tags – get_toc()/the_toc() and a widget – tinyTOC Widget.

The plugin is translation ready and has Lithuanian translation.

Also try out my other plugins:

  • Gust – a Ghost-like admin panel for WordPress, featuring Markdown based split-view editor.
  • tinyCoffee – a PayPal donations button with a twist. Ask people to treat you to a coffee/beer/etc.
  • tinySocial – a plugin to display social sharing links to Facebook/Twitter/etc. via shortcodes
  • tinyRelated – a plugin to manually assign and display related posts.
  • tinyIPPremium – stop WordPress users from sharing login information, force users to be logged in only from one device at a time.

An enormous amount of coffee was consumed while developing these plugins, so if you like what you get, please consider treating me to a cup. Or two. Or ten.

Cover image credit: Jeremy Keith


  • A TOC widget (left) and a TOC above the page content (center) in action in TwentyFourteen theme.
  • Settings screen.


I don’t see tinyTOC Widget in the available widget list.

You need to activate the widget via plugin Settings page (WP Admin > Settings > tinyTOC)


Read all 3 reviews



  • a tinytoc_widget_content filter (by Maciej Gryniuk / odie2 )
  • better non-latin character support (by Maciej Gryniuk / odie2 )
  • prevent duplicate slugs (by Maciej Gryniuk / odie2 )
  • better PHP < 5.3.6 support (suggested by Maciej Gryniuk / odie2 )
  • a link to plugin settings from Plugins list (suggested by Maciej Gryniuk / odie2 )
  • updated widget code to remove PHP4 style constructors


  • an option to generate slug-based links


  • a big code rewrite (options page, main class, etc.)
  • renamed main plugin file to fit WordPress tradition better. Plugin will be deactivated after upgrade and you’ll need to reactivate it.


  • fixed some typos


  • fixed UTF-8 issue


  • shortcode and template tags added
  • parser rewriten (regex -> DOMDocument)


  • Widget added (thanks to Darcy W. Christ)
  • Small bug fixes


  • Initial release

Contributors & Developers

This is open source software. The following people have contributed to this plugin.


Browse the code