What this tool does
HTML goes in, Markdown comes out.
<h1>Title</h1>
<p>Some <strong>bold</strong> and a <a href="https://x.dev">link</a>.</p>
<ul><li>one</li><li>two</li></ul>
# Title
Some **bold** and a [link](https://x.dev).
* one
* two
Headings are ATX unless you ask for setext, bullets are * unless you ask for -, and a <pre><code class="language-js"> keeps its language on the fence.
A table stays a table
<table><tr><th>Name</th><th>Role</th></tr><tr><td>Ada</td><td>Author</td></tr></table>
| Name | Role |
| --- | --- |
| Ada | Author |
Turndown has no rule for <table>: until this page was written, a table came out as its cells, one line under the other, and nothing in the result said a grid had been there. That is the worst kind of defect — output that reads as if it were fine. The rule now writes a GFM table, and a table with no <th> takes its header from the first row, because GFM has no headerless table.
A script is not a paragraph
<p>Hello</p><script>alert(1)</script>
Hello
The body of a <script> is code the browser runs, not text it displays, and it was being copied into your document as prose. <style> did the same with CSS. Both are removed. Everything the page actually shows you is kept.
What a pipe table cannot hold
A GFM table is a grid of single-line cells, so four things are flattened rather than dropped:
colspanandrowspan. The cell keeps its own column and the rest of the span stays empty; the rows under arowspanshift one column to the left.- A table inside a cell. GFM has no nested tables, so the inner one is written inline in its cell, pipes escaped.
- Paragraphs and lists inside a cell. They are joined onto a single line.
<caption>. It has no place in a pipe table, so it becomes a paragraph just above it rather than disappearing.
Everything else — the order of the blocks, the text, the links — comes through as it was.
Private by design
Everything runs locally in your browser with JavaScript. Your data is never uploaded, which makes the tool safe for sensitive content, and it keeps working offline.