Skip to content

Markdown File Composer

Write Markdown and download as .md. Front Matter, table, code block, list, heading shortcuts, live preview, templates (README / Blog / ADR / Changelog).

100% Free No signup Browser-only Instant download 5 languages Dark mode
For AI coding assistants (Claude Code / Codex / Cursor etc.): AGENTS.md / CLAUDE.md Generator →
Templates: | Insert: ⬇ .md
0 chars / 0 Words / 0 Lines

📖 Where people get stuck

Write Markdown and download it as a .md file, with front matter templates ready so you can produce a static-site or AI-assistant configuration file on the spot. The preview here renders plain baseline Markdown; how tables, footnotes and checkboxes behave depends on whether the destination is GitHub, Hugo or Notion.

Case What happens What to do
The front matter is ignored YAML is strict about form and fails quietly. The three usual causes are a tab used for indentation, a missing space after the :, and an unquoted value that itself contains a :. The opening --- also has to be the very first line of the file — a blank line or a BOM before it turns the block into a horizontal rule in the body. Indent with two spaces everywhere, and always wrap free-text values such as a title in "…". Write dates as 2026-07-26; 2026/07/26 is parsed as a string and breaks sorting. Running the block through any YAML parser once before you commit is the reliable check.
Line breaks collapse into one line Markdown treats a single newline as a space. That is why a line you broke in the source comes out as a continuation of the previous line. It is the specification working as designed, not a bug. To start a new paragraph, leave a blank line. For a break inside a paragraph, end the line with two spaces or write <br>. Note that trailing spaces are removed by the common trim-on-save editor setting, so <br> is the safer choice on a shared repository.
Git shows every line as changed When a one-character edit shows up as a whole-file diff, the cause is almost always the line endings flipping between CRLF and LF. A Windows editor saves CRLF, a Linux-side tool rewrites LF, and the file ping-pongs. UTF-8 with a BOM produces a related symptom, where only the first line diffs inexplicably. Standardise on UTF-8 without a BOM, and LF. A .gitattributes at the repository root containing *.md text eol=lf enforces this regardless of each developer settings. To convert files you already have, use the line ending converter.

There is no single Markdown specification. CommonMark is the common base, GitHub Flavored Markdown adds tables, strikethrough, task lists and autolinking on top, and Hugo, Jekyll, Obsidian and Notion each layer on their own syntax, with footnotes, maths and callouts that do not interoperate. However good it looks in a local preview, check it once where it will be published. Wanting a line break inside a table cell, or code inside a cell, is exactly where implementations diverge.

❓ Frequently Asked Questions

Front Matter support?
Blog template includes YAML Front Matter (---). Works with Hugo / Jekyll / Astro etc.
GitHub-style rendering?
GFM-compatible. Tables, task lists, strikethrough, URL autolink etc.
Privacy?
Fully in-browser. Nothing sent to a server
🐛 Found a bug or issue with this tool?

Free to use, no signup. Even just the steps to reproduce are helpful. Reports go directly to the operator and help us fix issues.

* Browser info (UA / screen / language / URL) is sent automatically to help reproduce the issue