Back to Blog
tutorial
January 15, 2025
7 min read

How to Import a Word Document into WordPress (4 Methods Compared)

N
Nagaraj Dev
Plugin Developer & Creator

There are four realistic ways to get a Word document into WordPress. Three of them are free, one of them is what almost everyone does by default, and that one is the worst.

This guide covers all four, explains what each does to your headings, images and tables, and — the part most tutorials skip — what to do when an import comes out wrong.

Full disclosure: I build DocxToWP, which is method 3. I have tried to be straight about where the free methods are sufficient, because for a lot of people they are.

The four methods at a glance

MethodCostHeadingsImagesTime per post
Copy-pasteFreeOften flattenedBroken or base6415–30 min cleanup
Word's "Publish to blog"FreeInconsistentUnreliableVariable
A DOCX importer pluginFree / $39PreservedInto Media LibraryUnder a minute
Convert to HTML manuallyFreePreservedManual upload10–20 min

Why copy-paste breaks things

It is worth understanding the mechanism, because it tells you which problems are fixable and which are not.

When you copy from Word, you are not copying text. You are copying Word's own HTML representation, built for round-tripping inside Office rather than for the web. It leans on inline style attributes and generic <span> wrappers instead of semantic tags.

Word stores formatting in two different ways simultaneously, and this is the root of most import problems. A heading might be a paragraph with the Heading 2 style applied — semantic, and convertible into a real <h2>. Or it might be a normal paragraph with 16pt bold formatting applied directly to the text. In Word these look identical. In HTML the first becomes a heading and the second becomes <p><span style="font-size:16pt;font-weight:bold">.

That distinction determines almost everything:

  1. Headings get flattened. A pasted pseudo-heading is a bold paragraph. Your document still looks structured while carrying none of the structure a search engine or screen reader relies on.
  2. Images usually fail. Pasted images either do not arrive at all, or arrive as Base64 strings embedded directly in the post content. Base64 images bloat your database, never appear in your Media Library, and cannot be reused or optimised. Images pasted from Google Docs often stay pointed at googleusercontent.com and break for logged-out visitors later.
  3. Nested lists collapse. Word does not store "item 3 of a numbered list" — it stores a reference to an abstract numbering definition with its own levels. Drop that and sub-lists flatten or restart at 1.
  4. Tables lose structure. Merged cells, column widths and header rows are the first things to go.

Use Word's Styles gallery for headings rather than manually enlarging and bolding text. This single habit determines whether any import method can recover your document structure — and it costs nothing.

Method 1: Copy-paste (and how to make it less bad)

If you are publishing one short post with no images, pasting is fine. Do it properly:

Paste into WordPress using Ctrl+Shift+V (Cmd+Shift+V on Mac) to strip formatting entirely, then reapply headings using the block editor. This sounds like more work than pasting normally, and it is less work than cleaning up Word's markup afterwards.

For anything with images, this method costs you 15–30 minutes per post uploading them by hand.

Method 2: Word's built-in "Publish to blog"

Microsoft Word has had a blog-post template for years. It connects over XML-RPC and can publish directly.

I would not rely on it in 2026. XML-RPC is disabled by default on many hosts because it has been a repeated attack vector, so it may simply not work on your site. When it does, the HTML it produces is heavily larded with Word's presentational markup. There is no support for custom post types or SEO fields, and when it fails the error messages are close to useless.

It is listed here for completeness rather than as a recommendation.

Method 3: A DOCX importer plugin

This is what I build, so weigh accordingly.

A .docx file is a ZIP archive. Rename one to .zip and open it, and you will find the XML describing your content, a media folder containing every embedded image as a binary, and separate parts defining styles and numbering rules. An importer plugin unzips this on your server, reads the style definitions, maps them onto WordPress blocks, and moves the image binaries into your Media Library as real attachments.

Because the images are in the archive, they come across intact and end up hosted on your own domain — which is the single biggest practical difference from pasting.

Step 1 — Install the plugin

In your WordPress dashboard go to Plugins → Add New and search for "DocxToWP". Install and activate. The free version covers 5 imports with full formatting.

Step 2 — Prepare the document

  • Save as .docx, not the older .doc format
  • Apply headings from the Styles gallery, not by resizing text
  • Place images inline where you want them
  • Right-click each image → Edit Alt Text and write real alt text. This is imported with the image, so writing it in Word saves doing it again in WordPress

Step 3 — Upload

Open DocxToWP → Upload New and drop the file in. Optionally drop a separate image into the Featured Image box. The plugin can detect the first H1 and use it as the post title.

Step 4 — Check the preview

Scroll the preview and confirm images are in the right places and lists kept their nesting. Fix typos directly in the preview.

Step 5 — Set post type, taxonomies and SEO, then publish

Choose Post, Page or any registered custom post type, assign categories and tags, and fill the Yoast or Rank Math fields if you use them. Publish.

Method 4: Convert to HTML manually

For a one-off with no budget and no plugins: save the document as Web Page, Filtered from Word's Save As dialog. This produces HTML with much of Word's junk markup already stripped, plus a folder of the extracted images.

Paste the HTML into the WordPress code editor, then upload the images from that folder to your Media Library and fix the src paths. It works, and it takes 10–20 minutes per document, which is why it is a one-off solution rather than a workflow.

Troubleshooting

Images did not import. Almost always a server limit. Check upload_max_filesize and post_max_size in PHP — the whole .docx has to fit inside both. A document with 20 high-resolution photos can easily exceed a 2 MB default.

The import times out on a large file. Raise max_execution_time and memory_limit. On shared hosting you may need to ask support. Splitting a very long document into two is a legitimate workaround.

Headings came through as bold paragraphs. The document used direct formatting rather than styles. No importer can recover structure that was never recorded. Apply real heading styles in Word and re-import — this is the single most common cause of a disappointing result.

Numbered lists restart at 1. Usually a document where list numbering was applied manually rather than through Word's list tools.

The file will not upload at all. Check whether it is genuinely a .docx. A file renamed from .doc will be rejected — the old binary format is an entirely different specification. Open it in Word or LibreOffice and use Save As → .docx.

Tables lost their merged cells. Check whether the table used Word's merge function or was faked with borders and spacing. Faked structure does not convert.

A pre-import checklist

  • File is genuinely .docx
  • Headings applied from the Styles gallery, in hierarchy (H1 → H2 → H3)
  • Alt text written on every image, in Word
  • Images placed inline, not floating or anchored
  • Featured image ready
  • Meta description drafted

Getting these right in the document means the import is the easy part.

Frequently asked questions

Does this work with the Classic Editor? Yes. The output is clean HTML, which the Classic Editor handles fine.

What about documents over 5,000 words? Length is rarely the constraint — image payload is. A 10,000-word document with three images imports more easily than a 2,000-word one with forty.

Will an import overwrite my theme styling? No. A well-behaved importer produces semantic HTML that inherits your active theme's styles.

Can I import into a custom post type? With DocxToWP, yes — any registered CPT. Copy-paste and Word's blog publisher cannot.

What about Google Docs? Download as .docx first (File → Download → Microsoft Word), then import that file. Google's export is high fidelity and this is far more reliable than pasting.

Ready to stop copy-pasting?

Install the free plugin from WordPress.org and import your first document in under a minute. No account required.

Download Free from WordPress.org

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

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 $59