Paste HTML and get clean Markdown: headings, links, lists, code blocks and tables. Scripts and styles are dropped.
An HTML to Markdown converter rewrites tags as Markdown marks: h1 to h6 become # to ######, strong and b become **bold**, em and i become *italic*, del and s become ~~strike~~, a becomes [text](url), img becomes , and p, br and hr become blank lines, hard breaks and ---. Lists keep their nesting and numbering, so ol start="3" gives 3. 4. and a list inside a list is indented under its parent. Inline code and pre with code become backticks and fenced blocks, and a class such as language-js on the code tag gives ```js. Blockquote lines start with >. Entities such as &, < and é are decoded, and absolute and relative link addresses are kept exactly as written.
A table becomes a GitHub-style table: the first row is the header, a row of --- follows it, and a pipe inside a cell is written \|. A cell with a colspan gets empty cells after it, rows with fewer cells are padded, and a list or line break inside a cell is flattened to one line, because this table form cannot hold more. Script, style, noscript, head and template elements and comments are always dropped with everything inside them. An image whose picture is stored inside the HTML (a data: address) is replaced by its alt text, because the address can be very long. A link whose address starts with javascript: keeps its text without the link. Turn on Drop navigation, header, footer, sidebar and forms to remove the nav, header, footer, aside and form elements and what is inside them.
Heading style offers # hashes or underlines; underlines only exist for h1 and h2, so h3 to h6 stay as hashes. Bullet character picks -, * or +. Link style picks [text](url) or reference links, where each link becomes [text][1] and the list of addresses is added at the end. An h2 reading Plan, a paragraph "See the docs." with a link to /docs, and a list of One and Two with Sub nested under Two is 107 characters of HTML and becomes 52 characters of Markdown: a ## Plan heading, the sentence with [the docs](/docs), and a list with Sub indented under Two. Escape Markdown characters writes a literal * or [ in the text as \* or \[ so it does not turn into formatting; turn it off if you want the text unchanged.
A web page or an email pasted into a chat tool or an agent is mostly tags. Converting it first keeps the headings, links and lists and removes the markup, so there is more room for the actual content. This converter reads the HTML as text and does not run any script, load any address or apply any CSS, so it cannot know what a page looks like: text hidden by CSS is still converted, and a page built by JavaScript in the browser has no content in its HTML to convert. It is not a sanitiser, so do not use its output as trusted HTML. Elements nested more than 100 levels deep are flattened and their text is kept, and input is limited to 1,000,000 characters.
Paste the HTML and copy the Markdown box. An h1 element reading Title becomes # Title, bold text becomes **x**, and a link with href="/p" becomes [link](/p). Lists, code blocks and tables are converted too.
Paste the table. The first row becomes the header, a row of --- is added under it, and every other row follows with its cells between pipes, such as | Free | 0 |. A pipe inside a cell is escaped, and a nested list or a line break in a cell is flattened to one line.
Script, style, noscript, head and template elements are always dropped, and so are comments. If you switched on Drop navigation, header, footer, sidebar and forms, those elements go too, including a header inside an article. Text that JavaScript adds after the page loads is not in the HTML you paste.
The tool reads it from the class on the code tag, or on the pre tag: language-js or lang-js gives a fence that starts with ```js. A block with no such class gets a plain ``` fence. If the code itself holds ```, the fence is made longer.
They are kept as written. href="/docs" stays (/docs) and src="img/a.png" stays (img/a.png), because the tool does not know the address of the page the HTML came from. Add the site address yourself if you need absolute links.
No. It is processed in your browser, in this tab, and no server receives it. Your choices are saved in this browser, the HTML is not.