Merge Markdown files without rewriting them
Combine Markdown in exact file order, or place content under exact, unique heading paths with every ambiguity shown first.
- SECURE
- NO UPLOADS
- NO SIGNUP
- BROWSER BASED
- FREE
- FOREVER.
Support us with a link or a share
Add the files to merge
Drop Markdown files here
or paste Ctrl+V
Pick two or more .md files. They are read in this tab and never uploaded.
How to merge
Merged Markdown
Add at least two Markdown sources to merge.
Merge Markdown files as source, not rendered documents
Markdown is plain source with meaningful whitespace, delimiters and line endings. Ordered concatenation therefore keeps each source exactly as supplied and inserts the literal separator between files—even when a source is empty. The default blank-line preset inserts two line breaks, so a following heading stays separate even when the preceding source has no final newline; at a CR-only boundary it keeps CR rather than inventing CRLF. A custom separator stays literal, and the controls warn when it has no line break. The result is never rendered and serialized back into a different dialect. Reorder sources with the arrows or by dragging the grip, or use Sort A–Z, which orders numbered chapter files such as 02-setup.md before 10-faq.md.
Match heading paths only when the evidence is exact
Structure mode starts from a selected base document. An incoming section is matched only when the complete heading path has the same labels and levels and is unique on both sides. API does not equal Api; composed and decomposed Unicode labels are not silently treated as one value. Unmatched and ambiguous subtrees wait for an explicit destination or omission.
Front matter, BOMs, references and duplicate blocks stay visible
A second front-matter block, an embedded byte order mark, a conflicting link or footnote definition, and an exact duplicate section each create a visible decision. Fenced and indented code, tables, raw HTML and unknown directive containers remain opaque source. The tool does not inspect their contents for headings or definitions and never merges prose by meaning.
The receipt can audit the complete merge
The JSON receipt includes every complete input, file-or-paste provenance, physical line-ending and final-newline facts, the chosen separator and resolutions, output-ordered operations and the full output. Generated separator operations and omitted source spans are explicit. The on-page preview may clip a long middle section, while copying and both downloads always use the complete value.
Everything stays local
Files are decoded as UTF-8 in this tab, with invalid byte sequences rejected instead of replaced. There is no upload and no arbitrary size cutoff; sources above the local threshold are processed in a browser worker. Use Markdown diff to review two versions without merging, or open the result in the Markdown editor.
Questions
Does this rewrite or normalize my Markdown?
No. Ordered concatenation keeps every supplied source character and inserts only the literal separator you chose. Structure mode copies physical source slices and records every generated or omitted span.
How does Match heading paths work?
Choose a base document. A heading matches only when its complete parsed label-and-level path is exact and unique in both documents. Case, Unicode normalization and meaning are never guessed.
What happens when headings or definitions conflict?
The merge stops for an explicit choice. You can keep or omit exact duplicate material, append unmatched subtrees, or place one at a specific base heading when that choice is available.
Are the files uploaded?
No. UTF-8 decoding, analysis, merging, copying and downloads happen in this browser tab. Large work is moved to a local browser worker.