HTML is built for browsers, not for people editing text. A blog post exported from WordPress or a page copied from a help centre arrives wrapped in divs, spans, classes and inline styles. Converting it to Markdown strips that noise and leaves the content: headings, paragraphs, lists, links, images, quotes, code and tables in a format you can read and edit in any text editor.
Paste markup into the HTML box and the Markdown appears beside it immediately, updating as you edit or change a setting. Everything runs inside this page, so the HTML you paste, including internal pages or unpublished drafts, is never sent anywhere.
How HTML maps to Markdown
Each HTML element with a Markdown equivalent is translated: h1 to h6 become headings, p becomes a paragraph, strong and b become **bold**, em and i become _italic_, a becomes [text](url), img becomes , blockquote gets > markers, ul and ol become lists with nesting preserved, and pre blocks become code blocks. Layout wrappers such as div, span and section have no Markdown form, so they disappear and leave their text behind.
Some elements are removed together with their content because they are not part of the text: script, style, noscript, template, iframe, object, embed and the document head with its title. That means you can paste a whole saved page, not just a fragment, without CSS rules or tracking code appearing in the result. Navigation menus and footers are ordinary content, though, so they are converted along with the article.
When to convert HTML to Markdown
Moving a site to a static site generator
When a blog leaves WordPress or another CMS for Hugo, Astro, Jekyll or Eleventy, each post's HTML body has to become a .md file. Converting here keeps the links, images and headings in place so only the front matter needs to be added.
Saving articles into notes
Obsidian, Notion imports, Joplin and plain-text note systems store Markdown. Paste the HTML of an article or documentation page and keep a clean, searchable copy with working links.
Preparing web content for AI tools
Language models and retrieval pipelines read Markdown more efficiently than HTML: the same page is typically much shorter once tags and attributes are gone, which leaves more room in a prompt for the text that matters. The Size change counter shows the difference.
The style options
Headings can use # Hashes (ATX style, the common choice) or Underlined (Setext style), which writes level 1 and 2 headings with a line of = or - under them; deeper levels always use hashes, because Setext has no form for them. Bullets sets the list marker to -, * or +. Code blocks can be Fenced with ``` lines, which most renderers and editors prefer, or Indented by four spaces, the original Markdown style.
GitHub tables and task lists, on by default, writes HTML tables as pipe tables, strikethrough as ~~text~~ and checkbox list items as - [ ] or - [x]. The first row of a table becomes its header, because a Markdown table needs one. Switch it off for strict original Markdown: tables then stay as HTML inside the output, which most Markdown processors pass through untouched. Keep images, also on, writes images with their original address; turn it off to drop them. The conversion itself uses Turndown, which reads the HTML as an inert document, so nothing in it runs or loads.
Como usar esta ferramenta
- Paste HTML into the HTML box, or press Sample to try an example.
- Pick the Headings, Bullets and Code blocks styles you want.
- Leave GitHub tables and task lists and Keep images on, or switch them off.
- Press Copy to copy the Markdown, or Download to save it as document.md.
Limitations
- There is no file or URL input: paste markup copied from a page's source, an editor's HTML view or a saved .html file opened in a text editor.
- Merged cells (colspan and rowspan) cannot be expressed in a pipe table, so complex tables lose their structure.
- Images keep the address they had in the HTML. Relative paths such as /images/photo.jpg only work where those files exist.
- Colours, fonts, alignment and other CSS styling have no Markdown equivalent and are lost.
- Navigation, sidebars and footers are converted like any other content; paste only the part of the page you need.