When you need HTML as Markdown
Markdown is the format most writing tools now share: GitHub READMEs, docs sites, static site generators like Astro and Hugo, Notion and Obsidian imports, and the prompts you paste into AI assistants. Moving a blog from WordPress, rescuing a page from an old CMS, or feeding a web page to an LLM all start with turning HTML into Markdown.
What gets converted
- Headings h1–h6 become # to ######.
- Emphasis: strong and b become
**bold**, em and i become*italic*, del and s become~~strikethrough~~. - Links and images keep their URL and title. Links where the text is the URL become autolinks.
- Lists keep nesting and the start number of ordered lists. Checkboxes become GFM task items.
- Code: inline code gets the right number of backticks; pre blocks become fenced code with the language from a
language-*class. - Blockquotes, including nested ones, horizontal rules and line breaks.
- Tables become GitHub-flavored Markdown tables, with column alignment and escaped pipes.
Scripts, styles, forms, iframes and other non-content elements are dropped. Text that would accidentally turn into Markdown, such as a line starting with "1." or "#", is escaped.
How it stays private
The HTML is parsed by your browser's own DOMParser into an inert document, so scripts in it never run and images never load. Nothing is uploaded.
Converting a live page
To convert a page by URL instead of pasting its source, use webpage to Markdown. To turn a spreadsheet into a Markdown table, use CSV to Markdown.