How to Publish Obsidian Notes to WordPress
An Obsidian vault is the easiest source there is: it's already a folder of Markdown files, no export step. The two things that trip people up are Obsidian's own link syntax and where the attachments live. Sort those out and a vault goes into WordPress as clean, editable posts.
Obsidian vault (.md files + attachments)
↓ standard image links, not ![[wikilinks]]
DocxToPost (one note) or DocxToWP Pro (a folder)
↓
WordPress posts
Step 1: make image embeds standard Markdown
By default Obsidian writes an embedded image as ![[diagram.png]]. That is a wikilink, not Markdown, and no importer outside Obsidian reads it — it arrives as the literal text ![[diagram.png]].
In Settings → Files and links, turn off Use [[Wikilinks]]. From then on Obsidian writes embeds as , which is standard. Notes you wrote before the change still contain the old form; convert those before importing — a find-and-replace from ![[ / ]] to the standard form works for a handful, and for a large vault a link-conversion plugin from the community is the tool.
While you're in that screen, note Default location for new attachments. That is the folder you'll drop in alongside the notes in the bulk step.
Step 2: one note, free
For a single note the free DocxToPost plugin does the whole job.
- Plugins → Add New, search DocxToPost, install, activate (1.2.0 or later).
- DocxToPost → drop the
.mdon the upload area → Convert & Preview. - The title is the note's first
# Headingif it has one, otherwise the filename — which is exactly how Obsidian treats titles, so it usually comes out right. Front matter is removed. - Set post type, status, categories, tags, author. Publish or save a draft.
The preview screen lists any relative images it could not resolve — from one file, it has nothing to resolve attachments/diagram.png against. Upload those to the Media Library and add them in the editor.
One note at a time, free
DocxToPost imports Obsidian notes as real blocks: headings, lists, tables, callouts as quotes, fenced code as Code blocks. No cap.
Get DocxToPost on WordPress.orgStep 3: a folder of notes, with attachments
DocxToWP Pro's Bulk Import takes the notes and their images together.
- DocxToWP → Bulk Import, start a job.
- Drop the
.mdfiles onto it — up to 100 per run. - Drop the attachments onto the same job. Every
is matched to the uploadeddiagram.pngby filename and rewritten to its Media Library URL. The first image in a note becomes its featured image unless you choose another. - Review the table: titles, featured images, which notes to include. Set post type, status, author, categories, tags, and a drip schedule if you don't want the whole vault going live in one minute.
- Run. Failures stay on their own rows and can be retried; one click undoes the entire run.
Publishing a whole folder?
Bulk import up to 100 notes per run with the attachments folder dropped in, so images land in the right posts. Review first, drip-publish, undo in one click.
See DocxToWP ProWhat comes through, and what needs a hand
| In Obsidian | In WordPress |
|---|---|
| Headings, paragraphs, emphasis, inline code | As written |
Standard links [text](https://…) | Links |
| Nested lists, tables, fenced code | List, Table and Code blocks |
> quotes | Quote blocks |
 | Placed in the post (bulk); listed for you (single) |
| Front matter | Removed; a title: is used if present |
Obsidian's own syntax needs attention:
[[Wikilinks]] to other notes arrive as the literal text in brackets. They point at notes in your vault, not at URLs, and an importer can't know a post's URL before the post exists. Replace them in the editor afterwards.
Callouts — > [!note] Title — become ordinary blockquotes with [!note] Title as the first line. Tidy the marker off in the editor, or accept the quote.
Dataview, math, Mermaid, tasks. Dataview queries are plain text once outside Obsidian. Maths in $…$ is left as typed. A Mermaid fence becomes a Code block holding the source. - [ ] task lists arrive as list items starting with [ ].
Daily notes and folder structure. Folders don't become categories. Run each folder as its own bulk job with its own category, or set categories on the review screen.
Post, page, or something else?
Most vault content is dated or serial — posts. Reference notes you'd link from a menu — pages. If the site has a custom post type that fits (documentation, recipes, a knowledge base), bulk import offers every public post type.
The short version
Turn off wikilinks so images are standard . One note: free plugin. A folder: drop the notes and the attachments folder on Pro's Bulk Import together.
Coming from Joplin or Notion instead? Same idea, different export. The general Markdown guide covers everything else.
Related Articles
How to Import Joplin Notes to WordPress
Joplin to WordPress: export your notes as Markdown and import them as posts with headings, lists, tables, code and images intact. One note free, a whole notebook with Pro.
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.
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.