Summary — What Free Markdown Heading Shifter Does
What This Free Tool Is
Free Markdown Heading Shifter promotes or demotes every heading in a Markdown document by 1–5 levels. H1 → H2, H2 → H3, and so on — ideal for inlining one document inside another or pulling a subsection out and making it standalone. Code blocks are never touched.
Privacy: This tool runs entirely in your browser. Your text is never uploaded, logged, or cached. Close the tab and it's gone. Verify in DevTools → Network: zero requests fire.
Why It's Free (And How We Keep It Free)
Inlining a README into a bigger doc means every heading has to move down one level. Doing that by hand across 40 headings is boring. This runs in milliseconds and is free forever.
Table of Use
At-a-Glance Reference
| Input | Output | Typical size | Speed | Login needed |
|---|
| Markdown (.md, .markdown) | Markdown with shifted headings | Up to 5 MB | < 50 ms | No |
Markdown Heading Shifter Features
Here's what this free tool does in detail — every feature is built to solve real problems, runs entirely in your browser, and is free forever.
Promote or Demote, 1–5 Levels
Demote adds levels (H1 → H2, H2 → H3). Promote subtracts levels (H3 → H2, H2 → H1). Pick 1–5 levels to shift. Every ATX-style heading in the document is rewritten, and the tool never touches the content, just the # markers.
Pair with the Free Markdown Headings Extractor to audit your heading structure first, or the Free Markdown TOC Generator to regenerate a table of contents after shifting.
Overflow Behavior
Markdown only supports H1–H6. When a shift would go below H1 (promoting too high) or above H6 (demoting too deep), three strategies are available: Clamp keeps the heading at the boundary, Drop removes the heading line entirely, and Strong converts it to bold text (**Heading**).
After shifting, lint your doc with the Free Markdown Linter to catch any structural issues.
Code Blocks Are Never Touched
Content inside fenced code blocks (triple-backtick or tilde) is protected — the shifter tracks fence state and skips any # that appears inside. Your shell scripts, Python comments, and C preprocessor directives are safe. Only real ATX headings at the line start are rewritten.
Pair with the Free Markdown Formatter for broader whitespace cleanup.
Detailed Stats Per Run
The stats line below the output tells you exactly how many headings were found, how many were shifted successfully, how many hit the overflow boundary, how many were dropped, and how many were converted to strong text. No silent edits — you see every decision the tool made.
To strip out headings entirely (turning the doc into prose), see the Free Markdown to Plain Text tool.
How To Use Free Markdown Heading Shifter
Step 1 — Paste your Markdown
Drop a document with multiple heading levels into the input. Click Load example for a typical H1/H2/H3/H4 structure.
Step 2 — Pick direction and levels
Demote by 1 is the most common operation (used when embedding a doc inside another). Promote lifts prominence. Levels 1–5 control the shift size.
Step 3 — Copy or download the result
The full document is returned with every heading adjusted. Non-heading content is byte-for-byte unchanged.
Who Can Use This Tool
Technical writers embedding docs
Merge a README into a larger guide without mismatched heading levels.
Developers building monorepo docs
Pull package-level READMEs into a root docs site and demote all headings in one pass.
Bloggers breaking up long posts
Promote sub-section headings when splitting a long post into multiple standalone posts.
Students consolidating study notes
Combine chapter notes into one document with consistent heading levels.
Teams publishing to Confluence or Notion
Normalize heading levels before pasting into a CMS that expects a specific structure.
Frequently Asked Questions
Is this Markdown Heading Shifter free?
Yes. Free forever, no account required.
What's the difference between promote and demote?
Promote raises prominence (H3 → H2, H2 → H1). Demote lowers it (H2 → H3, H1 → H2).
What happens when a shift would go past H1 or H6?
Pick the Overflow option: Clamp (stay at the boundary), Drop (remove the heading line), or Strong (convert to **bold**).
Does it touch fenced code blocks?
No. Code content is protected — a # inside a shell script stays a comment.
What about Setext-style headings (===, ---)?
Only ATX-style (#, ##, ...) headings are rewritten. Setext rows are rare in modern docs and would require a more invasive rewrite.
Is my Markdown uploaded?
No. Runs 100% in your browser.
Related Free Markdown Tools