Back to Blog
Guide
July 14, 2026
5 min read

Why Pasting Word Into WordPress Breaks

N
Nagaraj Dev
Plugin Developer & Creator

You write a clean document in Word. You paste it into WordPress. It looks wrong.

Extra gaps between some paragraphs and none between others. Words stuck together with no space. A bulleted list that arrived as plain paragraphs. A table missing its header row. And if you open the code view, a wall of styling you never wrote.

This is not you doing it wrong. It is what Word puts on your clipboard.

Here is what is actually happening, problem by problem.

Word does not copy text. It copies a web page.

When you copy from Word, Word does not put plain text on the clipboard. It puts HTML. And that HTML is built for Word, not for the web.

It carries Microsoft Office specific styling, the mso- properties. Things like mso-fareast-font-family and mso-pagination. Your browser ignores most of it. WordPress does not always strip it. So it sits in your post content doing nothing useful and sometimes actively breaking your theme's layout.

It also carries inline styles for things your theme already handles. Font family. Font size. Line height. Colour. Your theme says body text is 18px in your brand font. The pasted content says it is 11pt Calibri. The pasted content wins, because inline styles beat stylesheets.

That is why pasted sections often look subtly different from the rest of your site. Not broken enough to notice at a glance. Just off.

The extra line breaks come from Word's copy behaviour

This one surprises people because the document looks fine in Word.

When Word copies content, it wraps lines at roughly the 80 character mark. Those wraps end up in the clipboard as real line breaks. Paste that into WordPress and the editor treats them as breaks you meant to put there.

So a single flowing paragraph arrives chopped into pieces. Sometimes as separate blocks. Sometimes as line breaks inside one block. Either way you did not ask for it and it was not in your document.

The spacing problem has a second cause

WordPress runs content through a filter called wpautop. Its job is to turn blank lines into paragraph tags so people writing plain text get proper paragraphs.

That is helpful when you are typing. It is not helpful when your pasted content already has paragraph tags in it. Now you have paragraph markup wrapped around paragraph markup, and the spacing doubles up.

This is why you sometimes get a big gap after one paragraph and nothing after the next. The two paragraphs came through with different markup, so wpautop treated them differently.

Missing spaces between words

You paste, and a sentence reads "and then shelooked at" with no space.

You fix it. You save. It comes back.

This happens because of how Word encodes spacing. Some spaces in a Word document are not space characters. They are formatting instructions, or non-breaking spaces, or the result of character spacing settings. When that gets converted to HTML and then filtered by WordPress, some of them do not survive.

The reason it comes back after you fix it is usually that the underlying markup still has the problem. You corrected the visual editor, the code view still holds the original, and a save or a view switch restores it.

Lists and tables lose their structure

In Word, a bulleted list is a paragraph with a list style applied. It is not the same thing as an HTML list.

When Word converts that to HTML for the clipboard, the conversion is inconsistent. Sometimes you get proper ul and li tags. Sometimes you get paragraphs that happen to start with a bullet character and a lot of indent styling. They look the same in the editor. They are not the same in the markup, and screen readers and search engines can tell the difference.

Tables have their own version of this. Word's table markup carries border and width attributes that fight your theme's table styles. Header rows often come through as normal rows, so the table is no longer accessible and no longer styled the way your theme intends.

Some blocks paste raw HTML at you

If you paste Word content into certain blocks, you do not get formatted content. You get Word's HTML shown as text.

This has been reported in the Quote, Verse, Table, Pullquote and Columns blocks. The paste handler that cleans up content for a normal paragraph block does not always run inside these.

The workaround is to paste into a plain paragraph block first, then convert the block afterwards.

The one big Classic block, and where it really comes from

You may have seen a post open as a single Classic block instead of proper blocks. That gets blamed on Word paste, but that is not usually where it comes from.

The single Classic block is what happens when you open a post that was originally written in the old Classic editor. WordPress does not guess how to split that content up, so it wraps the whole thing in one Classic block and leaves it to you. You convert it with the three dot menu and Convert to Blocks.

Pasting from Word normally does produce separate blocks. The problem with pasting is not that you get one block. It is that you get many blocks full of styling you did not write, plus breaks and spacing you did not ask for.

Worth knowing the difference, because the fixes are different.

What actually stops this

Paste as plain text. Ctrl+Shift+V on Windows, Cmd+Shift+V on Mac. You lose every bit of formatting, including headings and bold. But you also lose every bit of junk. For short posts, rebuilding the formatting by hand takes less time than cleaning Word's markup out.

Go through Google Docs first. Paste Word into a Google Doc, then copy from there. Docs produces cleaner HTML than Word. Not clean, it adds its own wrapper spans, but cleaner.

Use the file, not the clipboard. This is the real fix. A .docx file is a zip archive containing structured XML. That XML says what is a heading, what is a list, what is a table header, and where every image sits. All the structure you want is in there, described properly.

The clipboard is a lossy summary of that file. Reading the file directly skips the clipboard entirely, so there is no mso- styling to strip, no 80 character wrapping to undo, and no guessing about whether something was a list.

That is what a docx importer does. Mammoth does it, free, one document at a time. DocxToWP does it with images, SEO fields, custom post types and bulk.

Check before you publish, not after. Whatever route you take, scroll the whole post once. The failures are quiet. A flattened nested list or a table that lost its header will not look broken. It will just be wrong.


Comparing your options? Here is an honest look at all four ways to get Word into WordPress, including where each one is the wrong choice.

Related Articles

Import your first Word document in under 60 seconds

Start free. Import a Word document without copy-pasting or rebuilding its formatting. No account, no credit card. Straight from WordPress.org.

Get Pro for $39