How to Import Joplin Notes to WordPress
Joplin has no WordPress export. People have been asking for one on the Joplin forum for years — with tags, links and notebook structure — and the answer has stayed the same: export to Markdown and import that. Which is fine, as long as the import side handles what Joplin actually writes. Here is what it writes, and how to get it into WordPress with the structure intact.
Joplin
↓ Export → MD - Markdown + Front Matter
.md files + _resources/
↓ DocxToPost (one note) or DocxToWP Pro (the notebook)
WordPress posts
What a Joplin export looks like
Export from the desktop app: right-click a notebook, or select notes, then Export → MD - Markdown + Front Matter. Choose a folder. You get:
My Notebook/
├── Setting up the workshop.md
├── Week one notes.md
├── Sub-notebook/
│ └── Reading list.md
└── _resources/
├── 4b2d6f9a1c3e4f5a8b7c9d0e1f2a3b4c.png
└── 7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b.jpg
Three things to know about it:
- Each note is one
.mdfile named after the note, in a folder per notebook. - Images live in
_resources, under random filenames. Inside a note they are referenced relatively:. The filename tells you nothing about which note it belongs to. - The front matter carries the title and Joplin's metadata:
---
title: Setting up the workshop
updated: 2026-09-10 14:22:00Z
created: 2026-08-02 09:15:00Z
tags:
- workshop
- setup
---
Choose the Front Matter variant over plain MD - Markdown. With plain Markdown the importer still works, but the title comes from the filename instead of the note. There is no reason to lose that.
One note: the free plugin
For a note or two, the free DocxToPost plugin does the whole job.
- In WordPress, Plugins → Add New, search for DocxToPost, install, activate. You need 1.2.0 or later.
- Open DocxToPost from the admin menu and drop the
.mdfile on the upload area. Click Convert & Preview. - The title is Joplin's front matter title. The front matter block itself is gone from the body. Headings, lists, tables, links, blockquotes and code blocks are all there.
- Pick post type, status, categories, tags and author. Publish or save as a draft.
Open it in the block editor and every element is its own block — each heading a Heading block, each code sample a Code block. Nothing in the post depends on the plugin afterwards.
What you will see on the preview screen: a notice listing the images it had to leave out, because ../_resources/4b2d….png cannot be resolved from a single uploaded file. Upload those images to the Media Library and drop them into the post in the editor. For a note with two screenshots that is a minute; for a notebook with two hundred it is not, which is what the next section is for.
One note at a time, free
DocxToPost imports .md files from Joplin with no cap on how many. Front matter titles honoured, code blocks kept as Code blocks.
Get DocxToPost on WordPress.orgA whole notebook: bulk import with images
This is the case the forum threads are really about — someone with a notebook of two hundred notes and a _resources folder to match. DocxToWP Pro handles it on its Bulk Import screen.
- Open DocxToWP → Bulk Import and start a job.
- Drop all the
.mdfiles onto it, from every notebook folder you want to import (up to 100 per run — split a bigger export into runs). - Drop the contents of
_resourcesonto the same job. This is the part that makes the difference: everyin a note is matched to the uploaded4b2d….pngby its filename and rewritten to that image's Media Library URL. The random names Joplin uses don't matter, because the match is on the exact filename the note refers to, not on the note's title. - The review table shows every note with its title from the front matter. Edit any title inline, untick notes you don't want, and if a note's first image should be its featured image, that has already happened — the first resolved image takes the featured slot unless you pick one yourself.
- Set the job-wide settings — post type, status, author, categories, tags — and, if you don't want two hundred posts going live at once, a drip schedule: one per weekday from Monday at 09:00, say.
- Run it. Each note becomes a post; a note that fails only fails its own row, and you can retry just the failures. One click undoes the whole run if the result isn't what you wanted.
A note that still references an image you didn't upload gets a note on its row saying which one, so nothing goes missing silently.
Moving a whole Joplin notebook?
Bulk import up to 100 notes per run with the _resources folder dropped in alongside, so images land in the right posts. Drip-publish across days, review everything first, undo in one click.
See DocxToWP ProWhat comes through, and what needs a hand
| In your Joplin note | In WordPress |
|---|---|
# to ###### headings | Heading blocks |
| Paragraphs, bold, italic, strikethrough, inline code | As written |
[link](https://…) and bare URLs | Links |
| Bulleted and numbered lists, nested | List blocks |
| Tables | Table blocks, column alignment kept |
| Fenced code, with a language | Code blocks |
Front matter title: | The post title |
Images in _resources | Placed in the post (bulk); listed for you (single) |
External images (https://…) | Kept, pointing at the original URL |
And the Joplin-specific things that need attention:
Links between notes. Joplin turns [Reading list](:/1a2b3c…) into a relative link to Reading list.md on export. After import that points at a file that no longer exists. Once both posts are published, replace the link with the post's URL in the editor. There is no way for an importer to know a post's URL before the post exists.
Tags. They're in the front matter, and the importer reads only the title from it — deliberately, because mapping half of a note's metadata is worse than mapping none. Set tags on the preview screen, or job-wide in bulk import; for a notebook that is one tag set for the whole run, then exceptions in the editor.
Joplin's extra syntax. ==highlighted text==, [toc], KaTeX $…$, ++inserted++ and checkbox lists are Joplin-side extensions to Markdown. They come through as the characters you typed. A Mermaid diagram in a code fence becomes a Code block holding the Mermaid source.
Notebook structure. Sub-notebooks don't become categories. Choose categories on the review screen — or run each notebook as its own bulk job with its own category, which is usually the cleaner result.
Post or page?
Joplin doesn't distinguish, WordPress does, and the importer lets you pick any post type per run.
- Posts for anything dated or serial: journal entries, articles, tutorials, changelogs. This is most notebooks.
- Pages for the few evergreen things: an About, a reference, a resources list.
- A custom post type if your site has one that fits — documentation, recipes, a knowledge base. Bulk import offers every public post type on the site.
Why not paste?
Pasting a Joplin note's Markdown into the block editor half-works — headings and lists convert — but every single line break becomes a forced <br>, the front matter appears as text, the title has to be typed again and images vanish. For a paragraph it's fine; for a notebook it's a week. The Markdown import guide goes through what the paste route actually does.
The short version
Export with MD - Markdown + Front Matter. One note: drop the .md on the free plugin. A notebook: drop the notes and the _resources folder on Pro's Bulk Import together, set the job, run it.
Not Joplin? The same workflow for Obsidian and Notion, and the general Markdown guide for everything else.
Related Articles
How to Import a Notion Export into WordPress
Notion to WordPress via Markdown export: get pages into WordPress as posts with headings, lists, tables and images intact, one page free or a whole workspace with Pro.
How to Publish Obsidian Notes to WordPress
Obsidian to WordPress: your vault is already Markdown. Import notes as posts with headings, lists, tables and code intact, and get attachments into the right posts in bulk.
Import Markdown Into WordPress as Real Blocks
How to get a .md file into WordPress with headings, lists, tables and code blocks intact, using the free DocxToPost plugin. Covers ChatGPT, Notion and Obsidian exports.
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.