Want to know how to add a table of contents without a plugin in WordPress? You don’t need extra software. An outline built with anchor links loads faster, keeps your site lightweight, and gives readers a clickable summary of your post. In about 15 minutes you can create a table of contents that improves user experience, helps with SEO, and looks clean on any theme.
- Add TOC in 15 minutes!
- Boost SEO with anchor links.
- No plugins = faster site!

Why a Table of Contents Matters for WordPress Rankings
A table of contents is a linked outline at the top of a post that lets visitors jump to specific sections. Google sometimes pulls these anchor links into search results as “jump to” options, giving your page extra real estate on the results page. That visibility alone can boost click-through rates by 5% to 15%.
These navigation links also reduce bounce rate. Readers who land on a long post and immediately see an outline are more likely to scroll, click, and stay. Longer time on page signals relevance to search engines, which can push your rankings higher over time.
Why skip plugins for this? Every plugin you install loads JavaScript and stylesheet files that slow page speed. A manual approach uses zero extra code beyond what you type. Fewer plugins also means fewer security vulnerabilities and fewer update conflicts. If you only need this on a handful of posts, building it by hand is the smartest choice.
How to Create a Table of Contents in WordPress Without a Plugin
The process uses anchor links, which are HTML bookmarks that point to specific spots on the same page. Here’s the full walkthrough, from outline to finished product.
Step 1: Finalize Your Section Titles First
Before touching any code, lock down every major and minor title in your post. Each one becomes a row in your linked outline. Rearranging them after you build the navigation means redoing anchor links, so finalize your structure first.
Open a text editor and list every section title in order. Beside each one, write a short, lowercase slug with no spaces. For a title like “Format as Needed,” a good slug is format-as-needed. Keep slugs logical and consistent.
Step 2: Place Anchor IDs on Each Section Title
In the WordPress block editor (Gutenberg), click the block for the title you want to link. In the right sidebar under “Advanced,” find the “HTML Anchor” field. Paste in the slug you chose. For example, type format-as-needed into that field. Repeat for every title you want in the navigation.
You don’t need the # symbol here. WordPress handles that automatically when the anchor resolves.
Step 3: Build the Linked List Block
Scroll to the top of your post, right below your introduction. Create a new block and choose the “List” option. Type each section title as a list item. Then highlight the first item and click the link icon (or press Ctrl+K). In the URL field, type #your-anchor-slug, including the hash symbol this time. Press Enter to save.
Do this for every item. When you’re done, you’ll have an ordered or unordered list where each entry jumps to the matching section. Save your draft and preview the page in a new tab to confirm each link scrolls correctly.
Step 4: Style with Custom Styles (Optional)
The default list works fine, but a small amount of styling can make it stand out. In your WordPress dashboard, go to Appearance, then Customize, then the custom stylesheet area. Apply rules like these:
- Set a border or background color on the list container
- Increase padding so the links don’t feel cramped
- Set a max-width so the outline doesn’t stretch across the full page
Wrap your list block in a “Group” block first, give the group a class name in the Advanced panel, and target that class in your stylesheet. This gives you full control without using any plugin.
Using the Gutenberg Table Block for Your Linked Outline
Some WordPress users prefer a table layout over a simple list. Gutenberg includes a built-in table block that works for this purpose.
- Click the (+) icon to create a new block and search for “Table.”
- Set the column count to 1 and the row count to the number of section titles plus 1 (the extra row holds a label like “Table of Contents”).
- Enter each section title in its own row.
- Highlight the text in each cell and create a link to
#your-anchor. - Adjust alignment, header row toggle, and background color in the block settings panel.
Tables give you a more structured, visual look. The tradeoff is slightly more effort to maintain if you reorganize sections later. For most bloggers, the list block method is faster and easier to update.
Building a Linked Outline in Elementor Without Plugins
Elementor, the popular WordPress page builder, includes a built-in Table of Contents widget. It automatically scans your tags and generates anchor links for each one. No extra plugin required beyond Elementor itself.
Navigate to the post or page in Elementor’s editor. Drag the widget into position. In the Content tab, choose which heading levels to include. The widget handles nesting, numbering, and linking automatically. You can also exclude specific titles using a selector in the Exclude tab, which is useful for skipping items inside sidebars or footers.
Under Additional Options, toggle Hierarchical View to show nested items under their parent sections. The Minimize Box option lets readers collapse the outline after they’ve used it, saving screen space on mobile devices.
Common Mistakes When Building a Manual Table of Contents
After building dozens of these, one mistake I see repeatedly is mismatched anchor slugs. If your anchor says seo-tips but the field value says seo-tip, the link breaks silently. Always copy and paste slugs instead of retyping them.
Another frequent issue: forgetting to update the linked outline when you reorganize sections. Keep a simple checklist of anchors alongside your draft. Cross-check it before publishing.
Finally, don’t overload the navigation. Listing every major and minor title on a 5,000-word post creates a wall of links that nobody reads. Stick to major sections for shorter posts and include subtopics only when they genuinely help navigation. Think about what a reader scanning for one specific answer actually needs to see.
Best Practices for Search Engine Optimization with Your Outline
Search engine optimization benefits most when your heading levels follow a clear hierarchy. Use exactly one top-level title (the post title), then major sections for each topic, and subtopics beneath those. Search engines like Google parse this structure to understand what each section covers, and a well-organized hierarchy increases your chances of appearing in featured snippets.
Make your titles descriptive and keyword-relevant. “Step 2: Place Anchor IDs on Each Section Title” tells both readers and crawlers exactly what the section delivers. Generic labels like “Next Steps” waste that signal.
If you want to optimize images for better rankings alongside your outline, make sure each image in the post has descriptive alt text. Combined with a strong table of contents, well-tagged images help your WordPress website rank for both text and image queries.
Manual Approach vs. Plugin: Quick Comparison
| Factor | Manual (No Plugin) | Plugins |
|---|---|---|
| Page speed impact | None (pure HTML) | Loads extra JS and stylesheets |
| Setup time per post | 10 to 15 minutes | Under 1 minute |
| Customization | Full control via stylesheets | Limited to plugin options |
| Maintenance | Manual updates needed | Automatic detection |
| Best for | Small sites, few posts | Large blogs with many posts |
For bloggers publishing fewer than 20 posts per month, the manual approach keeps your WordPress website lean. If you publish daily or manage dozens of categories, a lightweight plugin like Easy Table of Contents may save hours. The key is matching the method to your publishing volume.
Frequently Asked Questions About Adding a Table of Contents Without a Plugin
How do I create a table of contents in WordPress without a plugin?
You create a table of contents by placing anchor IDs on each section title in the WordPress block editor, then building a list block at the top of the post with links pointing to those anchors using the #anchor-id format. No plugin or JavaScript is needed.
Does a table of contents help with SEO?
A table of contents improves rankings by giving Google crawlable anchor links that can appear as “jump to” options in search results. It also lowers bounce rate and increases time on page, both of which are positive engagement signals.
Can I use this method on existing WordPress posts?
Yes. Open the post in the Gutenberg editor, place an anchor on each title you want to include, then insert a list block with linked items at the top. The process works the same on new and existing posts.
What heading levels should I include?
Include all major sections at minimum. Consider subtopics only when they help the reader navigate long or complex sections. Avoid listing deeper levels, which clutter the navigation without improving usability.
Is there a way to style a manual table of contents?
Yes. Wrap the list in a Group block, assign a class name in the Advanced panel, then target that class in your theme’s stylesheet area under Appearance in the WordPress dashboard. You can set borders, background colors, padding, and custom fonts without using a plugin.
The fastest way to add a table of contents without a plugin is to finalize your section titles, paste anchor slugs into each title’s Advanced panel, and build a linked list block at the top of the post. Start with your next long-form article and test the navigation in preview mode before publishing. If you want to learn WordPress quickly, building manual outlines is one of the best hands-on exercises because it teaches you HTML anchors, block editor skills, and basic styling all at once. For more WordPress tutorials, check out our guide on making an image a link.
