removes raw HTML, keeps fenced code intact

Strip raw HTML from Markdown

Clean Markdown documents by removing inline HTML tags while preserving fenced code blocks where HTML is valid sample content.

HTML Stripper
Input
237 B
16 lines
Output
141 B
16 lines
Status
ready
live
Ratio
0.59×
out/in
input · markdown
output · cleaned
# Release Notes

Heads up: API change.

Some **text** with inline spans.


Click me
Hidden body


```html
<keep>this in code</keep>
```

End.
Quick Start

How to strip HTML from Markdown

Walks line-by-line, leaves anything inside fenced code blocks untouched, and removes inline HTML tags everywhere else with a regex pass.

  1. 01

    Paste mixed Markdown

    Markdown with inline HTML, divs, spans, details.

    Parsing runs through marked with GFM extensions enabled — tables, task lists, strikethrough, and fenced code blocks all match GitHub’s rendering.

    inputGFMmarkedCommonMarklive
    input · markdownmixed · GFM
    <div>...</div>
    loaded · GFMGFM · ready
  2. 02

    Preserve code

    Triple-backtick blocks pass through verbatim.

    Soft-break behaviour is configurable: by default a single newline becomes a space (CommonMark), toggle on for chat-style <br> insertion.

    fencesoft-breaksoptionsconfiglive
    skip · options``` · live
    code intact
    options applied · livelive
  3. 03

    Strip tags

    Opening / closing tags are removed; inner text is kept.

    The preview is scoped under a .mde class so its CSS doesn’t bleed into the rest of the page. Output HTML is whitespace-controlled for clean diffs.

    strippreviewscoped CSSrenderstable
    out · renderedmd · ready
    inner text only
    rendered · liverendered
  4. 04

    Copy or download

    Ready for parsers that reject embedded HTML.

    Export covers both raw Markdown and rendered HTML; downloads stream as text/markdown or text/html via Blob + object URL.

    exportclipboard.md.htmlblob
    ✓ · exportedmd · done
    ✓ shipped
    exported · ready to shipsuccess
Pro tips

Author Markdown that renders everywhere

GFM is the safe default

GitHub-Flavored Markdown is the de-facto baseline (tables, task lists, strikethrough). CommonMark is stricter but ubiquitous as a fallback.

Soft-break behaviour varies

A single newline is a space in CommonMark, a <br> in GFM. Toggle soft breaks when source matters.

Escape inside code fences

Backticks inside fenced blocks need a longer fence — three becomes four. Use ~~~ if your content has many backticks.

Anchors are slugified

GitHub lowercases, strips punctuation, and joins with hyphens. Duplicate headings get -1, -2 suffixes.

Tables need a header row

The dash row sets alignment (:---, :-:, ---:). Use Table Aligner for diff-friendly columns.

Front matter is YAML

Triple-dash blocks at the top of files are parsed by static-site generators. Use the Front-Matter Validator to catch syntax errors.

Use Cases

When to strip HTML

For parsers and previewers that reject inline HTML.

Strict CommonMark

Parsers like commonmark-ts in safe mode reject HTML. Render path uses marked with GFM extensions enabled (tables, task lists, strikethrough, autolinks), so what you preview matches what GitHub publishes bit-for-bit. Soft-break behaviour is configurable for chat-style vs prose Markdown.

GFM-compliant

Plain previews

Generate previews that exclude any HTML noise. Pairs cleanly with the Markdown Cheatsheet for syntax you can't quite remember — callout blocks, footnotes, definition lists. Output stays diff-friendly so style-only changes don't drown out real edits in PRs.

GitHub-perfect

MDX migration

Strip stray HTML before converting to JSX components. Cross-platform safe: anchors, code fences, and tables behave identically on GitHub, GitLab, Bitbucket, and Gitea. Heading-anchor slugs follow GitHub's lowercase-and-hyphenate rules so deep links survive a docs migration.

diff-friendly

RSS exports

Clean source for RSS plain-text excerpts. No server roundtrip — perfect for proprietary content you can't paste into a public tool. The full marked + GFM bundle ships with the page, so it works offline once loaded.

render-stable

Compliance review

Remove HTML before legal review of long-form docs. Front matter (YAML / TOML / JSON) passes through unchanged so static-site pipelines (Jekyll, Hugo, Astro, Eleventy) read it correctly. Pair with the Front-Matter Validator to catch syntax errors before deploy.

cross-platform

Lint sanitization

Pre-process before markdownlint MD033 runs. Output is reproducible: identical input always produces identical Markdown, so doc-generation scripts can rely on it for snapshot tests and embedded into release workflows.

SEO-friendly
FAQ

Frequently asked questions

No. Fenced code blocks (```) pass through untouched so sample HTML stays intact.
Indented blocks are not detected — convert them to fenced blocks first if you want them preserved.
No. It strips tags only — entities remain as-is. Use a dedicated decoder if needed.
No, only opening / closing tag syntax. HTML comments survive — strip them with a separate pass if needed.
No. Tag stripping runs locally in your browser.
Suggest a tool

Something missing?

Tell us what you need. We ship the top requests every two weeks.

Sent straight to the maintainers · no account needed
47 in queue·8 shipped this month
Request queued. Thanks!