Markdown Linter

Check your Markdown for style and formatting errors instantly. Real-time lint results with rule IDs, line numbers, and clickable navigation. Browser-based, no data sent to server.

  • Runs in your browser
  • Your data never leaves your browser
  • Free · No Sign-Up
Clear or Ctrl/⌘+L while focus is in the tool removes the input, results and summary. Queued checks are cancelled, and earlier results and copy feedback cannot return.
Copy Results copies one text line per visible issue: line number, rule ID in brackets, description, details and context. Rule aliases are omitted. With no issues, the button does not copy anything.
Edit one Markdown document. Checks run after 300 ms with markdownlint defaults; the initial sample contains intentional issues. Inline markdownlint-disable and markdownlint-enable comments can suppress rules. There is no configuration-file upload or automatic fix.
Lint Results Each issue shows its rule ID, line number, description, details, context and alias when present. Click an issue to select its line in the editor. Descriptions and details come from markdownlint in English; checking reports issues without changing your document.
Results will appear here as you type.
Examples, details and FAQ Worked examples, how it compares with other tools, and answers to common questions.

What Gets Checked

The linter applies the full set of markdownlint rules, including:

  • MD001 — Heading levels should only increment by one level at a time
  • MD009 — No trailing spaces at end of lines
  • MD010 — No hard tabs (use spaces instead)
  • MD012 — No multiple consecutive blank lines
  • MD022 — Headings should be surrounded by blank lines
  • MD025 — Only one top-level heading per document
  • MD031 — Fenced code blocks surrounded by blank lines
  • MD034 — No bare URLs — use link syntax instead
  • MD041 — First line should be a top-level heading

Reading a Result

Each result line has the rule ID, the line number, the rule description, details after a dash and the text in brackets, then the rule alias. This input:

Intro paragraph
## Setup
#### Install
Run `npm install`.
```
npm test
```

with a final line break gives eight results, including:

  • MD001 L 3 Heading levels should only increment by one level at a time — Expected: h3; Actual: h4: #### follows ##, so a level was skipped.
  • MD022 L 2 Headings should be surrounded by blank lines — Expected: 1; Actual: 0; Above [## Setup], reported once for the missing blank line above and once below each heading.
  • MD031 and MD040 on line 5: the code fence needs a blank line before it and a language name such as ```sh.
  • MD041 L 1 First line in a file should be a top-level heading [Intro paragraph].

Copy Results copies one line per result in the form L 3 [MD001] Heading levels should only increment by one level at a time — Expected: h3; Actual: h4, which is easy to paste into a review comment.

Turning a Rule Off for One Section

markdownlint reads configuration comments inside the document, and so does this tool. Wrapping a paragraph in <!-- markdownlint-disable MD013 --> and <!-- markdownlint-enable MD013 --> stops the line-length report for that part only; <!-- markdownlint-disable-next-line MD034 --> skips one line. Use these when one table or URL has to break a rule, and keep the rule on for the rest of the file. The comments are invisible in rendered Markdown.

Limitations

  • Rule descriptions and details come from markdownlint and are in English on every language version of this page.
  • The tool reports problems but does not fix them. markdownlint-cli2 with --fix can fix many of them automatically.
  • One document at a time, with default settings; no .markdownlint.json upload.
  • markdownlint checks Markdown style. It does not check spelling, broken links outside the document, or whether a renderer such as GitHub shows the file the way you expect; use the Markdown Preview for that.

Privacy

All processing is client-side. Your Markdown content is never uploaded or stored.

Related Tools

Example: A Changelog

Input:

# Changelog

## 1.2.0

### Added

- Export button

## 1.1.0

### Added

* Dark mode

See https://example.com/releases

Results (markdownlint 0.40, default rules, input ending with a line break; without the final line break MD047 is reported as well):

L13  MD004 / ul-style            Unordered list style — Expected: dash; Actual: asterisk
L11  MD024 / no-duplicate-heading Multiple headings with the same content
L15  MD034 / no-bare-urls         Bare URL used
  • MD024 fires because both versions have an “Added” heading. That is the normal layout of a Keep a Changelog file; in your own config, "MD024": { "siblings_only": true } allows repeated headings under different parents.
  • MD004 wants one bullet style per document; the first list used -, so * is flagged.
  • MD034 asks for <https://example.com/releases> or a Markdown link instead of a bare URL.

Defaults You Cannot Change Here

The tool runs every rule that markdownlint enables by default, with default settings (see markdownlint rules). There is no configuration panel, so two defaults often produce noise:

  • MD013 line length is 80 characters. A 104-character English paragraph line is reported as Expected: 80; Actual: 104. A long line with no spaces after column 80 is not reported, so long Chinese, Japanese or Korean lines without spaces usually pass.
  • MD024 flags any repeated heading text in the document, as in the changelog above.

To lint with your own settings, put them in .markdownlint.json and run markdownlint-cli2 locally or in CI:

{
"MD013": { "line_length": 120 },
"MD024": { "siblings_only": true }
}

markdownlint skips YAML front matter at the top of a file, and a title in it counts as the top-level heading for MD041.

FAQ

Is my content sent to a server?

No. All linting happens in your browser using JavaScript. Your Markdown never leaves your machine.

Which rules does the linter check?

It runs markdownlint 0.40 with its default settings: all 53 of its rules, covering heading levels, trailing spaces, blank lines, bare URLs, list style, code fences and more. A few rules, such as MD043 required headings and MD044 proper names, report nothing until they are configured, and this page has no configuration panel.

What does a rule ID like MD001 mean?

Rule IDs follow the markdownlint convention: MD001 means 'heading-increment', MD009 means 'no-trailing-spaces', MD041 means 'first-line-heading', and so on. The rule documentation is in the markdownlint repository (linked above).

Can I click on a result to jump to that line?

Yes. Clicking any lint result scrolls the editor to the offending line and selects it so you can fix it immediately.

How does this differ from the CLI markdownlint tool?

The CLI tool integrates with your build pipeline and can check files on disk. This browser tool is for quick checks while writing or reviewing Markdown without installing anything.