LCS · line-level · unified diff · GFM-aware

Markdown Diff

Compare two Markdown documents side by side — added and removed lines are highlighted using a longest-common-subsequence algorithm.

Markdown Diff
Added
+0
new lines
Removed
-0
deleted
Unchanged
1
same
Total
1
2 B diff
left · original
unified · +0 -0
 
Quick Start

How to diff Markdown

Paste the original on top, the changed version below. Added and removed lines are highlighted.

  1. 01

    Paste original

    The first textarea is the original Markdown.

    Parsing runs through marked with GFM extensions enabled — tables, task lists, strikethrough, and fenced code blocks all match GitHub’s rendering.

    leftGFMmarkedCommonMarklive
    left · markdownmd · GFM
    # Project
    loaded · GFMGFM · ready
  2. 02

    Paste changed

    The second textarea is the changed version to compare.

    Soft-break behaviour is configurable: by default a single newline becomes a space (CommonMark), toggle on for chat-style <br> insertion.

    rightsoft-breaksoptionsconfiglive
    right · optionsmd · live
    # Project edited
    options applied · livelive
  3. 03

    Read diff

    Green = added, red = removed, grey = unchanged. LCS-based.

    The preview is scoped under a .mde class so its CSS doesn’t bleed into the rest of the page. Output HTML is whitespace-controlled for clean diffs.

    diffpreviewscoped CSSrenderstable
    diff · renderedlcs · ready
    + new line
    - old line
    rendered · liverendered
  4. 04

    Copy/download

    Grab the unified diff for code review or commit.

    Export covers both raw Markdown and rendered HTML; downloads stream as text/markdown or text/html via Blob + object URL.

    exportclipboard.md.htmlblob
    ✓ · exporteddiff · done
    ✓ Copied diff
    shipped · ready to shipsuccess
Pro tips

Author Markdown that renders everywhere

GFM is the safe default

GitHub-Flavored Markdown is the de-facto baseline (tables, task lists, strikethrough). CommonMark is stricter but ubiquitous as a fallback.

Soft-break behaviour varies

A single newline is a space in CommonMark, a <br> in GFM. Toggle soft breaks when source matters.

Escape inside code fences

Backticks inside fenced blocks need a longer fence — three becomes four. Use ~~~ if your content has many backticks.

Anchors are slugified

GitHub lowercases, strips punctuation, and joins with hyphens. Duplicate headings get -1, -2 suffixes.

Tables need a header row

The dash row sets alignment (:---, :-:, ---:). Use Table Aligner for diff-friendly columns.

Front matter is YAML

Triple-dash blocks at the top of files are parsed by static-site generators. Use the Front-Matter Validator to catch syntax errors.

Use Cases

When to diff Markdown

Reviewers, writers, maintainers.

Review PRs

See README changes before approving. Render path uses marked with GFM extensions enabled (tables, task lists, strikethrough, autolinks), so what you preview matches what GitHub publishes bit-for-bit. Soft-break behaviour is configurable for chat-style vs prose Markdown.

GFM-compliant

Changelog draft

Compare two release notes drafts side by side. Pairs cleanly with the Markdown Cheatsheet for syntax you can't quite remember — callout blocks, footnotes, definition lists. Output stays diff-friendly so style-only changes don't drown out real edits in PRs.

GitHub-perfect

Doc audit

Spot drift between two doc versions. Cross-platform safe: anchors, code fences, and tables behave identically on GitHub, GitLab, Bitbucket, and Gitea. Heading-anchor slugs follow GitHub's lowercase-and-hyphenate rules so deep links survive a docs migration.

diff-friendly

Spec evolution

Track RFC edits across review rounds. No server roundtrip — perfect for proprietary content you can't paste into a public tool. The full marked + GFM bundle ships with the page, so it works offline once loaded.

render-stable

Translation review

Compare original vs translated Markdown. Front matter (YAML / TOML / JSON) passes through unchanged so static-site pipelines (Jekyll, Hugo, Astro, Eleventy) read it correctly. Pair with the Front-Matter Validator to catch syntax errors before deploy.

i18n

Anti-plagiarism

Detect copied content between two docs. Output is reproducible: identical input always produces identical Markdown, so doc-generation scripts can rely on it for snapshot tests and embedded into release workflows.

SEO-friendly
FAQ

Frequently asked questions

It's a line-level longest-common-subsequence (LCS) diff — the same family of algorithms `git diff` uses, simpler tuning.
Not yet. For finer-grained diffs, paste each paragraph as a single line.
It diffs raw lines — formatting changes show as additions/removals, which is usually what you want in review.
LCS is O(n*m) — works fine up to a few thousand lines. Above that, split into sections.
No — everything runs locally in your browser.
Suggest a tool

Something missing?

Tell us what you need. We ship the top requests every two weeks.

Sent straight to the maintainers · no account needed
47 in queue·8 shipped this month
Request queued. Thanks!