Developer · Validator
Markdown linter.
Paste Markdown to check it against eleven markdownlint rules. Every finding shows its rule ID, the line and column, and how to fix it. Copy a cleaned version in one click. Runs in your browser; nothing is sent anywhere.
Input
Result
Paste Markdown and press Lint.
The rules checked
Each rule below is taken from the markdownlint rule documentation (read 30 September 2026); each finding links to that rule's own section. Defaults are the documented ones.
- MD001 heading-increment: heading levels may only go down one level at a time (h2 to h3, never h2 to h4). Going back up by any amount is fine.
- MD009 no-trailing-spaces: no spaces at the end of a line. Exactly two spaces after text are allowed because Markdown reads them as a hard line break (
br_spaces= 2). Fenced and indented code is not checked. - MD010 no-hard-tabs: no tab characters, including inside code blocks (the documented default).
- MD012 no-multiple-blanks: at most one blank line in a row.
- MD013 line-length: 80 characters by default, for text, headings, code and tables. A long line is excused when it has no whitespace beyond the limit (a long URL, say), and lines holding only a link or image, or a link reference definition, are always excused.
- MD022 blanks-around-headings: one blank line above and below every heading, except at the start or end of the document.
- MD024 no-duplicate-heading: no two headings with the same text anywhere in the document (
siblings_onlyoff). - MD031 blanks-around-fences: a blank line before and after every fenced code block, including blocks inside list items.
- MD032 blanks-around-lists: a blank line before and after every list. Text on the line right after a list item counts as part of that item, as in CommonMark.
- MD034 no-bare-urls: an
http://,https://orftp://address must sit in angle brackets or a link. URLs in code spans, code blocks, link destinations, link text and HTML attributes are skipped. - MD047 single-trailing-newline: the file must end with a newline character.
Worked example
The built-in example (press Load example) is 14 lines and produces 16 findings: MD001 (an h3 straight after an h1), MD009 (three trailing spaces), MD010 (a tab), MD012 (two blank lines), MD013 (a 105-character line), MD022 (five missing blank lines around headings), MD024 (a repeated “Fixes” heading), MD031 (two missing blank lines around a fence), MD032 (a list that touches the paragraph above), MD034 (a bare URL) and MD047 (no final newline). The cleaned copy fixes every one of those except MD001, MD013 and MD024, which need a human decision.
What “cleaned” changes, and what it does not
The cleaned copy only applies mechanical fixes: it removes trailing whitespace (keeping a two-space hard break), turns tabs outside code into four spaces (that width is this tool's choice, not markdownlint's), deletes extra blank lines, inserts the missing blank lines, wraps bare URLs in <> and adds the final newline. It never touches code blocks or front matter, and it never rewrites headings or splits long lines. Read the diff before you commit it.
How this differs from the real markdownlint
This page is a small line-based re-implementation of eleven rules, not the markdownlint library. It does not parse the full CommonMark syntax tree, so edge cases can differ: indented code blocks are not detected, block quotes and HTML blocks are treated as plain text lines, headings inside block quotes are not seen, a whitespace-only line is always reported by MD009, and bare email addresses and www. links are not reported by MD034. For a definitive result run markdownlint itself, or its CLI, in your project. Rules not listed here (for example MD003, MD004, MD040 or MD041) are not checked.
Sources: markdownlint rules (github.com/DavidAnson/markdownlint, doc/Rules.md), as read 30 September 2026; CommonMark specification (spec.commonmark.org) for fences, lists and lazy continuation.
Frequently asked questions
Why is a line over 80 characters not flagged?
MD013 excuses a long line when nothing after the limit is whitespace, so a long URL is not forced to break. Lines holding only a link or image, and link reference definitions, are also excused.
Is two trailing spaces really allowed?
Yes. Two spaces at the end of a line are a Markdown hard line break, so MD009 allows exactly two. One space, or three or more, is reported.
Why is my duplicate heading flagged when the sections differ?
With markdownlint's default (siblings_only off) any repeated heading text is reported, even under different parents. Changelogs that repeat “Fixed” under every version commonly turn that option on.
Does the cleaned copy change my meaning?
It should not: it only adjusts whitespace and wraps bare URLs in angle brackets, which renders the same link. Check the result with a diff anyway, especially if your file mixes tabs and spaces on purpose.
Style check only
This tool reports where Markdown breaks a set of markdownlint style rules. It does not check that links work, that the content is correct, or how any one renderer displays the file, and it is a subset of the real markdownlint. Nothing you type is stored or sent anywhere.