Markdown Tidy

Why ChatGPT Markdown breaks in Google Docs (and how to fix it)

You ask ChatGPT for a one-page memo. It writes a beautiful, well-structured response. You paste it into Google Docs. And it looks like someone hit it with a hammer: asterisks where bold should be, hashes floating in front of paragraphs, code blocks reflowed into one giant line, tables that look fine in chat but turn into ragged text on the page.

If that sounds familiar, you've already met the basic problem: Markdown isn't the same thing as a rich-text document. Google Docs doesn't speak Markdown natively, and AI assistants produce Markdown by default. This article walks through exactly why the paste breaks, why the usual workarounds disappoint, and the cleanest way we've found to get a proper document out the other side.

What's actually happening when you paste

Markdown is plain text with a few conventions. **bold**, # Heading, fenced code blocks, simple pipe tables. When you copy ChatGPT's output, two things travel through your clipboard: the plain-text Markdown source, and a rich-text representation rendered by your browser. Different apps grab different parts.

Google Docs is a rich-text editor. When it sees Markdown source, it doesn't parse the conventions — it treats them as literal characters. You end up with this:

## Q2 results

We hit **all** the goals.

| Metric | Q1 | Q2 |
| ------ | -- | -- |
| Signups | 1,200 | 2,100 |

…rendered as itself: visible hashes, visible asterisks, a table you can't actually edit. The structure your reader expected is buried in the syntax that was meant to encode it.

Why "paste without formatting" doesn't save you

The natural reflex is to try Cmd / Ctrl + Shift + V — paste without formatting. That solves one problem (no stray fonts) and creates another: everything becomes plain paragraphs. Headings vanish. Lists collapse into prose. Code blocks lose their monospacing. You've gone from "visible Markdown syntax" to "no structure at all".

Neither flavour of paste matches what you actually want, which is a document with proper headings, real bullets, a real table, and code that looks like code.

Five specific things AI Markdown does that Google Docs hates

  1. Heading hierarchy that skips levels. AI models often start with ## instead of #, or jump from # to ###. Docs' outline tools rely on a clean hierarchy; broken hierarchies mean broken outlines.
  2. Fenced code blocks with unmatched delimiters. A model that runs out of tokens mid-response often leaves a stray ``` open. Pasted into Docs, that turns into a literal three-backtick fragment in your prose.
  3. Tables that are misaligned in source. Pipe tables look fine when rendered by chat UIs, but the underlying source frequently has uneven column counts or missing delimiter rows. Docs has no way to recover the table — it sees ragged text.
  4. Invisible Unicode and smart-quoted punctuation. Zero-width spaces, BOMs, fancy en/em dashes and curly quotes routinely slip in. They don't break rendering, but they break grep, diffs, and any downstream automation. They also confuse spell-checkers.
  5. Excess separator rules and decorative noise. Long runs of ---, *** and decorative bullet lists are common AI tics. In Markdown they thin out a wall of text; in Docs they become visible junk you have to delete.

The workaround that actually works

The reliable approach is to stop trying to paste Markdown into Docs at all. Instead:

  1. Clean the Markdown first. Strip the AI artifacts (filler intros, decorative dashes, invisible characters), normalize bullets, and fix the heading hierarchy. This is mechanical and should not require human attention.
  2. Repair what's broken. Close unmatched code fences. Rebuild malformed tables so they have the right delimiter rows and matching column counts. Repair broken nested lists and damaged front-matter.
  3. Convert to a real document format. Render the cleaned, repaired Markdown into DOCX (or directly into a Google Doc). Now you're handing Docs something it natively understands — proper headings, proper tables, proper code blocks.
  4. Open in Docs. The result lands with real structure: an outline that works, a table you can edit, code styled as code.

That sequence — clean → repair → convert → open — is what Markdown Tidy automates. Paste your Markdown, click Clean and Repair, pick a design system, and export to Google Doc, DOCX, PDF or PNG. The output is something you can actually share without apologising for the formatting.

When to keep it as Markdown instead

Not every document belongs in Google Docs. If you're sharing technical notes with developers, posting to a CMS that already speaks Markdown, or sending to Slack or a Notion page, you usually want the Markdown to stay as Markdown — just clean Markdown. Clean-only mode (skip the conversion step) is the right tool for those cases: same cleanup and repair, output is still Markdown, ready to paste anywhere that renders it.

One last thing: smart quotes

If you remember nothing else from this article, remember this: AI assistants love to substitute curly quotes (“ ”) and en/em dashes (– —) for the straight ASCII versions. They look nice in prose and they will silently break every regex, every diff, every code sample, and every command-line you copy from your document. Cleanup should normalise them by default for anything technical, and leave them alone for prose.

See pricing How it works