How to diff markdown files outside git
- Step 1Save each version as a text file — Copy each version into a plain
.mdor.txtfile (from Word: paste into a plain-text editor to drop styling). md-diff compares saved files; it cannot read.docxdirectly. Saving both as plain text also makes the diff cleaner. - Step 2Choose Upload file mode — Comparing two files needs the Upload file tab. Paste text only provides one box (File A); the second version (File B) is supplied as an upload, so switch to Upload first.
- Step 3Load the older version as File A — File A is the version you're comparing *from* — the first draft or the pre-edit copy. Anything only in this version shows as
-(removed). Accepts.md,.mdx,.markdown,.txt. - Step 4Load the newer version as File B — File B is the post-edit version. New text shows as
+(added). Keeping older = A, newer = B makes additions read as the editor's changes. - Step 5Run and read the diff — Click run; the diff is computed locally. Walk the patch: each
@@header locates the next change,-lines are old text,+lines are new. There are no settings to configure. - Step 6Save the diff with the document's records — Copy the diff into your reply or download it as
diff.patchto file alongside the versions. The patch header carries File A's filename, so name your versions clearly before diffing.
Common 'from Word / email / chat' artifacts and how they show in the diff
Text pasted out of office apps carries hidden characters. Because the diff is whitespace- and character-significant, these affect how noisy your diff is.
| Artifact | Where it comes from | Diff effect |
|---|---|---|
| Curly quotes (“ ” ‘ ’) | Word autocorrect | Lines differ from straight-quote versions |
| En/em dashes (– —) | Word autocorrect of - / -- | Lines differ from hyphenated versions |
| Non-breaking spaces (NBSP, U+00A0) | Word, copy-from-PDF | Looks like a space but differs lexically |
| Smart ellipsis (…) | Word autocorrect of ... | One character vs three; line differs |
| Trailing spaces / soft line breaks | Email clients, chat apps | Line shows as changed despite same render |
| Different line endings (CRLF vs LF) | Windows vs Mac/Unix editors | Can register as line changes |
Per-version plan limits
Each of the two versions is checked independently against your plan's limits. md-diff is a dedicated two-input tool and is not blocked by batch limits.
| Plan | Max size per file | Max characters per file |
|---|---|---|
| Free | 1 MB | 500,000 |
| Pro | 10 MB | 5,000,000 |
| Pro-media | 50 MB | 20,000,000 |
| Developer | 500 MB | Unlimited |
Cookbook
Before/after excerpts from documents compared outside Git, and the unified diff md-diff produces.
A first-draft sentence rewritten by the copy editor
The editor tightened a sentence. The diff isolates the exact line that changed.
File A (first draft): The product will be made available to all of our customers. File B (copy-edited): The product ships to every customer. Diff (hunk): @@ -1 +1 @@ -The product will be made available to all of our customers. +The product ships to every customer.
Word turned a hyphen into an en dash
Pasting from Word converted a range hyphen into an en dash. Different character, so the line differs even though it looks similar.
File A (typed in a plain editor): Open 9-5 on weekdays. File B (pasted from Word): Open 9–5 on weekdays. Diff (hunk): @@ -1 +1 @@ -Open 9-5 on weekdays. +Open 9–5 on weekdays.
A clause deleted in the contract redline
Comparing a contract draft against the counterparty's returned version, a deleted clause shows as a clean removal.
File A (our draft): 3. Term 3.1 This agreement runs for 12 months. 3.2 Either party may terminate with 30 days notice. File B (returned): 3. Term 3.1 This agreement runs for 12 months. Diff (hunk): @@ -1,3 +1,2 @@ 3. Term 3.1 This agreement runs for 12 months. -3.2 Either party may terminate with 30 days notice.
Non-breaking space hiding in pasted text
An NBSP from a PDF paste looks like a normal space but is a different character, so the line registers as changed. Catching it explains a mysterious diff.
File A (normal space, shown as ·): Section·1 Overview File B (NBSP after 'Section', shown as ␣): Section␣·1 Overview Diff (hunk): @@ -1 +1 @@ -Section 1 Overview +Section 1 Overview
Whole paragraph rewritten
A heavily revised paragraph shows as the old block removed and the new block added — accurate, if not subtle, for a line-by-line diff.
File A: Our mission is to delight customers. We value speed and quality. File B: We exist to solve real problems. We ship fast without cutting corners. Diff (hunk): @@ -1,2 +1,2 @@ -Our mission is to delight customers. -We value speed and quality. +We exist to solve real problems. +We ship fast without cutting corners.
Edge cases and what actually happens
Trying to upload a .docx directly
Not supportedmd-diff accepts .md, .mdx, .markdown, and .txt only. A .docx is a zipped binary, not text, so it can't be diffed. Paste the document's text into a plain-text file (or convert it) and save as .md/.txt first.
Word artifacts make the diff noisier than expected
ReportedCurly quotes, en/em dashes, smart ellipses, and NBSPs from a Word paste differ from their plain-text equivalents, so lines containing them show as changed even when the meaning didn't. Normalise these before diffing (a smart-quote/whitespace clean-up) if you only care about content edits.
Line-ending mismatch (Windows vs Mac)
ReportedA version saved on Windows and one saved on Mac may differ in line endings, which can register as line changes. If a diff looks unexpectedly large, check whether it's an EOL difference rather than real content.
Versions loaded in the wrong order
Inverted resultIf the newer version is File A and the older is File B, additions and removals flip. File A is always the baseline. Reload with older = A, newer = B.
File B not loaded
ExpectedAn empty File B is diffed as an empty document, so the whole of File A shows as removed. An all-- diff means the second version wasn't uploaded.
Identical after normalisation
ExpectedIf two versions are byte-identical, the patch has only a header and no @@ hunks. An empty body confirms no change — handy for verifying that a 'revised' version actually differs.
Version over the character limit
RejectedA version larger than your plan's per-file character limit (Free: 500,000) is rejected with an error naming the file. Split it with md-splitter or upgrade for larger documents.
Hard-wrapped exports cause whole-paragraph diffs
NoisyDocuments exported with hard line wraps re-flow when edited, so a small change touches many lines. For cleaner diffs, save versions with one sentence (or paragraph) per line rather than fixed-width wraps.
Frequently asked questions
Can I diff a Word .docx file directly?
No. md-diff reads text files (.md, .mdx, .markdown, .txt). Copy the document's text into a plain-text file — pasting into a plain editor strips styling — and save each version as .md or .txt before diffing.
Do I need Git for this?
No — that's the point. md-diff gives you a Git-style unified diff between any two text files, with no repository or commit history required. Save the versions as files and compare them.
Why does pasted-from-Word text show so many changes?
Word autocorrect introduces curly quotes, en/em dashes, smart ellipses, and sometimes non-breaking spaces. These are different characters from their plain-text equivalents, so every line containing them differs. Normalise them first if you only want content changes.
What's a non-breaking space and why does it show in my diff?
A non-breaking space (U+00A0) looks like a normal space but is a distinct character, common in text copied from PDFs and Word. md-diff compares characters exactly, so a line with an NBSP differs from one with a regular space.
Which version goes in File A?
The older one — the version you're comparing from. File A is the baseline, so removed text shows as - and new text as +. Keep older = A, newer = B for consistent diffs.
Are my documents uploaded?
No. The diff runs in your browser, so confidential contracts, manuscripts, and internal memos are compared locally and never sent to a server.
Can I paste both versions instead of saving files?
Only File A can be pasted. File B is upload-only, so save the second version as a .md/.txt file and upload it. There is no dual-paste mode.
What does an empty diff mean?
The two versions are byte-identical, including whitespace and line endings — the patch shows a header but no @@ hunks. It's a quick check that a 'new' version really changed.
How big can each version be?
Free 1 MB / 500,000 characters, Pro 10 MB / 5,000,000, Pro-media 50 MB / 20,000,000, Developer 500 MB / unlimited. Each version is checked separately, so one large file won't block a small one.
Can I save the comparison?
Yes. Copy the diff text into your records or download it as diff.patch. It's a standard unified diff readable in any editor.
Why is a reordered section shown as deleted and re-added?
A line-by-line diff has no concept of moving a block — it records the section as removed from its old spot and added at the new one. Read both hunks together to recognise the move.
How do I make the diff cleaner before comparing?
Run both versions through md-prettifier so spacing and formatting match, leaving only content changes in the diff. To recombine accepted sections use md-merger, or md-lint to flag style issues before review.
Privacy first
All Markdown processing runs locally in your browser using JavaScript. No file is ever uploaded to JAD Apps servers — only metadata counters are saved for signed-in dashboard stats.