Jupyter Notebook Export to PDF: 5 Methods That Actually Work (2026)
Beyond nbconvert: five reliable ways to export a Jupyter Notebook to PDF in 2026 — from the classic CLI to browser-based converters, with pros and cons for each.
- #jupyter
- #export
- #guide
The "export to PDF" button in JupyterLab is a lie — or rather, it's a thin wrapper around nbconvert that quietly assumes you've already installed a 3 GB LaTeX distribution. If that's not your situation, don't worry: there are at least five reliable paths from .ipynb to PDF, and most of them skip LaTeX entirely.
Here's the current (2026) landscape, ranked roughly from most-convenient to most-tweakable.
Method 1 — Online Converter (Fastest)
A browser-based converter like ipynbtopdf.org handles everything server-side.
- Open the site.
- Drag in your
.ipynb. - Download the PDF ~3 seconds later.
Pros: Zero install, works on any OS including mobile, renders code highlighting + matplotlib + LaTeX correctly. Cons: Requires internet. You should trust the provider's deletion policy.
This is the right default for students, one-off reports, and anyone on a managed laptop where installing TeX is blocked.
Method 2 — nbconvert --to webpdf (No LaTeX Required)
If you have Python but not LaTeX, use nbconvert's newer webpdf exporter, which renders via headless Chromium instead of TeX.
pip install "nbconvert[webpdf]"
playwright install chromium
jupyter nbconvert --to webpdf notebook.ipynb
Pros: No LaTeX dependency, output looks like JupyterLab's on-screen render, fully local. Cons: You still need ~300 MB for Chromium and the playwright install step trips some users up.
Method 3 — HTML Export + Browser Print
Old reliable. Export to HTML, open in Chrome, print to PDF.
jupyter nbconvert --to html notebook.ipynb
Then open the HTML and Cmd/Ctrl + P → Save as PDF.
Pros: No extra dependencies, total control over print CSS. Cons: Manual step. Wide tables and cell outputs need custom CSS to look right. Cell numbering often disappears.
Method 4 — Classic nbconvert --to pdf (LaTeX)
The canonical path. If you already have a working TeX install, this is still the most faithful renderer.
jupyter nbconvert --to pdf notebook.ipynb
Pros: Excellent output quality, highly customizable via templates.
Cons: Requires MacTeX / TeX Live / MiKTeX (2–4 GB). Expect your first few conversions to fail with xelatex not found or Unicode errors — see our nbconvert troubleshooting guide.
Method 5 — VS Code Jupyter Extension
If you're already editing notebooks in VS Code, the Jupyter extension adds a right-click "Export to PDF" action.
Pros: Integrated into your editor.
Cons: By default it still shells out to nbconvert + LaTeX, so you inherit the same setup burden. You can reconfigure it to use webpdf, but most users don't realize that.
Which One Should You Use?
| Situation | Pick |
|---|---|
| No Python, no LaTeX, just need a PDF now | ipynbtopdf.org |
| Python installed, but no LaTeX | nbconvert --to webpdf |
| Full local toolchain, want maximum fidelity | nbconvert --to pdf |
| Already in VS Code | Extension's "Export to PDF" |
| Want to hand-tune print CSS | HTML export + browser print |
A Note on Output Quality
Whichever path you choose, the PDF is only as good as the notebook it comes from. Before exporting:
- Run all cells so outputs are present.
- Keep wide DataFrames narrow with
df.head()ordf.iloc[:, :10]. - Bump matplotlib font sizes —
plt.rcParams.update({'font.size': 14})— for print. - Use markdown headings (
#,##) so the PDF has structure.
These four habits will make every method above produce a better PDF.
Conclusion
There's never been a better time to export Jupyter Notebooks to PDF. You no longer need a LaTeX install to get a professional-looking result — webpdf and online converters have closed the quality gap. Pick the method that fits your environment, and you'll never dread the export step again.