Markdown Formatter and Checker

Normalize Markdown formatting with a deterministic rule set — consistent list markers, spacing and blank lines. No AI, no upload: same input, same output.

Free forever · Runs in your browser · No signup · Fidelity report included

Last verified: 2026-10-25 · engine v0.5.0 · changelog

How to format and lint Markdown (3 steps)

1. Paste MarkdownPaste your Markdown
2. Review the diffReview proposed normalizations and diagnostics
3. Apply changesApply or copy the formatted result

Example: Markdown → Markdown

A messy snippet: * list markers, doubled blank lines, trailing spaces.

Input (Markdown)
#  Status

* item one
* item two



All done.
Output (md)

Formatted rendering of the real Markdown output (source below).

Status

  • item one
  • item two

All done.

View the exact Markdown source
#  Status

- item one
- item two

All done.

What converts natively (and what doesn't)

FeatureResult in the Markdown
Trailing whitespaceNative — Stripped from every line (rule MF001)
Space after heading markersNative — #No-space becomes # With-space (MF002)
List marker consistencyNative — * and + items normalize to - (MF003)
Blank-line rhythmNative — Runs of blank lines collapse to one (MF005)
Mixed ** and __ emphasisNative — Detected and reported as a diagnostic; your text stays untouched (MF004)
Code fencesNative — Never reformatted — everything inside a fence is left exactly as written

Full element-by-element ground truth, with test dates: format support.

What this tool does not do

  • No: Rewording, spell-checking or grammar fixes
  • No: Table alignment fixing
  • No: Configurable rule profiles
  • No: Auto-fixing mixed ** / __ emphasis — it is detected and reported today

What people use Markdown Formatter & Linter for

Pre-commit hygiene for docs reposNormalize list markers, spacing and blank lines across a documentation repo before review — deterministic rules, a visible diff, and no AI rewording your sentences.
Team-wide consistent MarkdownGive a mixed team one formatter so PRs stop arguing about * versus - and trailing whitespace — the diff shows exactly what was normalized.

Frequently asked questions

Will it change my wording?

Never. Only structural formatting is normalized: whitespace, blank-line rhythm, list markers and heading spacing. Code fences, link targets and your actual words are untouched.

Does it use AI?

No. Formatting is deterministic and runs entirely in your browser — the same input always yields the same output.

Which rules does it apply?

Trailing-whitespace trimming, a space after heading markers, list-marker normalization to -, collapsing runs of blank lines, and a diagnostic when ** and __ emphasis are mixed — each reported with its rule ID.

Is it deterministic?

Completely. The same input always produces the same output — there is no AI involved, which is what makes a formatter safe to rely on as a pre-commit step.

Can I use it in CI?

The formatting rules live in the deterministic core engine, which will publish as an open-source package; today they run here in the browser.

Does it fix table alignment?

Not yet — tables pass through completely untouched, so badly-aligned pipes stay as they are. Table alignment fixing is on the roadmap alongside the other rules.

Is this like Prettier for Markdown?

It shares the philosophy — deterministic, opinionated, idempotent — but the rule set here is deliberately small: whitespace, heading spacing, list markers and blank-line rhythm, with mixed-emphasis reporting. Code fences are never touched.

Can I normalize AI-generated Markdown with it?

Yes — LLM output often mixes list markers, spacing and emphasis styles. Run a paste through the formatter to normalize the structure deterministically; the same input always yields the same output, so it is safe to automate.

Related tools

Related searches: markdown editor · markdown to text · markdown to html