How to export board report markdown to word .docx
- Step 1Combine sections into one report file — If each department drafts its own section, merge them with md-merger into a single report before converting — md-to-docx takes one file per run.
- Step 2Regenerate the ToC anchors — Refresh in-document section links with md-toc-generator so navigation is consistent before export (Word's own ToC also picks up the heading styles).
- Step 3Paste or upload the report Markdown — Use Upload for the full
.mdpack. The file is read locally — financial data stays on your machine. - Step 4Click Run to build the .docx — docx.js writes built-in heading styles and native KPI tables in one fixed pass — no prompts.
- Step 5Open in Word and attach the board template — Attach your corporate/board template; because headings use built-in style names, the whole report restyles at once.
- Step 6Add charts and insert a live ToC — Paste chart images where the alt text appears, then References → Table of Contents for an auto-updating ToC.
What survives the conversion
Every Markdown construct mapped to what md-to-docx actually writes into the .docx. Built with marked (tokenizer) + docx.js (document builder), both running in your browser. There are no conversion options — the mapping below is fixed.
| Markdown | In the .docx | Notes |
|---|---|---|
# H1 … ###### H6 | Word's built-in Heading 1–6 styles | Depths past 6 (#######) clamp to Heading 6 |
**bold**, *italic*, ~~strike~~ | Bold, italic, strikethrough runs | Combine freely in body paragraphs and headings |
inline code | Courier New run at 9pt | No background shading or colour — just the monospace font |
Fenced ``` ``` blocks | One Courier New 9pt paragraph per line | No syntax highlighting (Word has no native code highlighter) |
> blockquote | Italic paragraph indented 0.5" (grey 666666) | Indent is fixed at 720 twips |
[text](url) | Blue (0563C1) underlined hyperlink | Real clickable link, not just styled text |
GFM | table | | Native Word table, bold header row, 1pt borders | Columns share a 9000-twip width evenly; cells are plain text |
- item / 1. item | Word bullet / decimal-numbered list | Top level only — see nesting note below |
--- (horizontal rule) | Paragraph with a bottom border | Acts as a thin grey divider line |
 | The alt text as plain text | No image is embedded — see the images edge case |
Tier limits for the Markdown family
md-to-docx counts as a Markdown-family tool. Two independent limits apply: total file size in bytes AND a character count (charLimit). The converter accepts a single file per run (no batch).
| Plan | Max file size | Max characters | Files per run |
|---|---|---|---|
| Free | 1 MB | 500,000 | 1 |
| Pro | 10 MB | 5,000,000 | 10 (family) — md-to-docx still takes 1 at a time |
| Pro-media | 50 MB | 20,000,000 | 50 (family) — md-to-docx still takes 1 at a time |
| Developer | 500 MB | Unlimited | Unlimited (family) — md-to-docx still takes 1 at a time |
Board-pack elements: Markdown to Word
What each board-report element becomes, and the manual steps a report owner should expect.
| Report element | Markdown | In the .docx |
|---|---|---|
| KPI / variance table | GFM | metric | Q3 | Q4 | | Native Word table, bold header, 1pt borders |
| Section headings | #–###### | Heading 1–6 (Navigation Pane + ToC ready) |
| Red-flag figure | **-12% YoY** | Bold run |
| CEO commentary callout | > quote | Italic indented paragraph |
| Trend chart |  | Alt text only — paste the chart in Word |
| Action items | - [ ] follow up | Plain bullet — checkbox state is dropped |
Cookbook
Board-report fragments and what lands in the .docx. Figures are illustrative.
Quarterly KPI table becomes a Word table
A GFM metrics table converts to a native bordered Word table directors can annotate.
Markdown: | Metric | Q3 | Q4 | YoY | |---------------|-------|-------|-------| | Revenue (£m) | 12.4 | 14.1 | +9% | | Net margin | 18% | 21% | +3pt | In the .docx: [ Word table, bold header: Metric | Q3 | Q4 | YoY ] 1pt borders, body cells plain text.
Section outline for a long pack
Heading levels drive the Navigation Pane so the company secretary can jump to any section.
Markdown: # Q4 Board Report ## 1. CEO Summary ## 2. Financials ### 2.1 P&L ### 2.2 Cash Flow ## 3. Risks In Word: Heading 1/2/3 styles -> Navigation Pane, References -> Table of Contents builds automatically.
Red-flag figures stay bold
Bold survives so variances and risk figures stand out.
Markdown:
Churn rose to **6.2%**, above the **5% threshold**.
In the .docx:
Churn rose to 6.2%, above the 5% threshold.
^^^^ ^^^^^^^^^^^^^ bold runsCharts must be pasted in Word
Chart image references render as alt text; insert the real chart after conversion.
Markdown:  In the .docx: Revenue trend Q1-Q4 <- alt text only, no image Next step: in Word, place cursor here -> Insert -> Pictures (or paste the chart from Excel/PowerPoint).
One report from many department drafts
Merge department sections before converting to a single board .docx.
Workflow:
1. md-merger: sales.md + finance.md + ops.md + risk.md
-> q4-board.md
2. md-to-docx: q4-board.md -> q4-board.docx
3. Word: attach board template, paste charts, insert ToCEdge cases and what actually happens
Charts and graphs are not embedded
By designMarkdown has no chart syntax, and image references () render only as alt text — no picture is placed in the .docx. Export charts from Excel/PowerPoint and paste or insert them in Word after conversion, at the spot where the alt text appears.
Task-list checkboxes disappear
Watch outGFM task items (- [ ] todo, - [x] done) convert to ordinary Word bullets — the [ ]/[x] checkbox marker is dropped and the checked/unchecked state is not represented. The item text is preserved. If the checkbox state matters, spell it out in the text (for example prefix with DONE: / TODO:) before converting.
Deeply nested lists don't get separate Word sub-levels
By designThe converter emits Word list paragraphs for top-level items only — bullets for -/* lists, decimal numbers for 1. lists. A nested list under an item is folded into that item's text run rather than written as an indented Word sub-level. The bullet/number markers still read clearly, but you won't get true multi-level outline numbering automatically. If you need precise sub-level numbering, flatten the list to one level in Markdown first, or apply Word's list styles after opening the file.
Bold/links inside a table cell render as plain text
Preserved as textGFM tables convert to real Word tables with a bold header row and 1pt borders, but cell contents are written as plain text. **bold**, [links](url), and ` code ` inside a cell keep their literal Markdown characters rather than becoming formatted runs. Keep table cells to plain values; put rich formatting in the surrounding body paragraphs, or style the cells in Word afterward.
Images are not embedded in the .docx
By design does not place a picture in the Word file. An inline image renders its alt text as plain text; a standalone image line renders as text too. No binary image data is fetched or embedded. After converting, insert images in Word via Insert → Pictures, or export your figures separately and add them where the alt text appears.
Only one file converts per run
By designmd-to-docx takes a single Markdown source — paste it or upload one .md/.markdown/.mdx/.txt file. It does not merge multiple files into one Word document. To assemble several Markdown sections into one document, combine them first with md-merger, then run the merged file through md-to-docx.
YAML frontmatter is treated as document content
Watch outA --- delimited YAML frontmatter block at the top of the file is not stripped for this converter — marked sees the opening --- as a horizontal rule and the key/value lines as a paragraph, so your metadata can appear as visible text plus a divider line in the Word output. Remove frontmatter before converting, or build/clean it with md-frontmatter-builder and delete it before export.
Heading depth past level 6
Clamped to Heading 6Markdown allows ####### (seven hashes) but Word only has Heading 1 through Heading 6. Any heading deeper than six maps to Heading 6 rather than being dropped. If your document relies on a seventh level, restructure the outline or shift it up with md-heading-shifter before converting so the hierarchy reads correctly in Word's Navigation Pane.
Financial figures and uploads
Stays localRevenue, headcount, and M&A commentary never leave your machine — marked and docx.js run in the browser. The only server-side record for signed-in users is a usage counter (that a conversion ran), with no report content. Safe for pre-announcement financials.
Frequently asked questions
Do my Markdown tables become real Word tables?
Yes — GFM pipe tables (| col | col |) become native Word table objects with a bold header row and 1pt borders, not images or tab-separated text. Columns share the page width evenly. Cell contents are written as plain text, so put any bold/links in surrounding paragraphs. If your source tables are misaligned, fix them with md-table-repair first.
Can I add charts?
Not automatically — Markdown has no native chart syntax and image references render as alt text only. Export charts as images from Excel/PowerPoint and paste or insert them in Word after conversion where the alt text appears.
How do I keep my company branding?
Apply your corporate Word template after conversion. Headings use Word's built-in style names, so attaching the template restyles every section's fonts, colours, and spacing in one step.
Will Word's Navigation Pane and outline view work?
Yes. Headings map to Word's built-in Heading 1–6 styles, so the Navigation Pane, outline view, and an inserted Table of Contents all pick them up automatically. After conversion you can add a ToC via References → Table of Contents and it will read the heading levels directly.
Will an inserted Table of Contents update?
Yes. Insert a Word ToC via References → Table of Contents after conversion — it reads the built-in heading styles and refreshes with right-click → Update Field. For consistent in-document anchor links, run md-toc-generator on the source first.
Does my document get uploaded to a server?
No. The whole conversion runs in your browser — marked tokenizes the Markdown and docx.js assembles the .docx locally. The file content never leaves your machine, so confidential drafts stay private. The only thing recorded server-side for signed-in users is a usage counter (that a conversion ran, not its contents).
Are numbered and bulleted lists preserved?
Top-level lists are: -/* become Word bullets and 1. lists become decimal-numbered Word lists. Nested sub-lists are folded into the parent item's text rather than getting their own indented Word sub-level. For deep multi-level numbering, flatten the list in Markdown or apply Word's multilevel list style after conversion.
Can I apply my own corporate or template styles afterward?
Yes. Because headings use Word's standard built-in style names (Heading 1, Heading 2, …) rather than ad-hoc formatting, attaching a company template or changing the theme restyles the whole document at once. Open the .docx, then Design → Themes or attach your template via the Developer → Document Template dialog.
What formatting options can I set before converting?
None — md-to-docx has no options panel. It uses a fixed, opinionated mapping (built-in heading styles, Courier New for code, blue underlined links, bordered tables). To change structure before converting, use the editing tools first: md-prettifier to normalize spacing, md-heading-shifter to fix the outline, or md-table-repair to align tables.
What is the output file named?
The downloaded Word file reuses the source name with the extension swapped to .docx — proposal.md becomes proposal.docx. If you pasted text instead of uploading a file, a default name is used. The document's internal title metadata is set from the filename, and the creator is recorded as "JAD Markdown".
Does the .docx open in LibreOffice and Google Docs?
Yes. docx.js writes a standards-compliant Office Open XML (.docx) file, so it opens in Microsoft Word, LibreOffice Writer, and Google Docs (via upload/import). Built-in heading styles and the table grid carry across all three; minor spacing differences between apps are normal.
Is there an API or command-line way to run this?
Not for the .docx output. The public API and MCP run the text-output Markdown tools server-side, but binary-output tools (md-to-docx, the md-to-pdf converters, md-splitter) return a 400 that points back to the web tool — Word generation only happens in the browser. For an automatable, text-only export use md-to-html or md-to-github-html and convert HTML to Word in your pipeline.
Privacy first
All Markdown processing runs locally in your browser using JavaScript. No file is ever uploaded to JAD Apps servers — only metadata counters are saved for signed-in dashboard stats.