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
Scan with WeChat to share this tool
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.
| Markdown | In the .docx |
|---|---|
# to ###### | Heading 1–6 with outline levels 0–5, “keep with next” on |
-, 1. lists | Word 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 table | Word table with borders, a header row that repeats on every page, and the column alignment from :--, :-:, --: |
| Fenced code | One “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 URLs | Clickable hyperlinks. javascript: and relative links stay as text |
 | 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 samenumId. 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:checkboxcontrols, one checked and one not. - The
[^1]note is inword/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:



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:
| Test | ZeroTool | markdowntoword.io | mdtoword.org |
|---|---|---|---|
| Ordered list | Word numbering | Typed “1.” text | Word numbering |
| Task list | Checkbox, state kept | Plain bullet, [x] state lost | Plain bullet, state lost |
| Table column alignment | Kept | All left | Not set |
| Footnote | Word footnote | Plain paragraph | ^1 text, note dropped |
| Links | Clickable | Not clickable | Clickable |
| Heading outline level | Set | Not set | Not set |
| Image that is not embedded | Link with alt text | ”[图片未能加载: …]” text | Removed |
<script> in the Markdown | Dropped | Copied as text | Its 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.