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.
1Paste your Markdown
2Lint results
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.
| Rule | Severity | What it checks | |
|---|---|---|---|
| MD001 | error | Heading levels must increment by one (H1 → H2, never H1 → H3). | |
| MD009 | warning | No trailing whitespace; exactly two trailing spaces (hard break) are allowed. | auto-fix |
| MD010 | warning | No hard tab characters; use spaces for indentation. | auto-fix |
| MD012 | warning | No more than one consecutive blank line. | auto-fix |
| MD013 | info | Lines should not exceed the configured maximum length (default 80). | |
| MD018 | error | Space required after # in ATX headings (## Title, not ##Title). | auto-fix |
| MD022 | warning | Headings must be surrounded by blank lines. | auto-fix |
| MD025 | warning | Only one top-level heading (H1) per document. | |
| MD026 | warning | Headings must not end with punctuation (. , ; : ! ?). | auto-fix |
| MD031 | warning | Fenced code blocks must be surrounded by blank lines and closed. | auto-fix |
| MD032 | warning | Lists must be surrounded by blank lines. | auto-fix |
| MD034 | info | No bare URLs; wrap in <...> or use link syntax. | |
| MD040 | info | Fenced code blocks should declare a language for highlighting. | |
| MD041 | warning | The first content line should be a top-level heading (H1). | |
| MD047 | warning | File 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.
Free tool by NRTechStudio