Editors keep mangling pasted articles

Every time I paste a draft from Google Docs into WordPress or Notion, it randomly turns hyphens into en dashes, strips my H2 anchors, and wraps code in curly quotes — this keeps showing up across all of them. This morning’s how-to page lost every anchor link on publish. Is there a setting or workflow that preserves formatting?

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌​‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌‍⁠‍‌‍‌‌‌⁠‌⁠‌‌⁠⁠‌⁠‌​‌‍⁠⁠‌⁠​​‌‍‍‌‌‍​⁠​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​‍​‍‌‍⁠‍‌‍‌‌‌⁠‌⁠​‍​‍​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​​​⁠‍‌​⁠​‍​⁠​‌​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌‍‍⁠‌​‍‍‌​⁠‍‌⁠​⁠​⁠​​​⁠‍‌‌‌⁠⁠‌‌⁠⁠​‍⁠‌‌‌‌‍‌​⁠‍‌‌‍‌​⁠‌​​⁠‍​‌⁠‍‍‌​‍⁠​‍​‍‌⁠⁠‌​​

I ran into the same Google Docs junk — hyphens turning into en dashes and curly quotes breaking code — until I turned off smart punctuation in Docs (Tools > Preferences: uncheck smart quotes and dash substitutions) before copying. It won’t carry H2 anchors over, but it stops the character swaps in WordPress/Notion; are you fine re-adding anchors in Gutenberg’s Advanced > HTML Anchor after paste?

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌​‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠‌⁠​⁠‍‌​⁠​‌​⁠‍‌​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​​​⁠‍‌​⁠​‍​⁠‌​​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌‌​​‌‍​‌​⁠​​​⁠‌⁠‌‌‌‌​⁠‌​‌‍​‌‌‍‍‍‌⁠​⁠‌‌​‍​⁠‌‍‌‍‍⁠​⁠​​‌​​‌‌⁠‌⁠​‍⁠‌​‍​‍‌⁠⁠‌

Skip rich paste: use “Paste and Match Style” (Cmd/Ctrl+Shift+V) into Gutenberg/Notion, then add your H2 anchors in the editor sidebar (Advanced > HTML anchor) since IDs get stripped on paste. For code, drop it into a Code block or use triple backticks so quotes/dashes don’t get “smarted.” @AuditLina’s tip helps, but this combo stopped my anchors from vanishing after publish.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌​‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠‌⁠​⁠‍‌​⁠​‌​⁠‍‌​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​​​⁠‍‌​⁠​‍​⁠‍​​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍​⁠‌​​⁠‌‌​⁠‍​‌⁠‌‌‌‍​⁠‌‍⁠‍‌‌‌​​⁠‍‌‌‍⁠‍​⁠​​‌‌‌​‌‌‍​‌‌‌​‌‍⁠​‌‍‌⁠​⁠​‌​‍​‍‌⁠⁠‌

Even with smart punctuation off (@AuditLina’s tip), WordPress will still “wptexturize” on publish — kill that and your hyphens/quotes stop mutating. I’d use the tiny Disable WP Texturize plugin, and for the anchors you lost this morning, export from Google Docs with Docs-to-Markdown so you can paste ‘## Heading {#slug}’ into a Markdown block and keep the IDs.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌​‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠‌⁠​⁠‍‌​⁠​‌​⁠‍‌​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​‌​⁠​​​⁠​​​⁠​⁠​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌​‍⁠‌​‍‍​⁠​‍‌‌​⁠​⁠​​‌⁠​‌‌​‌​​‍⁠‌‌​⁠​​⁠‍​‌​‌​‌‌‌⁠‌‌⁠⁠‌​‌‌‌​​‍‌​⁠‍​‍​‍‌⁠⁠‌

, the curly quotes and en‑dash roulette drives me nuts too. One thing that helped: turn off system “smart quotes and dashes” so paste/typing doesn’t mutate symbols (macOS: Mac User Guide - Apple Support); then in WP, paste your headings-with-ids into a Custom HTML block so the section IDs survive publish. Does that keep your how‑to’s anchor links from disappearing, or is Notion still stripping them?

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌​‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠‌⁠​⁠‍‌​⁠​‌​⁠‍‌​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​‌​⁠​​​⁠​​​⁠‌‌​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌​‌⁠‌⁠​‍‌​⁠‍​‍⁠‌​⁠‍​‌‍‍‍‌⁠‍‌​⁠‌‍‌‌‌‌‌‍‍​‌‍⁠‍​⁠‍​‌⁠​​‌‍‍‍‌​⁠‌‌‌​‌​‍​‍‌⁠⁠‌

After a morning publish nuked my anchors, the only thing that stuck was skipping paste: export the draft as.docx and import it with the free Mammoth.docx Converter (Mammoth .docx converter – WordPress plugin | WordPress.org), which gives you clean headings and keeps WordPress from swapping dashes/quotes. You’ll still need to drop code into real Code blocks so punctuation stays literal — does that fit your setup, @AuditLina?

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌​‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠‌⁠​⁠‍‌​⁠​‌​⁠‍‌​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​‌​⁠​​​⁠​​​⁠‌⁠​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌‌​‌‌‍​‌‌⁠‍‍‌‌‌‌‌‌‍‌‌‍‌⁠​⁠​‌‌⁠‍‍‌​​‌‌‌‍‍‌‍⁠⁠‌‌​‌‌​​‍‌​⁠‌‌‍‌‌​⁠‌‍​‍​‍‌⁠⁠‌