Skip to content
FlipConverto home

HTML to Markdown Converter

Convert to Markdown from HTML, from rich text pasted out of Google Docs or Word, or from plain text. Headings, lists, links, code and tables come out as CommonMark with GFM tables.

Loading HTML to Markdown Converter…

Runs entirely in your browser. What you enter stays on your device — nothing is sent to a server. Verify it yourself

How do you convert HTML or a Google Doc to Markdown?

Map each element to its Markdown form — h2 to ##, strong to **, a to [text](url), li to - — and escape characters Markdown would misread. Here you paste HTML, or copy straight from Google Docs or Word, and get the Markdown back.

Cost
Free, no limits
Upload
None — runs on your device
Sign-up
Not required
Works offline
Yes, once loaded

How to convert HTML or a Google Doc to Markdown

  1. Choose the input

    Paste rich text for Google Docs, Word or a web page; HTML source for markup; Plain text for unformatted text.

  2. Paste

    Click the paste area and press Ctrl+V (⌘V on a Mac), or paste into the text box for the other two modes.

  3. Check the notes

    Anything that changed — embedded images left out, unsafe links kept as text — is listed above the result.

  4. Copy or download

    Copy the Markdown or download it as a .md file.

Examples

  • <h2>Plan</h2><p>Ship <strong>v2</strong> by <em>Friday</em>.</p>## Plan Ship **v2** by *Friday*.
  • <ul><li>One<ul><li>Sub-item</li></ul></li><li>Two</li></ul>- One - Sub-item - Two

    Nested lists are indented under their parent item.

  • <table><tr><th>Item</th><th align="right">Qty</th></tr><tr><td>Pens</td><td>4</td></tr></table>| Item | Qty | | --- | ---: | | Pens | 4 |

    Alignment comes from the align attribute or text-align style.

Key features of the HTML to Markdown Converter

  • Reads formatted text straight from the clipboard when you paste from Google Docs, Word or a web page
  • Headings, emphasis, strikethrough, links, images, block quotes and rules
  • Nested bulleted and numbered lists, including Word’s list paragraphs and task-list checkboxes
  • Fenced code blocks with the language kept from language- classes
  • GFM tables with alignment, escaped pipes and padded merged cells
  • Never inserts or runs pasted content; scripts and javascript: links are removed

What it converts

Input

  • Rich text from Google Docs
  • Rich text from Microsoft Word
  • Copied web pages
  • HTML source
  • Plain text

Output

  • CommonMark
  • GFM tables, task lists and strikethrough
  • .md download

When should you use this?

  • Moving a Google Doc or Word draft into a README, wiki, static site or Obsidian vault.
  • Turning a web page’s article HTML into Markdown for notes or documentation.
  • Cleaning text pasted from email into Markdown with proper lists.

Limitations

  • Colours, fonts, underline, text size and page layout have no Markdown equivalent and are dropped.
  • Images embedded in the pasted content, or pointing to temporary files on your computer as Word’s do, are left out; images with web addresses are kept.
  • Tables with merged cells are flattened: a column span becomes empty cells, a row span is not repeated.
  • Footnotes, comments and suggested edits from Google Docs or Word are not carried over.

Troubleshooting

The result has no headings or bold

The clipboard held plain text only — some apps and paste shortcuts drop formatting. Copy again from the original and paste with plain Ctrl+V or ⌘V.

A list comes out as separate paragraphs

The source wrote the bullets as text rather than as a list. Switch to the Plain text tab and paste: lines starting with • or 1. become list items.

Common mistakes to avoid

  • Pasting with Ctrl+Shift+V (paste as plain text) into the rich-text area. That strips the formatting before the tool sees it.
  • Pasting a document’s HTML source into the rich-text area. Use the HTML source tab for markup you have as text.

Pro tips

Tips for better results

  • Headings

    Use real heading styles, not big bold text

    Use heading styles (Heading 1, Heading 2) in Google Docs or Word rather than big bold text — only real headings become # headings.

  • Images

    Host embedded images and link to them

    Upload embedded images somewhere first and insert them as links if you need them in the Markdown.

  • Tables

    Preview GFM tables where you will publish

    Preview the result in the place you will publish it: GitHub, GitLab and Obsidian all read GFM tables, but some older renderers do not.

Three ways in

Paste rich text is for documents. Copy from Google Docs, Word or a web page and paste into the paste area: the tool reads the formatted (HTML) version of what you copied straight from the clipboard. The pasted content is never inserted into the page — it is parsed as an inert document, so scripts in it cannot run and images are not loaded. This is how to convert a Google Doc to Markdown without exporting it first.

HTML source takes markup you paste as text, such as a saved page or a CMS export. Plain text is for when you want to convert text to Markdown: blank lines separate paragraphs, lines that start with •, -, * or a number such as 1. become list items, and characters that Markdown would misread are escaped. Plain text carries no bold or headings, so there is nothing more to detect.

What is converted

  • Headings h1–h6 as # to ######, paragraphs, and line breaks as a backslash hard break.
  • Bold, italic and strikethrough — including Google Docs’ styled spans (font-weight 700, italic, line-through).
  • Links with their titles, bare URLs as autolinks, and images with alt text.
  • Bulleted and numbered lists, nested to any depth, with start numbers and task-list checkboxes.
  • Inline code and code blocks, fenced with backticks and labelled with the language from a language- class.
  • Block quotes, horizontal rules, and tables as GFM pipe tables with column alignment.

Google Docs and Word quirks

Google Docs wraps a whole paste in a <b> element styled as normal weight; the converter recognises it, so your document does not come out all bold. Docs marks bold and italic with styles on <span> elements rather than tags, and those are read too. Word writes its lists as paragraphs with a hidden bullet or number in front; they are rebuilt as real nested Markdown lists.

What is left out

Markdown has no colours, fonts, underline or merged table cells, so those are dropped (a cell spanning columns is padded with empty cells). Scripts, styles, frames, forms and media players are removed. Links to javascript: addresses become plain text. Images stored inside the HTML as data, or pointing to temporary files on your computer as Word’s do, are left out with a note, because a Markdown file cannot link to them.

Sources

Privacy

The HTML to Markdown Converter runs entirely in your browser. What you enter and the result it produces stay on your own device — nothing is sent anywhere, because nothing needs to be.

You can confirm this rather than take our word for it: open your browser’s developer tools, watch the Network tab, and use the tool. No request carries your input. It also keeps working with the connection off.

Details are in the privacy policy.

What next?

Check the length of the converted text.

Count the words

HTML to Markdown Converter — questions

How do I convert a Google Doc to Markdown?

Select the text in Google Docs, copy it, click the paste area on this page and paste. Headings, bold and italic, links, lists and tables come out as Markdown; download it as a .md file or copy it.

Can I convert a Word document to Markdown?

Yes, by copying from Word and pasting into the paste area. Formatting, lists (including nested ones) and tables are converted. Images inside the document are not: Word pastes them as embedded data or temporary files on your computer, which a Markdown file cannot link to.

Is pasting HTML here safe?

The pasted HTML is parsed as an inert document and only read: it is never inserted into the page, so scripts in it do not run and images are not fetched. Script and style elements are removed from the output.

Which Markdown flavour does it write?

CommonMark, plus GitHub Flavored Markdown pipe tables, task-list checkboxes and ~~strikethrough~~. GitHub, GitLab, Obsidian and most static-site generators read it.

Why are some characters preceded by a backslash?

They would otherwise be read as Markdown — a * as emphasis, a # at the start of a line as a heading, 1. as a list. The backslash keeps them as the text you wrote.

Part of Developer Tools · Browse every tool