Issues will appear here after linting...
What is Markdown Linter?
Markdown linting checks your Markdown content for style violations, structural problems, and common mistakes that can cause rendering issues across different platforms. Just as code linters catch bugs and enforce style conventions in programming languages, a Markdown linter ensures your documents follow consistent formatting rules that improve readability and prevent display errors. This tool implements 12 rules from the Markdownlint specification, covering structural issues like skipped heading levels (MD001), inconsistent heading styles (MD003), and missing top-level headings (MD041), as well as style problems like trailing whitespace (MD009), hard tabs (MD010), and bare URLs (MD034). Many of these issues are invisible in rendered previews but cause problems in static site generators, documentation platforms, and version control diffs. The auto-fix feature resolves correctable issues with a single click, while structural problems that require human judgment are flagged for manual review.
How to Use
- Paste your Markdown content into the input area, or click 'Load Sample' to try with example text containing intentional errors.
- Click 'Lint' to scan for issues — results appear on the right with severity levels, line numbers, and rule codes.
- Review each issue: errors indicate structural problems, warnings suggest style improvements, and info items are advisory.
- Click 'Fix All' to automatically correct fixable issues like trailing spaces, missing blank lines, and bare URLs.
Why Use This Tool?
Tips & Best Practices
- Run the linter, fix all issues, then lint again — some fixes may reveal previously hidden issues
- MD013 (line length) is informational — long lines in Markdown don't break rendering, but short lines are easier to diff in version control
- Use 'Fix All' first, then manually address remaining non-fixable issues like MD001 (skipped heading levels)
Frequently Asked Questions
What Markdown lint rules does this tool check?
This tool implements 12 rules: MD001 (heading increment), MD003 (heading style consistency), MD009 (trailing spaces), MD010 (hard tabs), MD012 (multiple blank lines), MD013 (line length), MD022 (blank lines around headings), MD026 (trailing punctuation in headings), MD032 (blank lines around lists), MD034 (bare URLs), MD040 (code block language), and MD041 (first line heading). These cover the most common Markdown style and structural issues.
What does 'auto-fixable' mean?
Some issues can be automatically corrected by the 'Fix All' button. Auto-fixable issues include: trailing whitespace (MD009), hard tabs (MD010), multiple blank lines (MD012), missing blank lines around headings (MD022), trailing punctuation in headings (MD026), missing blank lines before lists (MD032), bare URLs (MD034), and missing code block language (MD040). Issues like MD001 (skipped heading levels) and MD041 (missing top-level heading) require manual fixes because the correct content depends on your intent.
Why are trailing double spaces not flagged by MD009?
In Markdown, two trailing spaces at the end of a line create a hard line break (<br>). This is intentional Markdown syntax, so the linter does not flag double trailing spaces. Only three or more trailing spaces are considered unnecessary whitespace.
What is the difference between ATX and setext heading styles?
ATX headings use hash prefixes (# Heading, ## Subheading) and are the most common style. Setext headings use underlines (=== for h1, --- for h2) and only support two levels. MD003 requires you to pick one style and use it consistently throughout your document. ATX style is generally preferred because it supports all six heading levels and is easier to scan visually.
Why should bare URLs be wrapped in angle brackets?
Some Markdown processors don't automatically turn bare URLs into clickable links. Wrapping a URL in angle brackets (<https://example.com>) ensures it renders as a clickable link in all Markdown processors. It also makes the URL stand out visually in the raw Markdown source, improving readability.
Is my Markdown content kept private?
Yes. All linting and auto-fixing runs entirely in your browser. Your Markdown content is never uploaded to any server or stored anywhere. The tool processes everything client-side using JavaScript.
When should I NOT use this linter?
Skip this tool for Markdown that uses non-standard extensions like MathJax formulas, Mermaid diagrams, or custom directives supported by specific platforms (Obsidian, Notion, Docusaurus). Those extensions may trigger false positives. Also, if your team uses a different linting configuration (like markdownlint-cli with custom .markdownlintrc), the rule set here may not match your project's standards.
Real-world Examples
Linting a blog post before publishing
Before publishing a blog post to a static site generator like Hugo or Jekyll, run the linter to catch structural issues that could break the rendered page.
## Getting Started This guide covers setup. ### Prerequisites Node.js installed. #### Installation steps Run the following: - Step one - Step two Code: https://example.com/repo ``` npm install ```
Issues found: - MD041: First heading should be h1, found h2 - MD001: Heading level skipped (h2 to h4) - MD012: Multiple consecutive blank lines - MD032: List should be preceded by blank line - MD034: Bare URL should be wrapped in angle brackets - MD040: Code block missing language specifier
Auto-fixing a messy documentation file
A documentation file written by multiple contributors has inconsistent formatting. Use 'Fix All' to automatically correct fixable issues before manual review.
## API Reference ### Endpoints - GET /users - POST /users Check https://api.example.com/docs for details. ``` GET /users ```
## API Reference ### Endpoints - GET /users - POST /users Check <https://api.example.com/docs> for details. ```text GET /users ```