Back to Blog
tutorial
September 19, 2026
4 min read

How to Import a Notion Export into WordPress

N
Nagaraj Dev
Plugin Developer & Creator

Notion's Markdown export is the honest way out: you get real files you own, and they go into WordPress as real posts that don't depend on Notion afterwards. The export has a few habits — long ids in filenames, URL-encoded image paths, properties dumped as text — and this guide walks through each one against what the importer actually does with it.

Notion page(s)
  ↓  Export → Markdown & CSV
.md files + image folders
  ↓  DocxToPost (one page) or DocxToWP Pro (many)
WordPress posts

What a Notion export looks like

On the page, ⋯ → Export, format Markdown & CSV, tick Include subpages for a whole section. Unzip the download:

Export-a1b2c3/
├── Product launch 3f2a9c1d….md
├── Product launch 3f2a9c1d…/
│   ├── hero.png
│   ├── Screen Shot 2026-09-01.png
│   └── Timeline 8e7d6c5b….md          ← a sub-page
└── Team wiki 5b4a3c2d….csv             ← a database
  • One .md per page, named after the page with a 32-character id appended. The title inside the file is the # Heading on its first line, so you never see the id.
  • Images sit in a folder named like the page, referenced from the file as ![hero.png](Product%20launch%203f2a9c1d%E2%80%A6/hero.png) — URL-encoded, relative.
  • Sub-pages are .md files inside that same folder.
  • Databases export as CSV. The rows are not posts unless you exported them as pages. This route imports pages; leave the CSV.
  • A page that lived in a database has its properties written as plain lines under the title: Status: Published, Tags: launch, product.

One page: the free plugin

For a page or two, the free DocxToPost plugin does it.

  1. Plugins → Add New, search DocxToPost, install, activate (1.2.0 or later).
  2. DocxToPost → drop the .mdConvert & Preview.
  3. The title is Notion's # heading, and the heading is removed from the body so it isn't repeated. Headings, lists, tables, links and code blocks are all there.
  4. If it was a database page, the property lines are the first paragraph. Delete them on the preview screen or in the editor.
  5. Set post type, status, categories, tags, author. Publish or save a draft.

The preview lists the images it couldn't resolve — from one file it has nothing to match Product%20launch…/hero.png against. Upload them to the Media Library and add them in the editor.

One page at a time, free

DocxToPost imports Notion's Markdown as real blocks — headings, lists, tables, toggles as lists, code as Code blocks. No cap.

Get DocxToPost on WordPress.org

Many pages, with images: bulk import

DocxToWP Pro's Bulk Import takes the pages and their image folders together, and this is where Notion's URL-encoded paths stop mattering.

  1. DocxToWP → Bulk Import, start a job.
  2. Drop the .md files onto it — the top-level pages and any sub-pages you want, up to 100 per run.
  3. Open each page's folder and drop the image files onto the same job. A reference like Product%20launch%20…/Screen%20Shot%202026-09-01.png is decoded, matched to the uploaded Screen-Shot-2026-09-01.png by filename, and rewritten to its Media Library URL. The first image in a page becomes its featured image unless you choose another.
  4. Review the table: titles from the # headings, featured images, which pages to include. Set post type, status, author, categories, tags, and a drip schedule if the pages shouldn't all go live at once.
  5. Run. Failures stay on their own rows; one click undoes the entire run.

Two pages with an image of the same filename — two hero.pngs in different folders — resolve to whichever was uploaded first. Rename one before importing if that matters.

Moving a section of your workspace?

Bulk import up to 100 pages per run with the image folders dropped in, so images land in the right posts. Review first, drip-publish, undo in one click.

See DocxToWP Pro

What comes through, and what needs a hand

In the Notion exportIn WordPress
# title and ##/### headingsPost title and Heading blocks
Paragraphs, bold, italic, strikethrough, inline codeAs written
Bulleted and numbered lists, togglesList blocks (a toggle is a list item with its content nested)
Tables (simple tables, not databases)Table blocks
Code blocksCode blocks
CalloutsA plain block with the emoji and text
Images in the page folderPlaced in the post (bulk); listed for you (single)
Links to other Notion pagesSee below

Links between pages export as relative links to the other .md files — dead once they're posts. Replace them with post URLs in the editor after both exist.

Properties. The Status: … lines under the title are text in the file and stay text. Delete the paragraph. If you have a hundred database pages, this is the one tidy-up the bulk route leaves you, and a find-and-replace in the export folder before uploading removes it from all of them at once.

Embeds and synced blocks. Videos, Figma embeds, bookmarks and synced blocks don't survive Notion's own export as anything more than a link or nothing. That's Notion's export, not the import.

Databases. Not posts. If you need a database's rows as posts, open each row as a page and include it in the export; then it's a page like any other.

Post, page, or custom type?

A Notion workspace is usually a mix. Blog-like content — posts. The About and reference pages — pages. Documentation or a knowledge base — a custom post type if the site has one; bulk import offers every public type, and running each Notion section as its own job with its own post type and category is the cleanest way to sort a workspace.

The short version

Export Markdown & CSV with subpages. One page: free plugin. A section: drop the .md files and the image folders' contents on Pro's Bulk Import together; delete the property paragraphs; run.


Coming from Joplin or Obsidian instead? Same idea, different export. The general Markdown guide covers everything else.

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