Heading Level Normalizer

Normalize inconsistent heading levels in LLM-generated markdown.

Ad placeholder (leaderboard)

LLMs love headings but are sloppy about levels — an # H1 followed straight by a #### H4, inconsistent capitalization, stray trailing hashes. Those gaps break document outlines, hurt accessibility, and look amateurish. This tool rewrites the heading hierarchy so it never skips a level, and optionally tidies capitalization, all in your browser.

How it works

The tool finds every ATX heading (#, ##, …) and walks the document top to bottom. It tracks the current depth and never allows a heading to sit more than one level below its parent: a jump from H1 to H4 is pulled back up to H2, preserving the relative nesting without leaving gaps. It also normalizes the heading syntax — single space after the hashes, no trailing hashes — and can apply Title Case or Sentence case to the text. Non-heading lines pass through untouched.

Options

  • Demote leading H1 — useful when the markdown will live under a page that already provides the page H1.
  • Capitalization — keep as-is, Title Case, or Sentence case across all headings.

Tips

  • Run this as the last step before publishing so manual edits don’t reintroduce jumps.
  • Keep a single H1 per page for SEO and screen-reader navigation — enable demotion for embedded snippets.
  • The tool only touches heading lines, so code fences and body text are always preserved exactly.
Ad placeholder (rectangle)