HTML to Markdown Converter

Convert HTML into clean Markdown in the browser. Useful for migrating content from CMSes, web pages, or HTML emails.

Private browser-side processing
Input HTMLHTML
Headings, lists, links, images, and tables are supported.
8 lines · 222 bytes
Output MarkdownMarkdown
No action has been run yet.
0 lines · 0 bytes

How FormatArc converts HTML to Markdown

Conversion details

FormatArc uses turndown configured with ATX headings (#), fenced code blocks (```), '-' bullet markers, '_' for emphasis, and '**' for strong. <h1> to <h6> map to # to ######, <strong> to **text**, <em> to _text_, <code> to inline backticks, <pre><code> to fenced blocks, <a href> to [text](url), and <img src alt> to ![alt](src). <table> elements convert to GFM pipe tables; cell newlines are collapsed to spaces and pipe characters ( | ) are escaped with a backslash.

Limitations

Table rowspan and colspan attributes are dropped — only the cell contents survive, and the structure is flattened. <script>, <style>, and <noscript> elements are removed entirely. Inline CSS (style attribute) is ignored. <iframe>, <embed>, and <video> remain as raw HTML in the output. URL fetch and file upload are not supported (CORS constraints); paste HTML directly into the input area.

Privacy & local processing

All HTML is converted to Markdown in your browser by static JavaScript. The HTML content is not uploaded to any server, and no signup or API key is required. FormatArc is built with Next.js static export, so this page ships only static HTML and client-side code.

Also available as CLI and Chrome extension

Need the same conversion in a build pipeline or terminal? FormatArc ships as a CLI on npm (npx formatarc html-to-md input.html). For browser-based formatting without leaving the active tab, FormatArc also has a Chrome extension that formats JSON and YAML in place. See the related articles below for details.

Related converters

Related articles