Skip to content
Markdown to Word

Markdown to Word · ChatGPT

Convert ChatGPT responses to Word

ChatGPT answers in Markdown, so pasting one into Word gives you literal ## and ** and a table made of pipe characters. Paste it here instead and get a real .docx — or copy formatted content straight into a document you already have open. Everything runs in this tab.

  • Fenced code inside numbered steps: the one thing that most often parses wrong.
  • Comparison tables become real Word tables, minus the <br> tags in the cells.
  • Answers usually start at ###, so promote the headings before you convert.
Untitled draft1.0 KB
1.0 KB
Preview

Quarterly Update

Paste anything here — this text is a placeholder. Nothing you type is uploaded.

What shipped

Workstream Owner Status
Billing migration Ada Done
Search reindex Grace In progress
Mobile onboarding Alan Blocked

Bold, italic, struck through and inline code all carry over into Word as real formatting, not as literal characters.

Next two weeks

Blockquotes become indented quote paragraphs.

export function total(items: readonly number[]): number {
  return items.reduce((sum, n) => sum + n, 0);
}

Footnotes become real Word footnotes.[1]

Maths (turn on “Equations”)

Inline E=mc2E = mc^2, and a display equation:

∫01x2 dx=13\int_{0}^{1} x^2 \, dx = \frac{1}{3}

Diagram (turn on “Diagrams”)

flowchart LR A[Markdown] --> B[Parse] B --> C[Render] C --> D[.docx]

  1. Numbered and positioned by Word itself, so they renumber when you edit. ↩︎

Word theme

EquationsTurns $…$ and $$…$$ into native Word equations you can edit in the equation editor. Loads an ~85 KB engine the first time.
DiagramsDraws mermaid fences and embeds them as pictures. Loads the mermaid engine the first time — 350–460 KB depending on the diagram type; fences you leave off stay as code blocks.
Fetch remote imagesOff: only data: and blob: images are embedded. With this off the converter makes no network requests, so nothing from your document leaves the tab.

Checking clipboard support…

The Markdown → OOXML converter behind this page is an open-source library called downword.

A ChatGPT-shaped answer to try

Copy this into the editor above and convert it. It has the four things a real answer usually has: a section that opens at ###, a fenced block indented inside a numbered step, a comparison table with a <br> in one cell, and maths written with LaTeX bracket delimiters. Three of the four come through cleanly, and the two that need a hand are obvious in the preview.

### Migrating the billing service

Here is the sequence I would follow.

1. Snapshot the production database first.

    ```bash
    pg_dump --format=custom billing > billing.dump
    ```

2. Point the new service at a read replica.
3. Cut traffic over during the Tuesday window.

| Option | Downtime | Rollback | Effort |
| --- | --- | --- | --- |
| Big bang | 45 min | Restore the dump<br>then replay the log | Low |
| Dual write | None | Flip the feature flag | High |

**Recommendation:** dual write. The expected error rate is \(p < 0.01\).

What a ChatGPT answer turns into

Everything below was checked against the converter this page runs, not against Markdown in general. “Check it” means the preview will show you the problem; “Fix it first” means it is faster to edit the Markdown than to repair the Word file.

In the sourceIn the .docxVerdict
### section headingsReal Heading 3 styles — correct, but an outline that starts at level three. Promote them to # and ## first if you want Word's navigation pane and a table of contents to make sense.Check it
Numbered stepsA real Word numbered list, provided every child block is indented to the item's content column. A flush-left fence ends the list and the next step restarts at 1.Check it
Fenced code blocksA shaded monospace block, one paragraph per line, no syntax colours — the converter is passed no highlighter. The language tag on the fence is read and then has nothing to do.Carries over
Pipe tablesA real Word table with a header row and borders. Inline bold, code spans and links inside cells survive. Pages are A4 portrait, so seven columns arrive cramped.Carries over
<br> inside a cellLiteral text. Raw HTML is escaped rather than interpreted, so the characters show up in the Word cell. The preview renders them, because a preview is a browser.Fix it first
$…$ and $$…$$Native, editable Word equations with the Equations toggle on — OMML, not a picture.Carries over
\(…\) and \[…\]Literal text. The equation reader takes dollar delimiters only, so the backslashes and brackets come through as characters.Fix it first
Curly quotes and dashesWhatever characters you pasted. The preview curls quotes and turns -- into a dash; the .docx does not, so the two can differ by a character or two.Check it

Getting the Markdown out of the chat intact

A ChatGPT answer never exists as a file, which is the first thing that separates this from converting a .md you already have. There are two ways to get it onto your clipboard and they do not produce the same thing. The copy button under a message copies the Markdown source — the ##, the pipes, the backticks. Dragging across the answer and pressing Ctrl+C copies the rendered HTML instead, and pasting that into Word brings the chat interface's fonts, its grey code panels and its link colours with it, which is usually the mess people are trying to escape in the first place. Use the message's copy button, then paste into the editor above. The left-hand pane should show plain text with visible Markdown syntax in it. If there are no # characters and no pipes, you copied the rendered version — go back and use the button.

Numbered steps with code blocks in them

ChatGPT's default shape for anything procedural is a numbered list with a fenced code block under each step, and that is the single most common thing that comes out wrong. CommonMark decides whether a fence belongs to a list item by its indentation: after a 1. marker the item's content starts three characters in, so the opening fence and its closing partner both have to be indented to stay inside step one. ChatGPT is inconsistent about this. When the fence lands flush left, the list ends there, the code becomes a top-level block, and the next step begins a brand-new list numbered from one. The preview above shows this happening, and it is worth a glance before you download, because in Word a list that restarts at 1 does not look like a parsing artefact — it looks like a mistake you made. The fix is to indent the fences to match the step, or to accept the break and renumber in Word. Both the preview and the .docx apply the same CommonMark rules, so the preview is trustworthy on this particular question.

The tables are usually the reason you are here

Comparison tables are what most people are trying to keep, and GitHub Flavored pipe tables become real Word tables: header row, borders, one cell per column, with bold text, code spans and links inside the cells intact. Two things are specific to ChatGPT. First, a pipe table cannot hold block content, so when the model wants a line break inside a cell it writes <br>. Raw HTML is escaped here rather than interpreted — a deliberate choice, since interpreting arbitrary HTML out of a pasted document is how converters grow security holes — which means those five characters appear in the finished Word cell as text. Search the editor for < before converting and replace each one with a space or a semicolon. Second, ChatGPT is fond of tables six and seven columns wide. The page is A4 portrait, so a table that wide arrives squeezed; in Word, click inside it and use Layout → Orientation → Landscape for that section, or delete the columns you did not need before you convert.

Answers that start at Heading 3

Because an answer is a reply inside a conversation rather than a document, ChatGPT usually opens its sections at ### and reserves # and ##for nothing at all. Headings here become Word's real Heading 1 to Heading 6 styles, so an answer converted as-is gives you a document whose outline begins at level three: Word's navigation pane shows everything indented under nothing, and References → Table of Contents produces a contents list that is three levels deep before it says anything. Promote them in the editor above before converting — turn each ### into ##, and add a # title line of your own at the top. It takes about ten seconds and it is the difference between a document with a usable outline and one that merely looks right on the first page.

Two notations for maths, one of them recognised

ChatGPT writes maths in two notations depending on how the question was asked: dollar delimiters, $…$ and $$…$$, or LaTeX's \(…\) and \[…\]. The Equations toggle reads dollars only. With it on, $E = mc^2$becomes a native, editable Word equation — the same OMML that Word's own equation editor produces, so you can click it in Word and change it rather than being handed a picture. \(E = mc^2\) is not recognised and arrives as literal text, backslashes and brackets included. If your answer uses the bracket form, two find-and-replaces in the editor above are all it needs. Leave the toggle off when there is no maths in the document: the equation engine is about 85 KB compressed and only downloads the first time you switch it on.

What the preview shows that the .docx will not

The preview above is a browser rendering the same Markdown, and it is deliberately a little more generous than the Word writer. It curls quotes and turns -- into a dash; the .docx keeps whatever characters you pasted. It renders raw HTML; the .docx escapes it to text. It renders :tada: as an emoji; the .docx keeps the colons. Treat the preview as a check on structure — heading levels, list nesting, whether that table parsed at all — rather than as proof of the final characters. Anything the converter has to drop or approximate is named in the notes panel under the buttons after a conversion, so a document that converts with no notes converted cleanly.

Turning a ChatGPT answer into a Word document

Copy the Markdown source of a ChatGPT reply, fix the two things that usually parse wrong, and download a Word .docx — without the answer leaving your browser.

  1. Copy the Markdown, not the rendering

    Press the copy button under the ChatGPT message. Selecting the answer with the mouse copies rendered HTML instead, which pastes into Word carrying the chat interface's own styling.

  2. Paste it into the editor

    Paste into the left-hand pane on this page. The preview on the right shows how the converter reads it. Nothing is uploaded — parsing and packing both run in this tab.

  3. Promote the headings

    ChatGPT usually opens sections at ###. Change them to ## and add a # title so the Word document has an outline that starts at Heading 1.

  4. Fix the fences and the <br> tags

    Indent any fenced code block so it sits inside its numbered step, and replace <br> inside table cells with a space. Both show up in the preview.

  5. Download or paste into Word

    Press Download .docx for a file, or Copy for Word / Docs to paste formatted content into a Word, Google Docs, Outlook or Gmail window you already have open.

ChatGPT to Word: common questions

How do I copy a ChatGPT answer into Word without losing the formatting?

Use the copy button under the message rather than selecting the text with the mouse. The button copies the Markdown source; a mouse selection copies the chat interface's rendered HTML, which pastes into Word with the site's fonts, its grey code panels and its link colours attached. Paste the Markdown into the editor on this page, check the preview, then either download the .docx or press Copy for Word / Docs and paste straight into a document you already have open.

Why does my numbered list restart at 1 after a code block?

Because the fence was not indented far enough to stay inside the list item. CommonMark treats a fenced block that starts at the left margin as a new top-level block, which ends the list; the next numbered line then begins a fresh list at 1. For a '1. ' marker the item's content starts three characters in, so indenting the opening and closing fences by four spaces keeps the code inside step one. The preview on this page shows the same parse the .docx will use, so a list that restarts in the preview will restart in Word.

Why does <br> appear inside my table cells?

ChatGPT writes <br> when it wants a line break inside a table cell, because a GitHub Flavored pipe table cannot hold block content. This converter escapes raw HTML rather than interpreting it, so those characters arrive in the Word cell as visible text. Search the editor for '<' before converting and replace each one with a space or a semicolon. The live preview will not flag them, because a preview is a browser and browsers render HTML.

Does this work for Claude, Gemini, and Copilot answers too?

Yes. All of them answer in Markdown, and the converter only ever sees Markdown, so the conversion is identical. The habits differ slightly — Claude tends to nest lists more deeply, Gemini leans on bold lead-ins rather than headings — but the constructs are the same ones described on this page, and nothing here is specific to ChatGPT's servers or account.

Are ChatGPT's LaTeX equations converted to Word equations?

The ones written with dollar delimiters are. With the Equations toggle on, $E = mc^2$ and $$…$$ become native OMML — the same markup Word's own equation editor produces, so you can click an equation in Word and edit it. ChatGPT also emits \(…\) and \[…\] depending on how the question was asked, and those delimiters are not recognised: they arrive as literal text, backslashes included. A find-and-replace in the editor before converting is enough to fix it.

Is my ChatGPT conversation uploaded anywhere?

No. The Markdown parser and the .docx writer both run as JavaScript in this tab, inside a Web Worker, and with 'Fetch remote images' off — the default — the converter makes no network requests at all. The page itself loads Google Analytics like every page on this site, and pressing Download records the theme, the three switches, the input and output sizes in bytes, and how long the conversion took. Never the text, never a file name.

This free tool is built and maintained by KSPR Technologies. We build web, mobile & AI products for clients.