How to export obsidian markdown notes as a pdf
- Step 1Find the note's .md file in your vault — Obsidian stores each note as a plain
.mdfile in the vault folder. Use that file directly, or in Obsidian copy the note's source (not the rendered preview) into a new file. - Step 2Strip Obsidian-only syntax — Before converting, remove or replace: wikilinks
[[Note]], embeds![[file]], Dataview/Tasks code blocks, callout markers> [!info],%%comments%%, block refs^id, and the front-matter--- … ---block. These all print as raw text otherwise. - Step 3Open the converter and drop the cleaned file — Load the Markdown to PDF converter and drop the
.mdfile. Accepted:.md,.markdown,.txt. Conversion runs locally. - Step 4Let it auto-convert — There's no options panel — the note converts the moment it's added. Headings become bold and larger; everything else is 10 pt.
- Step 5Check long lines and embeds — Lines over 100 characters are truncated. Obsidian notes often have long unwrapped paragraphs — wrap them first. Confirm no
![[…]]embeds slipped through; they print as text, not images. - Step 6Download and share — Download the PDF (named
<filename>.markdown-to-pdf.pdf) and send it to the recipient. The vault content never left your browser.
Obsidian syntax: what renders vs. what to strip
Obsidian extends Markdown heavily. This tool understands only standard Markdown — everything else prints as literal text, so strip it first.
| Obsidian syntax | In the PDF | Recommended action |
|---|---|---|
# Heading | Bold, larger line (renders) | Keep — works as expected |
**bold** / *italic* | Markers removed, plain text | Keep (emphasis is lost, text is fine) |
[[Other Note]] wikilink | Literal [[Other Note]] | Replace with plain text or a real link |
![[image.png]] embed | Literal ![[image.png]] | Remove; place images via Image to PDF |
` dataview ``` block | The query text, literally | Remove — it can't be executed |
> [!note] Title callout | Literal > [!note] Title | Convert to a plain heading + text |
%%comment%% | Literal %%comment%% | Delete — these are private comments |
^block-id | Literal ^block-id | Delete the block reference id |
--- … --- front-matter | Printed verbatim | Delete the YAML block |
Obsidian export contract
The real facts for exporting a single vault note.
| Property | Value |
|---|---|
| Input | .md, .markdown, .txt (Obsidian notes are .md) |
| Scope | One note per run — not a whole vault |
| Output | Single PDF, US Letter (612×792 pt), fixed |
| Wikilinks / embeds / Dataview | Printed as raw text |
| Callouts | Printed as raw > [!type] text |
| Free size limit | 2 MB (Pro removes it) |
| Line wrap | None — truncated at ~100 chars |
| Privacy | Client-side; vault content never uploaded |
Cookbook
A strip-and-convert checklist for the most common Obsidian features, with before/after.
Wikilinks become plain text first
Obsidian's [[Note]] links are vault-internal and meaningless outside it. Replace them with plain text (or a real URL) before converting.
Before (vault note): ## See also Related: [[Project Roadmap]] and [[Q2 Goals]] After cleaning: ## See also Related: Project Roadmap and Q2 Goals PDF output: See also ← 14 pt bold Related: Project Roadmap and Q2 Goals
Embeds must be removed — they print as syntax
![[image.png]] and note embeds don't render. Delete them, and add any needed images separately.
Before: # Design review ![[mockup-v3.png]] Looks good overall. If converted as-is, the PDF shows: Design review ← 16 pt bold ![[mockup-v3.png]] ← literal text Looks good overall. Fix: delete the embed; place the image via Image to PDF if needed.
Callouts collapse to a plain heading + text
Obsidian callouts (> [!note]) print their raw marker. Rewrite them as a normal heading and paragraph for a clean export.
Before: > [!warning] Heads up > Don't deploy on Fridays. After cleaning: ## Heads up Don't deploy on Fridays. PDF output: Heads up ← 14 pt bold Don't deploy on Fridays.
Dataview blocks can't run — delete them
A Dataview query is executed by a plugin, not by this tool. The raw query prints. Replace it with the static result, or remove it.
Before: ## Open tasks ```dataview task where !completed ``` If converted as-is: Open tasks ← 14 pt bold ```dataview ← literal task where !completed ← literal ``` ← literal Fix: paste the actual task list as plain text, then convert.
Strip front-matter, comments, and block refs
These vault-only bits all print verbatim. A quick cleanup pass removes the noise.
Before: --- tags: [meeting] --- # Standup %%internal%% - Shipped login ^task-1 After cleaning: # Standup - Shipped login PDF output: Standup ← 16 pt bold - Shipped login
Edge cases and what actually happens
Wikilinks print with their double brackets
Literal text[[Note]] and aliased links [[Note|label]] print as raw text — the tool has no concept of a vault to resolve them. Replace each wikilink with plain text or a real Markdown link to a public URL before converting.
Embeds don't render the embedded content
Not embedded![[image.png]], ![[Other Note]], and ![[note#heading]] embeds all print as their literal syntax, not the image or transcluded text. Remove embeds, and add any needed images via Image to PDF or the HTML path.
Dataview / Tasks queries print as code
Not executedPlugin code blocks like ``` dataview or tasks ``` are not run — the query text prints. Replace each with the static result you want to share, then convert.
Callouts show their raw marker
Plain textObsidian callouts (> [!info], > [!warning], etc.) print the literal > [!type] Title line and the quoted body with its > characters. Rewrite callouts as a plain heading plus paragraph for a clean look.
Comments and block references leak into the PDF
Literal text%%private comment%% and block-reference ids like ^abc123 are vault-only and print verbatim. Delete them before converting so internal notes and ids don't end up in a shared PDF.
Front-matter is printed verbatim
Literal textThe YAML --- … --- block Obsidian uses for tags, aliases, and properties prints as text. Delete it from the top of the file before converting.
Long unwrapped paragraphs get truncated
TruncatedObsidian often stores a paragraph as one long line. This tool cuts each line at 100 characters with no wrap, so long paragraphs lose their tail. Wrap them in your editor before converting.
Whole-vault export isn't supported here
Single fileThis tool converts one note per run. To export many notes, convert them individually and combine with PDF Merge, or use Obsidian's own Pandoc/export plugin for a batch with full feature support.
Emoji and non-Latin glyphs may drop
May dropHelvetica's WinAnsi set has no emoji and no CJK glyphs, so symbols and non-Latin scripts in a note can fail to draw. Keep shared text in the Latin range, or use the HTML path with a Unicode font.
Fixed US Letter, no theme
FixedOutput is always 612×792 pt (US Letter) with the default Helvetica style — no A4 option, no theme, no CSS. For a styled or A4 export, render the cleaned Markdown to HTML and use HTML to PDF.
Frequently asked questions
Will Obsidian wikilinks [[...]] render in the PDF?
No — wikilinks print as their literal [[Note]] text because the tool has no vault to resolve them against. Replace each with plain text or a standard Markdown link [label](url) to a public URL before converting. Aliased links [[Note|label]] also print verbatim, so swap them for the label text.
Will Obsidian callouts render?
No. Callouts use Obsidian's > [!type] blockquote extension, which this tool doesn't understand — the raw > [!note] Title marker and the >-prefixed body print as text. The cleanest result is to rewrite each callout as a normal heading plus a paragraph before converting.
Can I convert a whole Obsidian vault at once?
No — this tool converts one note per run. Convert notes individually and combine them with PDF Merge, or for a batch with full feature support (wikilinks, embeds, callouts) use Obsidian's own Pandoc or export plugin, which is built for whole-vault export.
Why are ![[...]] embeds showing as text instead of images?
Embed syntax (![[image.png]], ![[Other Note]]) is Obsidian-specific and isn't resolved here — it prints as literal text. Remove embeds before converting. To include an image, add it separately with Image to PDF, or render the cleaned note to HTML with the image inlined and use HTML to PDF.
My Dataview block printed its query instead of results — why?
Dataview (and Tasks) blocks are executed by Obsidian plugins, not by this converter, so the raw query text prints. Before converting, replace each plugin block with the static result you want to share — copy the rendered list/table out of Obsidian as plain text.
Will my front-matter, comments, and block IDs show up?
Yes, as literal text — the YAML --- … --- block, %%comments%%, and ^block-id references all print verbatim because the tool treats them as ordinary text. Strip them before converting so internal metadata doesn't end up in a shared PDF.
Is my vault content uploaded anywhere?
No. Conversion runs entirely in your browser using pdf-lib; the note never leaves your device. Only an anonymous run counter is recorded when you're signed in, and you can opt out — private vault notes stay private.
Can I paste a note instead of uploading the file?
No. The tool reads a dropped or browsed file only and has no paste box. Since Obsidian already stores each note as a .md file in your vault folder, just drop that file in — or save a cleaned copy first.
Why did a long paragraph get cut off?
Lines are truncated at 100 characters with no word-wrap, and Obsidian often keeps a paragraph as one long line. Use a 'wrap/reflow paragraph' command in your editor (or insert line breaks) before converting so the full text appears.
Will it match my Obsidian theme or appearance?
No. The PDF uses a fixed style — Helvetica, black, US Letter — with no theme or CSS input, so it won't look like your Obsidian appearance. For a styled export, render the cleaned Markdown to HTML with a stylesheet and use HTML to PDF.
What gets preserved without any cleanup?
Standard Markdown only: # headings (rendered bold and larger) and plain paragraph text. */** emphasis markers are stripped to plain text. Everything Obsidian adds on top — wikilinks, embeds, callouts, Dataview, comments, block refs, front-matter — prints as raw text, so a cleanup pass is what gives you a tidy export.
What is the downloaded file named?
It is named after your source file with a .markdown-to-pdf.pdf suffix — e.g. meeting-2026-06-01.markdown-to-pdf.pdf. Rename it after downloading for sharing.
Privacy first
All PDF processing runs locally in your browser using PDF-lib and pdf.js. No file is ever uploaded — only metadata counters are saved for signed-in dashboard stats.