Back to Blog
Guide
June 23, 2026
6 min read

How to Import DOCX to WordPress Without Losing Formatting

N
Nagaraj Dev
Plugin Developer & Creator

Most advice about preserving Word formatting in WordPress skips the part that actually determines the outcome: some of your formatting is recoverable and some of it was never recorded in a way any tool can recover.

Knowing which is which is the difference between a clean import and an hour of cleanup. This guide covers what survives, what does not, why, and how to set documents up so the answer is "almost everything".

I build DocxToWP, so treat the plugin sections accordingly — but the mechanics below apply whichever tool you use.

Does WordPress import Word documents natively?

No. This surprises people, so it is worth stating plainly.

If you drag a .docx file into the WordPress editor, one of two things happens: it uploads to the Media Library as a downloadable file attachment, or nothing happens at all. WordPress has no built-in converter. There is no "Import Word Document" button anywhere in core, and there never has been.

Every method that works — pasting, a plugin, manual HTML conversion — is a workaround for that gap.

The two kinds of formatting in a Word document

This is the concept everything else depends on.

Word records formatting in two completely different ways, and they look identical on screen:

Style-based formatting. You select a paragraph and apply "Heading 2" from the Styles gallery. Word stores: this paragraph has the style Heading2. The visual appearance is defined separately, in the style definition.

Direct formatting. You select a paragraph and manually set it to 16pt, bold, dark blue. Word stores: this paragraph is 16pt, bold, dark blue. There is no record that you meant it to be a heading.

To you these produce the same-looking document. To a converter they are worlds apart. The first can become <h2>, because the intent was recorded. The second can only become a paragraph with inline styles, because intent was never recorded — the document says what the text looks like, not what it is.

This is the single biggest cause of disappointing imports. No plugin can recover structure that was never there. If your headings were made by enlarging text, every tool will flatten them, and the fix is in the document rather than the importer.

What survives an import, and what does not

Assuming style-based formatting and a proper importer:

Survives reliably

  • Headings H1–H6, as real heading tags
  • Bold, italic, underline, strikethrough, superscript and subscript
  • Bulleted and numbered lists, including nesting
  • Tables, including header rows and merged cells
  • Block quotes, where a quote style was used
  • Hyperlinks, internal and external
  • Inline images, into the Media Library
  • Image alt text written in Word
  • Paragraph breaks versus line breaks, as distinct things

Does not survive, and should not

  • Page margins, page size, page breaks — a web page has no pages
  • Headers and footers — no equivalent concept
  • Exact fonts and point sizes — your theme controls typography, deliberately
  • Column layouts — these need real responsive markup
  • Text boxes and floating shapes — no clean HTML equivalent
  • Word Art, SmartArt, and chart objects — flattened to images at best

That second list is not a failure. A web page that hard-codes 11pt Calibri and 1-inch margins is a broken web page. The right goal is structural fidelity — headings stay headings, lists keep nesting, tables keep cells — not visual identity.

Why copy-paste specifically destroys formatting

Pasting puts your content through two lossy translations.

First, the browser converts Word's clipboard content to HTML. That markup carries proprietary artefacts — the Mso-prefixed classes, inline style declarations, conditional comments — designed for round-tripping inside Office, not for the web.

Second, WordPress sanitises the result, stripping tags and attributes it considers unsafe or non-standard.

Things break in the gap between those two steps. Nested lists suffer particularly badly, because Word's list model is fundamentally unlike HTML's <ul>/<ol> nesting and the translation is approximate.

Images fare worst of all. Images in a Word document are objects embedded inside the file. Pasting inserts a reference to something that has no web address — so it either fails outright, or arrives as a Base64 blob inside your post content, which bloats your database, never enters your Media Library, and cannot be optimised or reused.

The reliable approach: read the file, skip the clipboard

A .docx file is a ZIP archive. Rename one to .zip and open it and you will find XML describing the content, a media folder with every embedded image as a real binary, and separate parts defining styles and numbering.

Everything needed for a clean conversion is in there — including the style names that tell you which paragraphs were meant to be headings. Reading the file directly avoids the clipboard entirely, which is why plugin imports beat pasting so decisively.

Step 1 — Install

Plugins → Add New, search for "DocxToWP", install and activate. The free version covers 5 imports.

Step 2 — Upload

Open DocxToWP in the sidebar and drag your .docx in. Optionally add a separate featured image.

Step 3 — Check the preview

The preview shows how the post will render before anything is created. Check images landed in the right places and nested lists kept their levels — these are the two things worth verifying every time.

Step 4 — Set post options

Author, categories, tags, slug, excerpt, post status, and post type — Post, Page, or any registered custom post type. If you use Yoast or Rank Math, the SEO fields are here too.

Step 5 — Publish

Convert. The images are now in your Media Library, hosted on your own domain.

Write image alt text in Word — right-click the image, choose Edit Alt Text. It imports with the image, so you never have to write it twice.

Setting up documents so imports come out clean

Five habits, all free, that matter more than which plugin you pick:

  1. Use the Styles gallery for headings. Never build a heading by enlarging text. This is the big one.
  2. Keep heading hierarchy sane. H1 → H2 → H3, without skipping levels.
  3. Use Word's list buttons for lists. Manually typed "1." and "2." at the start of paragraphs are not a list and will not convert as one.
  4. Insert images inline. Floating or anchored images have no fixed position in the text flow, so their placement after import is a guess.
  5. Use real table tools. A grid faked with tabs and borders is not a table and cannot become one.

A document written this way imports cleanly through almost any tool. A document built with direct formatting imports badly through all of them.

Troubleshooting

Headings became bold paragraphs. Direct formatting instead of styles. Apply real heading styles and re-import.

Images did not arrive. Usually upload_max_filesize or post_max_size — the whole archive has to fit within both. Twenty high-resolution photos will exceed a 2 MB default easily.

Import times out. Raise max_execution_time and memory_limit. On shared hosting you may need support to do it.

Nested lists flattened. Either the nesting was faked with indents, or the list was typed manually rather than created with Word's list tools.

The file will not upload. Confirm it is really a .docx. A renamed .doc will be rejected — the old binary format is a different specification entirely. Open it and use Save As → .docx.

Tables lost merged cells. Check the merge was done with Word's merge function rather than faked with borders.

Pro features for repeat workflows

The free version handles single documents completely. Pro adds things that only matter at volume:

  • Batch upload — process many documents in one run
  • Activity log with re-import — update an existing post by re-uploading the edited document, keeping the same URL
  • Custom post type support — publish to any registered CPT
  • White-label mode — remove branding for client-facing installs

Frequently asked questions

Can WordPress open .docx files without a plugin? No. Core has no converter. Uploading a .docx gives you a file attachment, not a post.

Will the imported post match my Word document exactly? No, and it should not. Word renders pages; the web renders responsive documents. Expect structural fidelity, not visual identity.

Does this work with the Classic Editor? Yes — the output is clean semantic HTML.

Will importing override my theme's styling? No. A well-behaved importer emits semantic HTML that inherits your theme's typography.

What about .doc files? Convert to .docx first in Word or LibreOffice. Renaming the extension does not work.

Try it on your worst document

Five free imports, no account required. Take the file that has broken every other method and see what comes out.

Download Free from WordPress.org

Written by Nagaraj Dev, who builds DocxToWP. Last updated July 2026.

Related Articles

Start publishing Word docs to WordPress in under 60 seconds

Free. No account. No credit card. Install directly from WordPress.org — the official plugin repository.

Get Pro for $29 $39