Obsidian Better Export PDF, the export features Obsidian's own PDF function leaves out
Obsidian PDF export enhancement plugin
At a glance
- What is it?
- l1xnan/obsidian-better-export-pdf is a community plugin that adds an export preview, outline bookmarks, custom margins, page numbers, front matter metadata and multi-file export to Obsidian's built-in PDF export, driven by Electron's printToPDF rather than by a separate renderer.
- Who is it for?
- Adopt this plugin if you export notes to PDF regularly and the built-in export leaves out something you need, most often page numbers, a table of contents or metadata. Skip it if you export rarely or only need plain single notes, since the built-in function covers that.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 61 days ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 20, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What the plugin adds to the built-in export
Better Export PDF is described as an Obsidian PDF export enhancement plugin. The stated job is to add the ability to export a bookmarks outline, export a preview and add page numbers to PDF, compared to the official PDF export function.
The README lists the features in full, and reading them as a list of complaints about the built-in export is the clearest way to understand the scope. Support for export preview, so you see the result before committing to a file. Export of the outline bookmarks, so the generated PDF has a navigable table of contents. Customisable margins. Export of page numbers. Support for adding PDF metadata from front matter, which means the title, author and creation date of a note can travel into the file properties. Export of internal links within a file, so a note that links to other notes carries the linked content with it. Export of multiple Markdown files, either a folder or a specified set, into one PDF file. Batch export of multiple PDF files. And support for exporting PDFs in any size, including putting all the content onto a single page.
That last capability and the one-page export are the two that stand out, because they are not things the built-in function can be coaxed into doing through a print stylesheet. Everything else is a matter of the same mechanism used better.
The plugin is MIT licensed, written in TypeScript, and the releases are 2.0.1, 2.0.2 and 2.0.3 in June and July 2026, with the last push on 2026-08-23. The repository is not archived and the default branch is master.
The documentation is bilingual, with an English README and a Chinese one linked at the top, and the project is published as a community plugin under the name Better Export PDF, so it is searchable in the plugin browser.
Installing it and the export flow
The normal route is through Obsidian itself. Go to Settings, then Third-party plugins, then Community Plugins, then Browse, and search for Better Export PDF.
The manual route is documented too. Download the zip file from the latest release, unzip it into the plugins folder inside your vault, which is the .obsidian/plugins directory, reload Obsidian and enable the plugin. The README also mentions the BRAT plugin as another way to install it, which is the usual answer for people who want a pre-release build.
The export flow has three steps and is worth describing because the second one is where the plugin earns its name. First you choose the export target, either from the More options menu in the upper right of the current Markdown view, where you select Better Export PDF, or from the command panel, where you pick the Export Current File to PDF command. Then you modify the configuration in the dialog that appears. Then you click Export and choose a path, and the README notes that if you do not want to change the configuration you can press Enter to trigger the export directly.
That preview step is the difference from the built-in export. The built-in function goes straight to a file, so the only way to see what you will get is to produce the file and open it. Here the configuration is shown first.
The plugin also has a settings area of its own, and one option there is worth knowing about early. There is a Limit Concurrency setting for the rendering phase when exporting multiple files, with a default of 5, and the README explains that you can lower it to reduce resource consumption or raise it to increase the speed. On a laptop with a modest amount of memory, a batch export of a large vault at the default concurrency is a reasonable way to make the machine unpleasant, so this is the setting to lower first if you plan to convert more than a handful of notes.
Headers, footers and page numbers
Page numbers are set through the Header Template and Footer Template options, and the README gives an example of what a footer looks like:
<div style="width: 100vw;font-size:10px;text-align:center;">
<span class="pageNumber"></span> / <span class="totalPages"></span>
</div>The template is any HTML fragment, and the README says so directly. It points at the Electron documentation for the webview printToPDF options for the details, which is the right reference because the placeholders come from that API rather than from the plugin.
The other example shows a fragment that embeds an image as a base64 encoded SVG:
<div style="width: 100vw;font-size:10px;text-align:center;">
<img height="10px" width="10px" src="data:image/svg+xml;base64,xxx..." />
<span class="title"></span>
</div>The document level equivalents can be set in front matter as headerTemplate and footerTemplate, so a specific note can carry its own header and footer without changing the global setting. That is the more useful of the two routes for a vault with mixed content.
Custom styling of the export goes through a CSS snippet under Appearance, and the README's example is worth copying rather than writing from scratch, because it uses the CSS custom properties Obsidian exposes:
@media print {
body {
--font-interface-override: "Times New Roman" !important;
--font-text-override: "Times New Roman" !important;
--font-print-override: "Times New Roman" !important;
--font-monospace-override: "Consolas" !important;
--font-text-size: 20px !important;
font-family: "Times New Roman" !important;
}
}The important part is the print media query, because Obsidian's own print stylesheet is what the exported document inherits, and the override variables are the supported way to change fonts rather than editing the generated CSS.
There is also a Select CSS snippets option in the plugin configuration. Enabling it makes a CSS snippets chooser appear in the export modal, so you can apply snippets that are not globally enabled under Appearance, which is a good way to keep a print-only stylesheet out of your daily editing view.
Metadata, multiple files and the one-page export
PDF metadata can be added through the front matter of the document, and the README lists the supported fields: title, author, keywords, created_at, updated_at, creator and producer. The created_at and updated_at names are Obsidian's own front matter property names, so a note that already tracks them will populate the PDF automatically.
Exporting multiple files works in two ways and the distinction matters for correctness.
The quick route is to select a folder in the sidebar, right-click it and choose Export folder to PDF, which exports the entire folder contents into one PDF file. The README carries an important caveat in a note right after: this does not guarantee the file export order. So the content is right but the sequence is not, which is acceptable for a reference dump and not acceptable for a document that reads in order.
The controlled route uses a table of contents note. You create a note, give it a table of contents document property, and list the notes as internal links:
---
toc: true
---
## Table of Contents
[[Note1|Title1]]
[[Note2]]
[[Note2]]That lets the plugin export the notes in the order of the internal links, and the exported table of contents supports clicking to jump to a note. The README is explicit about one procedural detail: when exporting with a table of contents file you right-click that file and choose Better Export PDF, and you do not use Export Folder to PDF. Using the wrong entry point gets you the unordered version.
Batch export of separate PDFs is a third option, again from the folder context menu with Export each file to PDF, which produces one PDF per note in the folder.
The one-page export is the simplest of the four. In the export dialog, select Custom for Page Size and set Margin to None, then set the page size to whatever the document needs. That produces a single continuous page, which is what you want for a long note that would otherwise be split arbitrarily across pages.
The TODO list at the end of the README is worth reading, because it shows what is not finished yet. Adding internal link content to footnotes and appendices automatically is not done, support for pagedjs beautification is not done, exporting multiple Markdown files into one PDF is listed as not done despite appearing in the feature list, and the default print media query style has not been improved. Support for print preview and for front matter metadata are marked as done.
Editorial conclusion
Adopt this plugin if you export notes to PDF regularly and the built-in export leaves out something you need, most often page numbers, a table of contents or metadata. Skip it if you export rarely or only need plain single notes, since the built-in function covers that. Verify first by installing it from the community plugin list, exporting one note with a preview, and checking the page numbering and outline in the resulting file before you convert a whole vault.
Frequently asked questions
What does obsidian-better-export-pdf add to Obsidian's own PDF export?
The README lists export preview, export of the outline bookmarks, customisable margins, page numbers, PDF metadata added from front matter, export of internal links within a file, export of multiple Markdown files into one PDF, batch export of multiple PDF files, and support for exporting at any size including putting all content onto a single page.
How do I install obsidian-better-export-pdf?
Through Obsidian, by going to Settings, Third-party plugins, Community Plugins and Browse, then searching for Better Export PDF. Or manually, by downloading the zip from the latest release, unzipping it into the vault's .obsidian/plugins directory, reloading Obsidian and enabling the plugin. The BRAT plugin is another route.
How do I set page numbers in the exported PDF?
Through the Header Template and Footer Template options, using an HTML fragment with the pageNumber and totalPages placeholders. The same templates can be set per document through the headerTemplate and footerTemplate front matter properties, and the README links the Electron webview printToPDF documentation for the details.
How do I export several notes into one PDF in the order I want?
Create a table of contents note with the toc: true document property and list the notes as internal links, then right-click that note and choose Better Export PDF. The quick route of selecting a folder and choosing Export folder to PDF does not guarantee the file export order, and the README notes that with a table of contents file you should not use the folder option.
Which PDF metadata fields can be set from front matter?
The supported fields are title, author, keywords, created_at, updated_at, creator and producer. There is also a Limit Concurrency setting under Plugin Settings for the rendering phase when exporting multiple files, which defaults to 5 and can be lowered to reduce resource use.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/l1xnan-obsidian-better-export-pdf)Was this useful?