HTML to Markdown
Paste HTML, upload an .html file, or enter a URL and get clean Markdown back - headings, lists, tables, links, code blocks and emphasis intact, with the navigation, ads, cookie banners and scripts stripped out. Built for anyone who needs to convert a webpage to Markdown for ChatGPT, Claude or a RAG pipeline without burning the context window on markup.
Why HTML is such an expensive thing to paste into an AI
On a typical modern page, the readable words are a small fraction of the file. The rest is tags, class attributes, inline styles, SVG icon paths, JSON blobs and script tags - all of which cost tokens and none of which tell a language model anything useful. On the Wikipedia article for Markdown, for example, this converter turns roughly 78,000 tokens of raw HTML into under 9,000 tokens of Markdown that reads better.
Markdown keeps the part that matters. A ## is still a section boundary, a table is still a table with a header row, and a code block is still fenced - so the model can use the structure instead of having to infer it from <div> soup.
How the page chrome is removed
Before converting, the tool runs a readability-style pass. Script, style, iframe and form elements go first. Then anything that is structurally navigation - <nav>, <aside>, <footer>, ARIA roles such as navigation and contentinfo, and elements whose class or id marks them as a menu, sidebar, ad, cookie banner, newsletter box, share bar or comment section - is excluded. Finally it walks down from <body> to the tightest element that still holds nearly all of the page's prose, which lands on the article body. The tool then tells you exactly which blocks it dropped, and the whole pass can be switched off if you would rather convert the entire document.
Perguntas frequentes
Why convert a webpage to Markdown for ChatGPT or Claude?
Two reasons: cost and comprehension. Raw HTML is mostly markup, so pasting it wastes most of your context window on tags and class names - Markdown routinely says the same thing in a tenth of the tokens. And because Markdown keeps headings, lists and tables as real structure, the model can tell a section heading from body text and a table header from a data row, which raw text extraction throws away entirely.
Can it fetch a URL, or do I have to paste the HTML?
Both work. Switch to the URL tab, enter an address, and the page is fetched through this site - a browser cannot read another domain's HTML directly because of cross-origin rules, so a server step is unavoidable there. Scripts are stripped and relative links are made absolute before the HTML reaches the converter. Pasting HTML or uploading an .html file is handled entirely in your browser with nothing sent anywhere.
It only returned a little text from a URL. Why?
The page most likely builds its content with JavaScript, so the HTML the server sends is an empty shell that gets filled in later in a real browser. Nothing can be converted from a shell. The fix is to open the page yourself, save it (Ctrl+S / Cmd+S) as a complete HTML file, and upload that file instead - it contains the rendered content.
Does it handle tables, nested lists and code blocks?
Yes. Tables become GitHub-flavoured Markdown tables with a header row, and pipes inside a cell are escaped so the table does not break. Nested lists keep their nesting and their bullet or number style, including a numbered list inside a bulleted one. <pre><code> blocks become fenced code blocks, and the language is picked up from a class such as language-python. Inline code, bold, italic, strikethrough and blockquotes are all preserved.
What happens to images and links?
Links keep their URL as [text](url) by default, and there is a toggle to keep just the link text - on a link-heavy page such as a wiki article that alone can halve the token count. Images default to their alt text, because a chatbot cannot see the picture and the alt text is the part that carries meaning at a fraction of the cost of a URL. You can switch to standard  syntax or drop images entirely.
Is this good enough for a RAG pipeline?
Yes, that is one of the intended uses. Markdown headings give a chunker natural split points, so chunks follow real sections instead of cutting mid-paragraph, and the chrome removal means your index is not full of duplicated navigation menus and cookie notices. Convert the page, download the .md, and feed it to your ingestion step.
Is anything stored?
No. Pasted and uploaded HTML never leaves your browser. A URL you fetch passes through this site only to retrieve the HTML, which is handed straight back to your browser and not written down anywhere.