Skip to main content
📝 Developer Tool · 100% Client-Side

Markdown Linter Online — Check Markdown Style Rules

Paste your Markdown and get instant heuristic checks for 15 markdownlint-style rules — heading levels, trailing spaces, blank lines around lists and code fences, line length, bare URLs and more — with severity levels, exact line numbers and fix suggestions. Nothing is uploaded; everything runs in your browser.

Honest scope: this is a heuristic linter, not a full CommonMark parser. It catches common style mistakes fast, but it cannot prove your Markdown is valid. For CI pipelines, keep using markdownlint-cli2; use this tool for quick, private, no-install checks while you write.

1Paste your Markdown

Longer lines are reported as info, never as errors.
The most debated rule — switch it off if your project allows long lines.
Hide MD001 / MD013 / MD025 / MD034 / MD040, which need human judgment.

2Lint results

Paste Markdown above and click Lint Markdown — findings appear here with severity, line numbers and fix hints. Click any finding to jump to that line.

3Try an example

Each example loads real Markdown into the editor and runs the linter — the badge shows what the linter is expected to find.

4Lint rules reference

The fifteen checks this linter performs. Rules marked auto-fix can be repaired mechanically with the 🛠 Auto-fix button.

RuleSeverityWhat it checks
MD001errorHeading levels must increment by one (H1 → H2, never H1 → H3).
MD009warningNo trailing whitespace; exactly two trailing spaces (hard break) are allowed.auto-fix
MD010warningNo hard tab characters; use spaces for indentation.auto-fix
MD012warningNo more than one consecutive blank line.auto-fix
MD013infoLines should not exceed the configured maximum length (default 80).
MD018errorSpace required after # in ATX headings (## Title, not ##Title).auto-fix
MD022warningHeadings must be surrounded by blank lines.auto-fix
MD025warningOnly one top-level heading (H1) per document.
MD026warningHeadings must not end with punctuation (. , ; : ! ?).auto-fix
MD031warningFenced code blocks must be surrounded by blank lines and closed.auto-fix
MD032warningLists must be surrounded by blank lines.auto-fix
MD034infoNo bare URLs; wrap in <...> or use link syntax.
MD040infoFenced code blocks should declare a language for highlighting.
MD041warningThe first content line should be a top-level heading (H1).
MD047warningFile must end with exactly one newline character.auto-fix

5Frequently asked questions

No. This is a heuristic linter that runs entirely in your browser. It catches the most common Markdown style mistakes quickly — skipped heading levels, trailing spaces, missing blank lines, bare URLs — but it does not use a full CommonMark parser the way DavidAnson's markdownlint does. For CI pipelines and pre-commit hooks, keep using markdownlint-cli2; use this tool for fast, private, no-install checks while you write.

Fifteen rules: MD001 heading levels must increment by one, MD009 no trailing spaces, MD010 no hard tabs, MD012 no multiple blank lines, MD013 line length (default 80, toggleable), MD018 space required after # in ATX headings, MD022 blank lines around headings, MD025 single H1 per document, MD026 no trailing punctuation in headings, MD031 blank lines around fenced code blocks, MD032 blank lines around lists, MD034 no bare URLs, MD040 fenced code blocks should declare a language, MD041 first line should be an H1, and MD047 file must end with a single newline.

Yes — every rule here is a heuristic, so treat each finding as a hint. Typical cases: MD013 flags long URLs that cannot be wrapped, MD041 expects an H1 on the first content line which does not suit every document style, and a fence-like line inside prose (for example, when you are documenting triple backticks themselves) can confuse the code-block scanner. Inspect the flagged line before changing anything.

Auto-fix applies only mechanical, meaning-preserving transformations: it strips trailing whitespace, converts tabs to two spaces, inserts the missing space after # characters, removes trailing punctuation from headings, inserts the required blank lines around headings, lists and code fences, collapses multiple blank lines, and normalizes the final newline. It never rewords your text. Rules that need human judgment — MD001 heading order, MD013 line length, MD025 multiple H1s, MD034 bare URLs, MD040 missing code language — are reported but never auto-changed.

No. Everything happens locally in your browser tab using JavaScript. Your Markdown is never uploaded, logged, stored, or transmitted anywhere. You can disconnect from the internet after the page loads and the linter keeps working.

MD013 is the most debated markdownlint rule — many projects disable it entirely because long URLs and code lines often cannot be wrapped. This tool follows that spirit: it reports long lines as info rather than warnings, defaults the limit to 80 characters, and lets you change the limit or switch the rule off in the options panel.

Lines inside fenced code blocks and YAML frontmatter are excluded from heading and list rules, so documenting Markdown itself does not trigger false alarms. Trailing spaces, hard tabs, and line length are still checked everywhere. An unclosed fence is reported as an MD031 warning so you notice it.

In Markdown, two spaces at the end of a line create a hard line break (<br>). Following markdownlint's MD009 default, this tool allows exactly two trailing spaces for that purpose, but flags one space or three-or-more as likely accidental whitespace.

Privacy: this Markdown linter runs entirely in your browser. Your documents never leave your device — no uploads, no logging, no account needed.

Free tool by NRTechStudio