Athens

Google Docs to WordPress: How to Paste Without Breaking Formatting

- Moritz Wallawitsch

You wrote a blog post in Google Docs. It looks perfect. Clean headings, bulleted lists, bold text, inline images. You select all, copy, switch to WordPress, and paste.

And your carefully formatted article turns into a mess. Extra line breaks everywhere. Fonts that do not match your theme. Images that vanish. Lists that flatten into a single level. Code blocks that are gone entirely.

This is not a new problem. Writers have been fighting the Google Docs to WordPress paste pipeline for over a decade. WordPress 5.0 introduced the block editor (Gutenberg) in 2018, and in some ways it made things worse. The underlying issue has never been fixed because it is not really a bug. It is a fundamental mismatch between how Google Docs stores formatting and how WordPress expects to receive it.

Here is exactly what breaks, why it breaks, and what you can do about it.

What Breaks When You Paste from Google Docs to WordPress

Google Docs does not store your document as clean HTML. It stores it in an internal format and then generates HTML on the fly when you copy to the clipboard. That generated HTML is bloated, vendor-specific, and full of inline styles that conflict with any WordPress theme.

Here is a breakdown of every major issue.

Hidden span and font Tags on Every Line

When you copy text from Google Docs, every single line gets wrapped in <span> tags with inline CSS. A simple paragraph that should be <p>Hello world</p> becomes something like:

{ Hello world }

Every paragraph. Every list item. Every heading. Google Docs wraps all of them in span tags with explicit font-size, font-family, color, font-weight, and font-style declarations. These inline styles override your WordPress theme CSS. Your carefully chosen body font gets replaced with Arial 11pt. Your link colors get overwritten. Your heading styles get clobbered.

Older versions of Google Docs also injected <font> tags, which are deprecated HTML elements that modern browsers still render. These conflict even more aggressively with WordPress theme stylesheets.

Extra Line Breaks Between Paragraphs

Google Docs uses single-spaced paragraphs with spacing handled by CSS margins. WordPress uses double line breaks (<br><br> in Classic Editor) or separate paragraph blocks (in Gutenberg) to create spacing. When you paste from Google Docs, the spacing model does not translate. You end up with either too much whitespace (double the gap you intended) or paragraphs that run together.

In the block editor, each paragraph from Google Docs becomes its own Gutenberg block. But the spacing between blocks does not match the spacing in your original document. Some paragraphs get extra margins. Others collapse together. The visual rhythm of your piece breaks.

Images Reference Google's Servers

If your Google Doc contains images, those images do not paste into WordPress. They are not embedded in the clipboard data. Instead, the pasted HTML contains <img> tags that point to Google's servers, like https://lh7-us.googleusercontent.com/....

This causes two problems. First, the images load slowly because they are served from Google, not your WordPress media library. Second, Google eventually invalidates those URLs. A few weeks or months after you publish, your images start showing as broken. They just disappear from your post with no warning.

You have to manually download every image from Google Docs, upload each one to your WordPress media library, and insert them back into the post. For an image-heavy article, this can take 15 to 30 minutes.

Shift+Enter Line Breaks Become Paragraph Breaks

In Google Docs, Shift+Enter creates a soft line break within a paragraph. Writers use this for poetry, addresses, or any text that should stay in one block but appear on multiple lines.

When pasted into the WordPress block editor, these soft line breaks become full paragraph breaks. Each line becomes its own block. This is a known Gutenberg issue (#28342) that has been open since 2021. It has never been fixed. For writers who use line breaks within paragraphs, this alone can destroy the structure of an entire post.

Lists Lose Nesting Depth

Multi-level lists in Google Docs rarely survive the paste. A three-level nested list often flattens to a single level. Sub-items become top-level items. The hierarchy that makes your list scannable and organized is gone. You have to manually re-indent every nested item, which in Gutenberg means creating sub-lists block by block.

Code Blocks Break Entirely

If your Google Doc includes code snippets (common for technical blog posts), they do not survive the paste. Google Docs does not have a native code block format. Most writers use a monospace font or a third-party add-on to simulate code blocks. When you paste into WordPress, that formatting is stripped. Code appears as regular text with no indentation, no syntax highlighting, and no visual distinction from the rest of your content.

Why Gutenberg Makes It Worse

You might expect that the modern WordPress block editor (Gutenberg) would handle Google Docs paste better than the old Classic Editor. In some ways it does. Gutenberg strips most of the inline <span> tags during paste, so you do not get the font overrides.

But Gutenberg introduces its own problems. Its block-based architecture means every element from your Google Doc gets parsed into a separate block. Paragraphs, headings, lists, and images each become their own blocks. In theory this is fine. In practice, the block boundaries do not always match the logical boundaries in your document.

A single list in Google Docs might paste as three separate list blocks in Gutenberg. A heading and its following paragraph might get merged into one block. And the block conversion process quietly drops some formatting that it does not know how to map.

The Classic Editor (TinyMCE) was more forgiving. It treated your paste as one big blob of HTML and rendered it as-is, warts and all. You got messy HTML but at least the visual result looked closer to your original. Gutenberg tries to be smarter about parsing and sometimes outsmarts itself.

The Common Workarounds

These are the most common solutions recommended by WordPress guides from Kinsta and WPBeginner. Each one fixes part of the problem. None of them fix all of it.

1. Paste Directly Into the Block Editor

The simplest approach. Just paste. Gutenberg will strip most of the inline styling from Google Docs. Headings usually survive. Bold and italic usually survive. Basic lists usually survive.

What does not survive: nested lists, images, code blocks, soft line breaks, and consistent paragraph spacing. If your post is mostly prose with simple formatting, this works well enough. If your post has any structural complexity, you will spend 10 to 20 minutes cleaning up after the paste.

2. Paste as Plain Text, Then Reformat

Some writers paste into a plain text editor first (Notepad, TextEdit in plain text mode) to strip all formatting. Then they paste the clean text into WordPress and reformat everything manually. Bold, italic, headings, lists - all added back by hand.

This guarantees clean HTML. It also takes the longest. You are essentially formatting your post twice: once in Google Docs and once in WordPress. For a 2,000-word article with headings, lists, and bold text, expect to spend 15 to 25 minutes reformatting.

3. Use the "Docs to Markdown" Add-On

The Docs to Markdown Google Workspace add-on converts your Google Doc to markdown format. You then paste that markdown into the WordPress code editor or a Custom HTML block.

This is one of the better workarounds. Markdown is clean and predictable. It does not carry hidden styling. The conversion is usually accurate for headings, lists, bold, italic, and links.

The downsides: it adds an extra step to your workflow. You have to install the add-on, run it each time, copy the output, switch to the code editor in WordPress, and paste. Images still do not transfer. And the add-on occasionally mishandles complex formatting like tables or footnotes.

4. Download as HTML and Upload

Google Docs lets you export your document as a.html file (File > Download > Web Page). You can then open that file and paste its contents into the WordPress code editor.

The HTML you get is more complete than clipboard paste. It retains more formatting and can include base64-encoded images. But the HTML is still bloated with Google's inline styles. You get a more accurate representation of your document, but the code is messy and will conflict with your theme. You will likely need to run it through an HTML cleaner before it is production-ready.

5. Use a Plugin Like Wordable

Wordable is a WordPress plugin purpose-built for the Google Docs to WordPress pipeline. It connects to your Google Drive, pulls your document, cleans the HTML, uploads images to your media library, and publishes the post. It handles most of the formatting issues automatically.

The catch: Wordable is a paid service. Plans start at $99 per year for 100 exports. That is roughly a dollar per post. For high-volume publishers this is a reasonable cost. For solo bloggers publishing a few times a month, it feels steep for what is essentially a paste-fixing tool. You are paying a recurring fee to bridge a gap between two tools that should work together but do not.

Why These Workarounds Exist in the First Place

Every one of these workarounds exists because Google Docs was not designed for publishing. It was designed for collaborative document editing inside Google's ecosystem. The clipboard HTML it generates is optimized for pasting into other Google products, not into WordPress or any other CMS.

WordPress, on its side, was not designed to receive Google Docs formatting. It expects clean HTML or markdown. The block editor tries to parse arbitrary clipboard HTML and does its best, but "its best" is often not good enough.

This is not a problem that either Google or WordPress is going to fix. Google has no incentive to generate clean clipboard HTML for third-party platforms. WordPress has too many paste sources to optimize for any single one. The mismatch is structural and permanent.

The Real Fix: Write in Markdown

The cleanest solution is to stop fighting the Google Docs to WordPress paste pipeline entirely. Write in a tool that outputs clean markdown or HTML. Then paste into WordPress with zero formatting issues.

WordPress handles markdown well. You can paste markdown into a Custom HTML block or the code editor and it renders correctly. You can use the Classic Editor with a markdown plugin. Some managed WordPress hosts (like WordPress.com) support markdown natively in their editors.

Markdown does not carry hidden styling. There are no <span> tags. No <font> tags. No inline CSS. A heading is ##. Bold is **text**. A list is a series of lines starting with -. What you see is what WordPress gets.

The problem with this advice has always been that markdown editors are not great for writing. Most of them show you raw syntax. You see **bold** instead of bold. You see [link text](url) instead of a clickable link. Writing a 2,000-word article surrounded by markdown syntax is distracting.

Writing in Athens, Publishing to WordPress

Athens is a writing tool that gives you the best of both worlds. You write in a clean, formatted editor that looks like Google Docs. No raw markdown syntax. Headings look like headings. Bold looks bold. Lists are indented and nested.

But under the surface, Athens stores your document as markdown. When you are ready to publish, you export as clean markdown or clean HTML. No hidden span tags. No Google font declarations. No broken image references. Just the content and its structure.

Paste that into WordPress and everything works. Headings are headings. Lists keep their nesting. Bold and italic are preserved. Code blocks stay formatted. You spend zero minutes on reformatting.

Athens also has built-in AI editing. Instead of switching between ChatGPT and your document (and then fighting the paste into WordPress), you write, edit, and refine all in one place. The AI edits your document directly with tracked changes you can accept or reject. No copy-paste workflow at all.

The Workflow: Athens to WordPress in Three Steps

  1. Write in Athens. Use the formatted editor. Let the AI help with drafting, rewriting, and editing. Your document looks polished the entire time.
  2. Export as markdown or HTML. One click. Athens generates clean output with no hidden formatting.
  3. Paste into WordPress. Use the code editor, a Custom HTML block, or a markdown-enabled editor. Everything renders correctly on the first paste.

No Wordable subscription. No Docs to Markdown add-on. No paste-then-spend-20-minutes cleaning up.

Comparing the Approaches

Here is how the options stack up for getting content into WordPress:

  • Google Docs direct paste: Free but loses images, breaks lists, adds hidden styling. 10 to 20 minutes of cleanup per post.
  • Paste as plain text: Clean HTML but you reformat everything manually. 15 to 25 minutes per post.
  • Docs to Markdown add-on: Good conversion but adds steps and does not handle images. 5 to 10 minutes of extra work per post.
  • Download as HTML: More complete but bloated code that needs cleaning. 10 to 15 minutes per post.
  • Wordable plugin: Best automated solution but costs $99 per year and still has occasional formatting quirks.
  • Write in markdown (Athens): Clean output on every paste. Zero reformatting time. Free to start.

Stop Fighting the Paste

The Google Docs to WordPress formatting problem is not going away. It has existed for over a decade. Google is not going to change how it generates clipboard HTML. WordPress is not going to build a Google Docs-specific paste handler. Plugins and add-ons can paper over the gap, but they add cost, complexity, and extra steps.

The real fix is simple: do not create the problem in the first place. Write in a tool that outputs what WordPress expects. Skip the format conversion step entirely.

If you use ChatGPT or another AI to help with your writing, the same principle applies. Instead of writing in Google Docs, editing with AI in a separate tab, and then fighting the paste into WordPress, use a writing tool where AI is built in and the output is clean. Read our guide on getting ChatGPT content into WordPress for more on that specific workflow.

If you are still using Google Docs as your primary writing tool, consider whether it is actually the best fit for your workflow. Google Docs is great for collaborative editing. It is not great for solo writing and publishing. See our comparison of the best Google Docs alternatives with AI for options that are built for writers, not committees.

And if you are tired of the copy-paste loop between AI tools and your editor, read about how to stop copy-pasting between ChatGPT and Google Docs entirely.

Your writing deserves better than 20 minutes of formatting cleanup after every paste. Write clean. Publish clean. Spend your time on the words, not the formatting.