Export notes to accessible, archival-quality PDFs (PDF/A-2A and PDF/UA-1) using the makespdf.com API.
Export an Obsidian note to a typeset, accessible PDF using the makespdf.com API.
Obsidian's built-in export prints the rendered view. This plugin sends the note's markdown to a layout service that produces a tagged PDF: real heading structure, alt text on figures, table headers, and reading order. Output is PDF/A-2A + PDF/UA-1 compliant, which is what accessibility and archival requirements generally ask for.

A note containing callouts, wikilinks, a table, a code block, and task items, exported with the default settings.
This plugin sends note content to a remote server. It cannot work offline.
https://makespdf.com/api/v1/md and the resulting PDF is written back into
your vault. Nothing else is transmitted.![[note]]) are inlined too, so their contents are
sent as well.No account is required. Without an API key the plugin uses a free anonymous path, which is rate limited by IP (60/hour, 200/day) and capped at 20 pages per export.
Adding an API key from a makespdf.com account raises those limits and removes the page cap. Exports made with a key draw on that account's render credits (1 credit per 10 pages), less any free page allowance currently in effect.
The PDF is written into your vault, next to the note, or into the folder set in Output folder. Re-exporting overwrites the previous file.
Output paths are relative to the vault root. PDFs are created through Obsidian's
vault API, so they cannot be written outside the vault: a path like
~/Downloads is not expanded and is rejected rather than creating a folder
named ~ in your vault.
Obsidian-specific syntax is translated to GitHub Flavored Markdown before export:
| Obsidian | Becomes |
|---|---|
[[Page]], [[Page|Alias]] |
plain text (Page, Alias) |
![[note]], ![[note#Heading]] |
the referenced content, inlined (max 3 levels deep) |
![[image.png|400]] |
a sized image |
==highlight== |
<mark> (the API does not yet paint a highlight, so the text renders plain) |
%%comment%% |
removed |
#tag, #nested/tag |
inline code |
> [!tip], > [!danger] and other callouts |
the closest GFM alert |
trailing ^block-id |
removed |
Code blocks are syntax highlighted, tables keep their alignment, and footnotes, task lists, and Mermaid diagrams render natively.
| Setting | Default | Description |
|---|---|---|
| API key | empty | Optional. Raises rate limits and removes the 20-page cap. |
| API URL | https://makespdf.com |
Point at your own deployment if self-hosting. |
| Page size | A4 | A3, A4, A5, Letter, or Legal |
| Font family | Inter | Inter or Noto Sans |
| Font size | 10 | Points, 6 to 24 |
| Output folder | empty | A folder inside your vault. Empty saves the PDF alongside the note. |
npm install
npm run dev # watch build with inline sourcemaps
npm run build # production build
npm run typecheck
npm test
To test against a local API service, run the makesPDF app and set API URL to
http://localhost:8788.
To load the plugin into a vault, symlink the repo into the vault's plugin folder and enable it under Settings, Community plugins:
ln -s /path/to/makespdf-obsidian-plugin \
/path/to/your-vault/.obsidian/plugins/makespdf
MIT. See LICENSE.