Markdown Table of Contents Generator
Developer Tools
Generate a linked table of contents from Markdown headings. Choose max depth and list style, then copy and paste into your document.
- [Getting Started](#getting-started)
- [Installation](#installation)
- [Prerequisites](#prerequisites)
- [Setup](#setup)
- [Usage](#usage)
- [Basic Example](#basic-example)
- [Advanced Options](#advanced-options)
- [API Reference](#api-reference)
- [Contributing](#contributing)How to use this tool
- Paste your Markdown content.
- Choose max depth and list style.
- Copy the generated table of contents.
Markdown heading anchors
Most Markdown renderers (GitHub, GitLab, VS Code preview) automatically create heading anchors by converting the heading text to a URL-safe slug. The rules:
- Convert to lowercase
- Replace spaces with hyphens
- Remove all non-alphanumeric characters except hyphens
TOC link format
## My Section Title
[My Section Title](#my-section-title) When to use a TOC
A table of contents adds value for documents with 4+ headings and multiple sections. For short documents, a TOC adds noise without benefit. GitHub automatically shows a TOC button for markdown files with multiple headings.
GitHub vs GitLab anchor differences
The two most popular platforms handle special characters in heading slugs differently:
- GitHub: strips all characters except hyphens and alphanumerics. A heading
## foo(bar)becomes#foobar(parentheses removed). - GitLab: also strips most punctuation, but handles a few edge cases
differently - notably, dots in headings like
## v1.2become#v12on GitHub but may be handled differently on older GitLab versions.
If you are writing documentation that must work on both platforms, avoid parentheses, dots, and special characters in headings - stick to letters, numbers, spaces, and hyphens.
Where to insert the TOC
The conventional placement is after the document title (# Title) and any introductory paragraph, but before
the first section heading (## Section). This mirrors the structure of academic papers and long-form documentation. Example:
# My Document Title
A brief introduction to the document.
## Table of Contents
- [Section One](#section-one)
- [Section Two](#section-two)
## Section One
... Deeply nested headings
Including all heading levels (H1–H6) in a TOC often produces a long, hard-to-scan list. Most documentation guides recommend limiting the TOC to 2–3 levels of nesting (H1/H2/H3). H4–H6 are typically internal subsections that do not need top-level navigation links. If the tool generates deeper nesting than you want, delete or comment out the deeper entries after generating.
Frequently asked questions
What heading levels does it support?
H1 through H6 (# through ######). You can limit depth with the Max Depth setting.
Related tools
- Markdown EditorUse Markdown Editor to free online Markdown editor with live preview, toolbar.
- Markdown PreviewUse Markdown Preview to live Markdown editor with instant HTML preview, including.
- Heading AnalyzerUse Heading Analyzer to paste any HTML to extract and visualize the.
- HTML -> MarkdownUse HTML -> Markdown to convert HTML to Markdown instantly in your browser..