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.
Open a .md file and see exactly how it renders, with the source one click away. Nothing leaves your browser.
Your file is read and rendered in your browser. Nothing is uploaded, stored or logged.
Markdown is designed to be readable as plain text, and mostly it is. But a document of any length stops being readable the moment it has a table in it, or three levels of nested list, or reference-style links whose destinations are collected at the bottom. You end up reading the punctuation instead of the writing.
Double-clicking the file does not help much either. Depending on the machine it opens in a plain text editor, in whatever app last claimed the extension, or in a dialog asking you to choose one. None of those shows you the document.
Open the file and you get the rendered version: headings at their real sizes, lists indented, tables as tables, code in a monospaced block, links as links. The things Markdown actually defines, rendered the way the specification says.
The source is one click away in the same panel, on the same toggle. That pairing is the useful part. When a heading has not come out as a heading, or a list has collapsed into a paragraph, the answer is almost always a missing blank line or a stray space, and switching between the two views is how you find it.
The document gets the full width of the page rather than sharing it with the file picker. That matters for the things that are hardest to read as plain text in the first place: a table squeezed into half a screen wraps every cell, and a code block starts scrolling sideways.
App-specific syntax is left as text. Obsidian’s [[wiki links]], Notion callouts and GitHub task-list checkboxes are features of those apps rather than of Markdown, and rendering them here would tell you your file works somewhere it might not. They appear as the characters they are.
Raw HTML is shown, not run. Markdown permits HTML, and plenty of real documents contain some. Every character is escaped before any markup is added, so a <script> in a file you were about to inspect is displayed rather than executed.
Images with a relative path cannot resolve. A single file knows nothing about the folder it came from, so images/photo.png has nothing to point at. An image with a full https:// address loads normally. This is the same limit the plugin has on a single-file import, and the reason bulk import takes the images folder alongside the notes.
Previewing a file is usually the step before publishing it. The free DocxToPost plugin on WordPress.org imports a .md file directly as a post, keeping headings, lists, tables, blockquotes and fenced code, and turning them into real blocks rather than one lump of HTML.
That covers notes exported from Obsidian, Joplin or Notion, a README, or whatever an AI assistant handed you. For a folder of them at once, with the images each note references matched up by filename, DocxToWP Pro adds bulk import.
Previewed your Markdown?
This tool handles one document and gives you markup to paste. The DocxToWP plugin skips the copy and paste. It uploads your images to the Media Library as real attachments, fills your Yoast or Rank Math fields, and imports a hundred documents in one run.
The free plugin has no upload cap. Pro is from $49/year and adds bulk import, scheduling and SEO fields.
No. The file is read by your browser and rendered on your own machine. No request is made and nothing is stored or logged. That matters because people open drafts, client work and unpublished writing in tools like this one, and it is the reason this is safe to do with a file you have not published yet.
Any .md, .markdown, .mdown, .mkd or .txt file up to 2 MB, which is far larger than any real Markdown document. The file type is checked by its extension rather than what the browser reports, because operating systems disagree about Markdown and report text/markdown, text/plain or nothing at all for the same file.
This renders the constructs Markdown itself defines: headings, paragraphs, bold, italic, strikethrough, links, images, nested lists, blockquotes, tables, horizontal rules and fenced code. It does not render extensions a particular app adds on top, such as Obsidian wiki links, Notion callouts or GitHub task-list checkboxes, which are shown as the plain text they are. Those are app features rather than Markdown.
Yes. The output panel switches between the rendered preview and the Markdown source, and the copy and download buttons act on the source. It is useful when the preview is not what you expected and you want to see which character caused it.
No. Every character of the file is escaped before any markup is added, so HTML written inside your Markdown is displayed as text rather than run. A preview exists to show you what a file says; running a script from a file you were about to inspect would be a poor trade.
The free DocxToPost plugin on WordPress.org imports a .md file directly as a WordPress post, with headings, lists, tables, blockquotes and fenced code intact. For a whole folder of notes at once, including the images they reference, DocxToWP Pro adds bulk import.
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.
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.
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.
Pro from $49/year Solo, Studio and Agency tiers