To compare Markdown files, review the source, the rendered page, and the link targets. Each view catches a different kind of change. A page can keep the same words while a link points somewhere new. Use a source diff first, then check the final preview.
A README review often starts with a simple question: what changed? The answer is less simple when both drafts look alike. A new URL may hide behind the same link label. A change in spacing may also alter a code sample.
This guide uses six small test cases, not a long feature list. We checked their source changes with Git, rendered both versions, and ran them through the live TextCompareo tool. The results show where each review method helps and where it falls short.
Three Checks for a Markdown Review
Start by deciding what you need to approve. There are three separate checks:
- Source: Did the saved characters, spaces, or line breaks change?
- Presentation: Does the final page have the right headings, lists, and code blocks?
- Targets: Do links and images still point to the right place?
Do not treat one check as proof of the other two. A text-only copy of a preview drops link targets. An exact source diff shows them, but may bury them among harmless edits. A rendered diff may inspect link attributes; a quick visual scan often does not.
Our VS Code Markdown diff article covers the editor's rendered review feature. Here, the goal is a repeatable review process that does not depend on one editor.
Example: Same Link Label, New Destination
Save these two short drafts as separate files. The words in the preview stay the same, but the guide URL changes.
Before
Read the [guide][docs].
[docs]: https://example.com/v1
After
Read the [guide][docs].
[docs]: https://example.com/v2
Both drafts display βRead the guide.β The reference definition supplies the destination without adding visible words. The CommonMark reference-link rules explain this behavior.
In our test, the rendered words matched, while the HTML link target changed. Git and TextCompareo both exposed the URL edit. That is why we review reference definitions even when the sentence above them is unchanged.
Six Markdown Changes We Tested
We rendered each pair with Marked 18.0.5, with gfm: false and breaks: false. We compared HTML, link targets, and displayed words. For the words check, we collapsed whitespace; this check does not preserve layout or code indentation.
Git found a source change in all six pairs. We also tested TextCompareo with all four ignore options off. These results describe those fixtures on the test date, not every Markdown file or renderer.
Scroll the table sideways on smaller screens to see all four columns.
| Test case | Displayed words | Rendered HTML | TextCompareo result |
|---|---|---|---|
| Inline URL: v1 to v2 | Same | Link target changed | URL edit shown |
| Reference URL: v1 to v2 | Same | Link target changed | URL edit shown |
| **stable** to __stable__ | Same | Identical | Marker edits shown |
| Soft paragraph wrap | Same | Newline added; browser text looked the same | 100% similarity |
| Two spaces before an internal newline | Same words; new line in preview | A br element added | 100% similarity |
| Indent removed inside a fenced Python block | Same words; code spacing changed | Code content changed | 100% similarity |
The last two rows matter most. In these tests, TextCompareo normalized spaces before comparing the text. Turning off the ignore options did not make the comparison whitespace-exact. A 100% score did not mean the original Markdown files were identical.
The marker test shows the opposite risk. A source change can be large in the diff yet leave the rendered HTML unchanged. Match the review method to the question, rather than trusting the score alone.
A Practical Workflow for Comparing Markdown Files
1. Keep an untouched copy of each draft
Use the same text encoding when saving both files. Do not run a formatter before your first pass. It may mix a real edit with changes to wrapping and spacing. If the whole file appears changed, check encoding and line endings first.
2. Inspect URLs and wording in a source view
Open TextCompareo's text comparison tool and paste the two non-sensitive drafts. Leave Ignore Case and Ignore Punctuation off for this review. Inspect changes to labels, URLs, headings, and prose. Search the source for reference definitions as well as inline links.
This is a quick content pass, not a Markdown parser or link checker. TextCompareo does not validate destinations or show a rendered Markdown preview. For tiny edits, a character-level or word-level view can help you locate the changed part.
3. Use an exact source pass when whitespace matters
For hard breaks, code indentation, blank lines, or exact patches, use a local source diff. With Git installed, this command compares two files without adding them to a repository:
git diff --no-index --no-ext-diff --no-textconv -- before.md after.md
Do not add whitespace-ignore flags for this pass. We ran this command on all six fixtures, and it showed every change. Git returns exit code 1 when the files differ; that result is expected here. See the official git diff documentation for these options.
4. Preview both drafts in the target renderer
Check the system that will publish the document, not just any preview app. GitHub, a docs site, and an editor may support different extensions. GitHub Flavored Markdown adds features beyond CommonMark, such as tables and task lists.
Look at heading levels, list nesting, tables, image captions, and code fences. For trusted links, inspect the destination and check the final page. Do not open unknown links just to test them. Check relative paths against the final document location.
5. Record what you approved
A useful review note can be one line: βWording checked, link targets checked, code spacing checked, final preview checked.β If one part was not tested, say so. This gives the next reviewer more useful evidence than a similarity percentage.
Why Ignoring Whitespace Can Hide a Real Change
In CommonMark, two trailing spaces before a line ending can create a hard break within a paragraph. A regular newline is a soft break. In our fixture, adding those spaces inserted a br element, while the displayed words stayed the same.
Try First line\nSecond line and First line \nSecond line. Here, \n means a real newline; the second version has two spaces before it. The CommonMark hard-break rules give the full conditions.
Whitespace also belongs to the content inside a fenced code sample. Removing indentation can make a copied Python example invalid. That is a code review issue, even if the surrounding prose still reads well.
What If the Document Is Not Markdown?
If you only have a PDF export, use PDF Compare to review the extracted document text. That is not proof that the Markdown source or PDF layout matches. If a docs table comes from a workbook, use Excel Compare for the spreadsheet data, then review its Markdown output separately.
Frequently Asked Questions
How can I compare two Markdown files?
Review the source diff, preview both drafts in the target renderer, and inspect link destinations. Use an exact local source diff when spaces, code indentation, or patches matter.
Why do Markdown files look the same but show differences?
Different markup can produce the same output. For example, **stable** and __stable__ rendered identically in our test. A changed link destination can also leave the visible label unchanged.
Can I ignore whitespace in a Markdown diff?
Only for a separate reading pass. Do not ignore it when checking hard line breaks, list structure, or code indentation. Keep an exact source pass before you approve the file.
Does TextCompareo show rendered Markdown differences?
No. It compares text and highlights changes; it does not render Markdown or validate links. Its whitespace normalization also means it should not replace an exact source diff for spacing-sensitive edits.
Does 100% similarity mean two Markdown files are identical?
Not always. A tool may normalize spaces or ignore some changes. In our tests, TextCompareo returned 100% for a hard-break change and a code-indentation change, though the source files differed.
Sources and Test Method
- CommonMark 0.31.2 specification: reference links, emphasis, code blocks, and line breaks.
- GitHub Flavored Markdown specification: extensions and renderer differences.
- Git diff documentation: local file comparison and conversion options.
- TextCompareo hands-on tests, October 10, 2026: six two-file fixtures, Marked 18.0.5 rendering, Git source diffs, and live tool comparisons. The table reports these tests, not a general benchmark.
Start with the Wording and Link Changes
Paste two non-sensitive Markdown drafts, then inspect the highlighted text.
Compare Markdown Text