All tools

Markdown Linter

Code

Lint Markdown for broken #anchor links, skipped heading levels, undefined links and footnotes, missing alt text, untagged code fences, bad blockquote nesting and open tasks, with line numbers

Loading tool…

Related tools: Markdown Table of Contents Generator · Markdown Table Column Aligner · Markdown Front Matter Parser · Markdown Preview · Mermaid Diagram Syntax Validator

Was this tool helpful?
markdownlintlintervalidatereadmedocsheadingslinksanchorsfootnotesalt-textaccessibilitycode-fencetask-list

About Markdown Linter

Paste a README, docs page or blog post and the Markdown Linter runs eight checks at once, listing every finding with its line number: heading levels that skip (H2 straight to H4), #anchor links that point to a heading that does not exist, reference-style links and footnotes that are used but never defined or defined but never used, images with missing or meaningless alt text, code fences without a language tag, blockquotes that jump nesting levels, and unchecked task-list items. Every rule is on by default and can be switched off on its own, and clicking a line number selects that line in the editor so you can fix it in place. It is deliberately narrower than markdownlint: it skips whitespace and formatting nitpicks and concentrates on problems that break rendering, navigation or accessibility once the document is published. It runs entirely in your browser, and each rule is also its own REST endpoint, SDK function and MCP tool for CI checks and agents.

How to use Markdown Linter

  • 1.Paste your Markdown into the editor; all eight rules run as you type and findings appear sorted by line number with a severity (error, warning or info).
  • 2.Switch off rules that do not apply (for example open tasks in a working draft) with the toggles above the editor; the badge on each toggle shows how many findings that rule produced.
  • 3.Click a line number in the results to select that line in the editor, fix it, and watch the finding disappear.
  • 4.Group results by rule to work through one kind of problem at a time, then use Copy report to paste the list into a pull request review or issue.

Frequently asked questions

How is this different from markdownlint?
markdownlint enforces dozens of formatting style rules such as line length, list markers and trailing spaces. This linter focuses on correctness: broken internal anchors, undefined reference links and footnotes, heading structure, alt text, untagged code fences and blockquote nesting. Use both if you also want style enforcement.
How are #anchor links matched to headings?
With GitHub-style heading slugs: the heading text is lowercased, punctuation is removed and spaces become hyphens, and repeated headings get -1, -2 suffixes. A link to #instalation is flagged when the heading is "Installation".
Which rules count as errors and which as warnings?
Things that are broken for every reader are errors: an anchor or reference link with no target, a footnote that is never defined, an image with no alt text. Structural problems such as skipped heading levels or unused definitions are warnings, and stylistic notes such as open tasks or unusual language-tag casing are info.
Can I run these checks in CI?
Yes. Each rule is available on its own as a REST endpoint, a Node.js and Python SDK function, and an MCP tool; the code section on this page shows the exact call for whichever rule you pick.
Why did an old Utilix tool page redirect me here?
Utilix merged several single-purpose tools into the Markdown Linter. Each old URL now opens this page with its rule preselected (via ?rule=<old-tool-slug>), so bookmarks and links keep working. The old tools' REST endpoints, Node.js and Python SDK functions, and MCP tools are unchanged.
Is my document uploaded anywhere?
No. All eight rules run in your browser; nothing you paste leaves the page.