Skip to content

Repository files navigation

Table of Contentsgenerated with DocToc

DocToc

LicensePyPI version

DocToc is a command-line tool that automatically generates and updates a table of contents (TOC) for Markdown files. It scans your Markdown, identifies headers, and inserts a TOC with clickable links — skipping headers inside fenced code blocks.

Prerequisites

  • Python 3.8+
  • pip

Installation

pip install doctoc

Or from source:

git clone https://github.com/ktechhub/doctoc.git
cd doctoc
pip install .

Usage

doctoc [OPTIONS] MARKDOWN_FILES...

MARKDOWN_FILES accepts one or more file paths or glob patterns:

doctoc README.md
doctoc docs/README.md CHANGELOG.md
doctoc '**/*.md'

On the first run, DocToc inserts the TOC at the top of the file. On subsequent runs it updates the existing TOC in place.

Options

OptionShortDescription
--outfile PATH-oWrite output to a separate file instead of overwriting the input (single-file only).
--check-links-clValidate all hyperlinks found in the file.
--title TEXT-tCustom title line for the TOC block (default: bold "Table of Contents" with attribution).
--max-depth INT-dLimit TOC to headings up to this depth (e.g. 2 includes only H1 and H2).
--helpShow help and exit.

Examples

Basic — generate or update TOC:

doctoc README.md
# Success: wrote TOC to README.md

Custom output file:

doctoc README.md -o README_with_toc.md
# Success: wrote TOC to README_with_toc.md

Limit TOC depth to H1 and H2 only:

doctoc README.md --max-depth 2

Custom TOC title:

doctoc README.md --title "## Contents"

Check hyperlinks after generating TOC:

doctoc README.md --check-links
# Success: wrote TOC to README.md# Checking hyperlinks in README.md...# VALID: [DocToc](#doctoc)# VALID: [Installation](#installation)# VALID: [GitHub repository](https://github.com/ktechhub/doctoc)# INVALID: [Broken](#missing-section)

Process all Markdown files recursively:

doctoc '**/*.md'

Features

  • Generates and updates a TOC based on Markdown headers.
  • Skips headers inside fenced code blocks (``` and ~~~).
  • Supports multiple files and glob patterns in a single invocation.
  • --max-depth to limit which heading levels appear in the TOC.
  • --title to customise the TOC heading line.
  • Link checker validates both internal anchor links and external HTTP(S) URLs, with a timeout and clear error output.
  • Writes to an optional output file instead of overwriting the source.

GitHub

For more details, visit the GitHub repository.

License

This project is licensed under the MIT License — see the LICENSE file for details.

Contribution

If you want to contribute, kindly see contribution.

About

Markdown TOC Generator

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages