Markdown to plain text converter
Strip Markdown formatting from an AI answer or a README and keep the words.
A clear answer. Here’s how.
Works line by line. Fenced code blocks keep their contents and lose the fences; headings lose their # marks; setext underlines and horizontal rules are dropped; block-quote markers are removed; bullets and numbers are normalised; tables become one line per row; link reference definitions are removed. Inside lines, code spans, backslash escapes, images, links (inline, reference and automatic), bold, italic and strikethrough are unwrapped, HTML tags and comments are removed, <br> becomes a line break and HTML entities are decoded. Underscores inside words (snake_case) are left alone. It is a text-based converter, not a full CommonMark renderer, so unusual nesting or raw HTML can differ from what a renderer displays.
How this is checked
5 reference checks passed These 5 cases were run when this page was built, on 20 October 2026, and all reproduce within the stated tolerance. The same cases are part of the automated tests that run on every change to Toolmoz. Engine version 1.
See the checks and where each expected answer comes from
Case 1
- Inputs
- Markdown # Title Some **bold**, *italic* and `code` with a [link](https://example.com "tip"). Links textImages altBullet points dashTables tabs
- Expected, and what Toolmoz gave
- text expected Title Some bold, italic and code with a link. , Toolmoz Title Some bold, italic and code with a link.
- Where the expected answer comes from
- CommonMark: a heading, strong and emphasis, a code span and an inline link reduce to their text
- Allowed difference
- exact
Case 2
- Inputs
- Markdown Read [the docs](https://example.com/docs) and . Links urlImages altBullet points dashTables tabs
- Expected, and what Toolmoz gave
- text expected Read the docs (https://example.com/docs) and a cat. , Toolmoz Read the docs (https://example.com/docs) and a cat.
- Where the expected answer comes from
- A link shows its address after the text when asked, and an image shows its description
- Allowed difference
- exact
Case 3
- Inputs
- Markdown - one * two + three 1. first 2. second - [x] done - [ ] todo Links textImages altBullet points dotTables tabs
- Expected, and what Toolmoz gave
- text expected • one • two • three 1. first 2. second • [x] done • [ ] todo , Toolmoz • one • two • three 1. first 2. second • [x] done • [ ] todo
- Where the expected answer comes from
- Bullet markers become dots, numbered lists keep their numbers and task boxes are kept
- Allowed difference
- exact
Case 4
- Inputs
- Markdown ```js const a = 1 * 2 * 3; ``` snake_case_word and 2 * 3 * 4 stay. Links textImages altBullet points dashTables tabs
- Expected, and what Toolmoz gave
- text expected const a = 1 * 2 * 3; snake_case_word and 2 * 3 * 4 stay. , Toolmoz const a = 1 * 2 * 3; snake_case_word and 2 * 3 * 4 stay.
- Where the expected answer comes from
- Code fences keep their contents untouched, underscores inside a word and asterisks with spaces are not emphasis (CommonMark rules)
- Allowed difference
- exact
Case 5
- Inputs
- Markdown | Name | Qty | | --- | ---: | | Tea | 2 | | **Milk** | 1 | Links textImages altBullet points dashTables pipes
- Expected, and what Toolmoz gave
- text expected Name | Qty Tea | 2 Milk | 1 , Toolmoz Name | Qty Tea | 2 Milk | 1
- Where the expected answer comes from
- The delimiter row is dropped and bold inside cells is unwrapped
- Allowed difference
- exact
What this shows: the engine reproduces independently worked values for these cases. It does not prove every possible input is right. To test an answer you were given, see how to check a number; to see what is and is not checked across Toolmoz, see the accuracy ledger.
See a worked example
Worked example
A fixed demonstration, separate from the values you enter above.
- Markdown
# Plan A **short** list with a [link](https://example.com): - first item - second *item* with `code` > quoted advice | Name | Qty | | --- | --- | | Tea | 2 |
- Links
- Keep the link text only
- Images
- Keep the description
- Bullet points
- Use a dash
- Tables
- Cells separated by tabs
Example result
- Words
- 21
- Characters
- 101
- Lines
- 11
Removes the common Markdown formatting: headings, emphasis, links, images, code fences and inline code, list markers, block quotes, tables, horizontal rules and simple HTML. It is a text-based converter, not a full CommonMark renderer, so unusual nesting or raw HTML can differ from what a renderer shows.