Markdown to Word Converter

Convert Markdown to a Word .docx in your browser. Headings use Word heading styles, lists are real Word lists, and tables, footnotes and task lists survive.

  • Runs in your browser
  • No network use by default; with Embed web images on, export downloads the images
  • Free · No Sign-Up
Leave it empty to name the file after the first heading, or document when the text has no heading. The characters \ / : * ? " < > | are removed and the name is cut at 80 characters. The name is also stored as the document title.
Pick a .md, .markdown, .mdown, .mkd or .txt file. It is read in this browser as UTF-8 text and replaces what is in the editor. A file that is not UTF-8 (GBK, Shift_JIS, UTF-16) or not text at all is refused with the byte where the problem starts, and the editor stays as it was. If the file name box is empty, it takes the name of the file.
Page size of the .docx, portrait with 2.54 cm (1 inch) margins. This page preselects Letter when the browser region is the US, Canada, Mexico or another Letter country, and A4 otherwise. The font Word uses for Chinese, Japanese and Korean characters, and the proofing language set for them. Latin text is Calibri and code is Consolas whichever you pick, so the choice shows only when the text has such characters. Off by default: export sends no network request and http(s) images become links. When it is on, export downloads each http(s) image from its URL, without cookies or a referrer, and the image host sees your IP address. An image that fails to load or takes longer than 15 seconds stays a link. data: images are embedded either way. The setting is remembered in this browser until you press Clear.

Read as CommonMark with the GitHub extensions: tables, task lists, strikethrough, autolinks and footnotes. YAML front matter at the top is left out. Raw HTML tags are removed and their text kept. The preview updates 0.2 seconds after you stop typing, or 0.8 seconds when the text is longer than 200,000 characters. Ctrl+Enter (⌘+Enter on a Mac) downloads the file.
Preview
An HTML rendering of the parsed Markdown, for checking the structure before you download. It does not apply the paper size or the CJK font. http(s) images appear as a placeholder with their address and are not loaded; data: images are shown.

Your Markdown is converted in this browser and is not uploaded. Nothing is sent over the network unless you turn on Embed web images.

Examples, details and FAQ Worked examples, how it compares with other tools, and answers to common questions.

What each Markdown element becomes

The parser follows CommonMark 0.31.2 and the GitHub Flavored Markdown extensions (tables, task lists, strikethrough, autolinks, footnotes). The output uses named Word styles, so you can restyle the whole document from the Styles pane.

MarkdownIn the .docx
# to ######Heading 1–6 with outline levels 0–5, “keep with next” on
-, 1. listsWord bullets and numbering. Each ordered list restarts; a list that starts at 5. starts at 5
- [ ] / - [x]Checkbox content control you can click in Word
GFM tableWord table with borders, a header row that repeats on every page, and the column alignment from :--, :-:, --:
Fenced codeOne “Source Code” paragraph per line: Consolas, gray background, spaces and tabs kept, spell check off
Inline code”Verbatim Char” character style
> quote”Quote” style with a left border; nested quotes indent further
[text](url), bare URLsClickable hyperlinks. javascript: and relative links stay as text
![alt](url)data: images: embedded picture, scaled down to the text width, alt text stored as the image description. http(s) images: a link, or an embedded picture if Embed web images is on
[^1]Real Word footnote at the bottom of the page
---Paragraph with a bottom border

Example: a weekly report

The sample in the editor is a short status report. Exported on 2026-09-30 and read back from word/document.xml:

  • “Done” and “Next” are <w:pStyle w:val="Heading2"/>, so they show up in Word’s Navigation pane.
  • The two ordered items carry <w:numPr> with the same numId. The number is generated by Word, not typed, so inserting an item renumbers the list.
  • The nested “3 attempts…” bullet is level 1 of the bullet list.
  • The table header row has <w:tblHeader/>; the “Before” and “After” columns are right-aligned (<w:jc w:val="right"/>) because the separator row is -------:.
  • The two task items are w14:checkbox controls, one checked and one not.
  • The [^1] note is in word/footnotes.xml, and Word numbers it.

Example: images

With Embed web images off (the default), every http(s) image becomes a link labelled with its alt text, and no request leaves the browser. With it on, your browser downloads the images at export time, which works only if the server allows cross-origin requests (CORS). In our test on 2026-09-30, with the switch on:

![Markdown logo](https://raw.githubusercontent.com/github/explore/main/topics/markdown/markdown.png)
![No CORS](https://www.baidu.com/img/flexible/logo/pc/result.png)
![local](./img/a.png)

The status line read “1 image(s) embedded · 2 image(s) could not be loaded and were kept as links”. With the switch off, the same file gave three links and the browser’s network log showed no image request. The GitHub image (sent with Access-Control-Allow-Origin: *) was embedded as a 288 × 288 px PNG. The second server sends no such header, so the image became a link labelled [No CORS] pointing to its address. The relative path cannot be resolved from a web page and became the text [local]. Images written as data: URIs are embedded in both states, without any request. SVG and WebP images are redrawn as PNG before they are embedded.

How it compares with other online converters

On 2026-09-30 we exported the same test file from markdowntoword.io, the first result for “markdown to word” in Google in the US, and for the Chinese, Japanese and Korean queries we checked, and from mdtoword.org, which appeared in the Chinese and Japanese results. Then we read each document.xml:

TestZeroToolmarkdowntoword.iomdtoword.org
Ordered listWord numberingTyped “1.” textWord numbering
Task listCheckbox, state keptPlain bullet, [x] state lostPlain bullet, state lost
Table column alignmentKeptAll leftNot set
FootnoteWord footnotePlain paragraph^1 text, note dropped
LinksClickableNot clickableClickable
Heading outline levelSetNot setNot set
Image that is not embeddedLink with alt text”[图片未能加载: …]” textRemoved
<script> in the MarkdownDroppedCopied as textIts code copied as text
**注意:**这里 (bold before Chinese text)Bold** left in** left in

The last row matters for Chinese, Japanese and Korean. Under CommonMark’s flanking rules, a closing ** preceded by punctuation such as : and followed by a letter does not close the bold. This tool adds the CJK-friendly emphasis extension, so text copied from AI chat answers keeps its bold labels.

If you need a company template, equations or a batch job, pandoc with --reference-doc is the better tool; it runs on your computer and needs no upload either.

Limits

  • No table of contents is inserted. Insert one in Word with References > Table of Contents (Microsoft’s steps); it picks up the Heading 1–3 paragraphs.
  • No LaTeX math, Mermaid, syntax colors in code, headers, footers or page numbers.
  • Raw HTML is not rendered. Tags are removed and their text kept; <br> becomes a line break; <script>, <style> and comments are dropped.
  • YAML front matter between --- lines at the top of the file is not exported.
  • Open .md reads UTF-8 text only. A file saved as GBK, Shift_JIS, EUC-KR or UTF-16, or a file that is not text, is not opened: the status line names the byte where the problem starts and the editor keeps its text. For example, # 中文 saved as GBK stops at byte 2 (counting from 0). Re-save such a file as UTF-8 first.
  • Paper is A4 or Letter, portrait, with 2.54 cm (1 inch) margins. Images are scaled to at most the text width (about 16 cm on A4); redrawn SVG and WebP images are capped at 4,096 px per side.
  • File names lose the characters \ / : * ? " < > | and are cut at 80 characters.
  • A 12,000-line test file (167,559 characters) was parsed, built and packed in about 1 second on an Apple M1 Max.

To check how Markdown renders before exporting, use the Markdown Preview. To go the other way, from a web page to Markdown, use HTML to Markdown.

FAQ

Is my Markdown uploaded?

No. The Markdown is parsed and the .docx is built in your browser, and by default the export sends no network request at all. Only if you check Embed web images does the browser download the http(s) images in your Markdown from their URLs, so they can be embedded; the image host then sees your IP address.

Can I add a table of contents in Word?

Yes. Every Markdown heading becomes a Word Heading 1–6 paragraph with an outline level, so Word's References > Table of Contents builds the list from them, and the headings appear in the Navigation pane.

Why did an image turn into a link?

Either Embed web images is off (the default), so http(s) images are never downloaded, or the switch is on and the browser could not download the image: the server does not allow cross-origin requests (no Access-Control-Allow-Origin header), the address is relative or a local file path, or the request took longer than 15 seconds. The link keeps the alt text and address so you can insert the picture in Word yourself.

Can I use my own Word template?

Not in this tool. The file uses fixed styles (Calibri 11 pt body, bold headings, a Source Code style and a Quote style). Change them once in Word under Home > Styles and every paragraph with that style follows. For a company template, use pandoc with --reference-doc.

Are LaTeX math and Mermaid diagrams converted?

No. $...$ math stays as plain text and a mermaid code block stays as a code block. If you need equations in Word, use pandoc, which writes Word equations.