Markdown has become the house format for documentation, README files, knowledge bases and note apps such as Obsidian, while many drafts still start life in Word. Retyping a twenty-page specification is not an option, and copy and paste loses the headings. This tool reads a .docx file and writes the equivalent Markdown: # for headings, - for bullets, numbers for ordered lists and pipe tables for tables.
Convert one document or a batch; each produces its own .md file named after the original. The work is done locally in your browser, so internal specifications and unpublished manuscripts are never copied to a server.
From Word structure to Markdown syntax
Markdown describes structure, not appearance, which makes it a good match for well-structured Word documents. Paragraphs in the Heading 1 to Heading 6 styles become # to ###### headings. Bulleted and numbered lists become Markdown lists, with nested items indented under their parent. Bold is written as **bold**, italic as _italic_ and strikethrough as ~~struck~~. Hyperlinks become [text](address), and footnote markers turn into links to a numbered list of the notes at the end of the file.
Tables are written as GitHub-style pipe tables. Markdown tables always have a header row, so the first row of every Word table is used as the header, and the bold that Word often puts on header cells is removed because the header is shown bold anyway. Line breaks inside a cell are replaced by spaces and any pipe character in the text is escaped, so the table does not break apart. Fonts, colours, underline, page layout, headers, footers and comments do not exist in Markdown and are dropped.
Where Word to Markdown helps
Moving documentation into a repository
Design documents, runbooks and onboarding guides written in Word can be committed next to the code. In Markdown, every change shows up as a readable line diff in a pull request instead of a binary file change.
Static sites and documentation generators
Hugo, Jekyll, Docusaurus, MkDocs and similar tools build pages from .md files. Converting the source documents is the first step to publishing them as a site with search and navigation.
Note apps and personal knowledge bases
Obsidian, Logseq, Joplin and many other note apps store notes as Markdown. Bringing old Word notes across keeps their headings and lists, so outlines and backlinks work straight away.
How the conversion works
The document is first turned into HTML by mammoth in a Web Worker, cleaned with DOMPurify, and then rewritten as Markdown by Turndown with rules tuned for GitHub-flavoured Markdown: hash headings, hyphen bullets, fenced code blocks, pipe tables and double-tilde strikethrough. The file ends with a single newline and is saved as UTF-8, so non-Latin scripts and emoji come through intact.
Images are left out by default, because Markdown normally points to image files rather than containing them. Turn on Keep images (embedded in the file) and each picture is written inline as , a base64 data URL. That keeps everything in one file but makes it much larger and harder to read in an editor, and some Markdown viewers refuse to display data URLs. For a repository, it is usually better to export the pictures separately and link them.
Как пользоваться инструментом
- Drop one or more .docx files on the box above, or click Choose files. Each can be up to 50 MB.
- Decide whether to turn on Keep images (embedded in the file). It is off by default.
- Press Convert and wait for each file to show Done.
- Download the .md files one by one, or press Download all (.zip).
Limitations
- Only .docx files are accepted. Old .doc files and password-protected documents are refused with a message.
- Headings are detected through Word's heading styles. Titles that were only enlarged and bolded by hand become bold paragraphs.
- Merged cells and multi-paragraph cells cannot be expressed in a pipe table, so complex tables are simplified.
- Charts, shapes, text effects and equations have no Markdown equivalent and are not converted.
- Code typed in Word is not recognised as a code block unless it is marked up as such, so it usually comes out as normal paragraphs.