# Project Charter
Prepared by the **Platform** team for *FY26* planning.
## Scope
- Migrate billing to the new ledger
- Retire the legacy export job
| Milestone | Owner | Date |
|---|---|---|
| Design sign-off | Ana | Mar 14 |
| Beta | Wen | May 2 |

Word to Markdown converter
Drop a .docx, get clean Markdown. Heading styles become #, tables become pipe tables, images are extracted. Free, and the file never leaves your browser.
Drop the .docx
Drag a Word file onto the box, or select text in Word, copy it, and paste. Both paths work offline.
Review the Markdown
The right pane shows the exact .md text. Switch heading style, bullet character or how merged cells are written.
Download .md
Save the file or copy it straight into Obsidian, GitHub, Notion or a static-site repo.
How a .docx turns into Markdown
A Word file is a zip archive. Inside it, word/document.xml holds the paragraphs, word/styles.xml defines the named styles, word/numbering.xml describes every list, and word/media/ contains the pictures. A Word to Markdown converter has to read all four and decide, for every paragraph, which Markdown construct comes closest. Here is how MDtoDOCX makes those decisions, so you know what to expect before you download.
Heading styles map to #, not font size
Each paragraph carries a style id. Title and Heading 1 become #, Heading 2 becomes ##, and so on through Heading 6. Heading 7 to 9 are flattened to ###### because Markdown stops there. A paragraph in the Normal style that merely looks like a heading, say 16-point bold on its own line, is exported as a bold paragraph, because that is what it is in Word. If your document was formatted by hand, turn on Detect visual headings and single-line bold paragraphs larger than the body text are promoted to the nearest heading level.
Runs are merged before formatting is written
Word splits text into runs whenever spell-check, a font change or a revision boundary occurred, so one bold word can be stored as three runs. A naive converter writes **Pro****ject**. MDtoDOCX merges adjacent runs with identical formatting first, then emits **bold**, *italic* and ~~strikethrough~~ once per span. Underline has no Markdown equivalent and is dropped. Superscript footnote references become [^1] with the footnote body appended at the end of the file.
Lists are resolved through numbering.xml
List paragraphs do not contain bullets or numbers. They point at a numbering definition and a level. MDtoDOCX resolves each pointer, writes - for bullet levels and 1. for decimal levels, and indents nested items by two spaces per level as GitHub Flavored Markdown expects. Lists that restart in Word restart in the Markdown.
Merged table cells
Pipe tables cannot express a cell that spans two columns or two rows. For a horizontal merge (gridSpan) MDtoDOCX writes the value in the first column and leaves the spanned columns empty, so the table still lines up. For a vertical merge (vMerge) the value appears in the first row and continuation rows get an empty cell. If a table contains a nested table or a cell with several paragraphs, the pipe form would lose content, so the converter emits an HTML <table> for that table only. You can force this behaviour for every table with the Merged cells option.
Images are extracted, not lost
Pictures live in word/media/ as PNG, JPEG or, for older clip-art and charts, EMF and WMF. MDtoDOCX extracts each one, names it image1.png, image2.png in document order, and writes  using the alt text Word stored on the picture. EMF and WMF are rasterised to PNG because almost no Markdown viewer renders them. The free download gives you the .md with these references. Pro bundles the .md and the images/ folder into a single .zip so the links resolve the moment you unpack it.
Pasting from Word
When you copy from Word, the clipboard carries HTML with mso- style hints. MDtoDOCX reads the mso-style-name on each paragraph, so a pasted Heading 2 still becomes ##, and then runs the same pipeline as the HTML to Markdown converter. Pasting is the fastest way to convert a section of a long document without exporting the whole file.
Tracked changes and comments
Insertions that are still tracked are kept, deletions are removed, as if you had accepted all changes. Comments are dropped, since Markdown has nowhere to put them. Hyperlinks are resolved through the relationships file and written as [text](url). All of this happens in JavaScript in your browser; the .docx is unzipped in memory and never uploaded, which is why a 60-page report converts in under two seconds.
MDtoDOCX vs Pandoc vs copy-paste
| What matters | MDtoDOCX | Pandoc | Copy into a Markdown editor |
|---|---|---|---|
Heading styles to # | Yes, Title and Heading 1–6 | Yes | No, headings arrive as plain text |
| Split runs merged | Yes | Yes | n/a, formatting is lost |
| Merged table cells | Blank-cell pipe table or HTML, your choice | Falls back to grid table | Tabs and spaces |
| Images | Extracted to images/, EMF rasterised | Extracted with --extract-media | Lost |
| Footnotes | [^1] | [^1] | Lost |
| Paste a section instead of a file | Yes | No | Yes |
| Install anything | No | Yes | No |
| Privacy | Local, nothing uploaded | Local | Local |