SimpleTOC – Table of Contents Block


In Gutenberg, add a block and search for “SimpleTOC” or just “TOC”. You need to save your post before you add the block. It works by parsing the post content and retrieving the heading blocks and creates a new dynamic block with a list of links to the headings.

Hide the headline “Table of Contents” and set a maximum display depth in the blocks’ sidebar configuration. Add the CSS class “simpletoc-hidden” to a heading block to remove that specific heading from the generated TOC.


  • No javascript or css added.
  • Designed for Gutenberg.
  • Compatible with AMP plugins.
  • Minimal and valid HTML output.
  • Inherits the style of your theme.
  • Support for column block layouts.
  • Control the maximum depth of the headings.
  • Choose between an ordered and unordered html list.
  • SEO friendly: Disable the h2 heading of the TOC block and add your own.
  • Comes with English, French, Spanish, German, and Brazilian Portuguese translations.
  • Works with non-latin texts. Tested with Japanese and Arabic.
  • Finds headlines in groups and reusable blocks. And in groups within reusable blocks.
  • Rank Math support.


This plugin is forked from by pdewouters and uses code from by shazahm1

Many thanks to Tom J Nowell and and Sally CJ who both helped me a lot with my questions over at


  • SimpleTOC block in Gutenberg editor.
  • SimpleTOC in the post.
  • Simple but powerful. Customize each TOC as you like.
  • Control the maximum depth of the headings.



  • SimpleTOC - Table of Contents Block


SimpleTOC can be found and installed via the Plugin menu within WordPress administration (Plugins -> Add New). Alternatively, it can be downloaded from and installed manually…

In Gutenberg, add a block and search for “SimpleTOC” or just “TOC”. Please save your content before you use the block.


Why did you do this?

Because I needed a simple plugin to do this job and decided to do it on his own. I believe that a Table of Contents does not need Javascript and additional css. Furthermore the plugin should work out-of-the-box without any configuration.

How do I change the TOC heading ‘Table of contents’ to some other words?

Hide the headline in the sidebar options of SimpleTOC and add your own heading.

How do I add SimpleTOC to all articles automatically?

I don’t see an easy solution at the moment. SimpleTOC is only a block that can be placed in your post. If there would be a plugin that adds blocks to every post then this would be the solution. I think this should be another separate plug-in to keep the code of SimpleTOC clean and … well, simple. Maybe someone knows of a plug-in that adds blocks automatically to all posts with some parameters and settings? What about site editing in WordPress? I think the core team is working on something like that. I will keep this post open. If I have gained more knowledge how to solve this I will add this feature.

How do I add a background color to SimpleTOC?

SimpleTOC is simple. It will never load JavaScript or CSS. But you can add custom CSS yourself to your theme:

.simpletoc {
    padding: 1em 2em;
    background: #bada55;

If you want to add a color including the headline, add a custom css class to the SimpleTOC block. Name it “toctoc” or something like that.

.toctoc {
    padding: 1em 1em;
    background: #bada55;

If you use that CSS it will add a colored background to the whole TOC including the heading.

How do I add smooth scrolling?

You can optionally add the css class “smooth-scroll” to each link the TOC. Then you can install plugin that uses these classes.


Adding the SimpleTOC block to my pages is super easy, it works without any fuss, and it hasn't had any performance impacts as far as I can tell. I did find one bug, but the developer was able to fix it and publish a new version within a day or two, and they were very polite about it.
Simple, effective, and very well supported. Other toc plugins seem bloated with features and code that really complicates something that should simply fit right into your theme styles without adjustment. This plug-in is perfect for a cohesive fit into your site as it inherits your theme styles. It’s also compatible with the rank math SEO plug-in. Supports reusable blocks too! Finds the headers buried in groups and saved as reusable blocks. Excellent feature! The best feature though is the outstanding support from Marc the developer. He responds and communicates well to all requests. That means a lot when you stumble upon a needed feature or request an improvement appropriate to the simplicity designed into this plug-in. Five stars should be ten for this plug-in! Kudos Marc for all you do!
A simple and effective plugin that just works. You can't go wrong. Plus the author provides exceptional support.


SimpleTOC – Table of Contents Block はオープンソースソフトウェアです。以下の人々がこのプラグインに貢献しています。


“SimpleTOC – Table of Contents Block” は8ロケールに翻訳されています。 翻訳者のみなさん、翻訳へのご協力ありがとうございます。

“SimpleTOC – Table of Contents Block” をあなたの言語に翻訳しましょう。

開発に興味がありますか ?

コードを閲覧するか、SVN リポジトリをチェックするか、開発ログRSS で購読してみてください。



  • Fixed: setting the maximum level resulted in unvalid markup if last item was at least a level 3 heading.


  • Feature: Add the css class “smooth-scroll” to the links. This enables smooth scrolling in themes like GeneratePress.

  • Refactoring: Better TOC generation with less HTML validation errors.


  • Feature: Support for headlines in reusable blocks.


  • Feature: Added option to toggle absolute urls.


  • Fix: Heading ids won’t be added to all posts anymore.
  • Fix: Headings with attributes like align-center will now appear in your TOC.
  • Feature: Added option to replace ul tag with ol tag. This will add decimal numbers to each heading in the TOC.
  • Feature: Works in nested blockes. This means support for column block layouts.


  • Feature: Support for non-latin headlines. SimpleTOC now uses a character block list rather than an allow list.
  • Feature: Add the CSS class “simpletoc-hidden” to the heading block to remove it from the Table of Contents.


  • Feature: Experimental support for Arabic Text.


  • Feature: Added option to set maximum level of the headings.


  • Added Brazilian Portuguese translations to the translations. Thanks Ralden Souza!


  • Added support for Rank Math plugin.