How to Convert IPYNB to PDF Without Installing LaTeX
LaTeX is the #1 reason nbconvert fails. Here are three proven ways to convert Jupyter Notebooks to PDF with zero LaTeX installed — including nbconvert's own webpdf exporter.
- #nbconvert
- #latex-free
- #guide
If there's a single reason people give up on nbconvert, it's LaTeX. The default --to pdf path shells out to xelatex, which means you need a 2–4 GB TeX distribution, correct font config, and a PATH that points to the right binaries. On macOS, Windows, and most Linux distros, at least one of those is usually wrong out of the box.
The good news: you don't need LaTeX at all to get a clean PDF from a Jupyter Notebook. Here are three reliable LaTeX-free paths.
Option 1 — nbconvert --to webpdf
nbconvert 6.5+ ships a webpdf exporter that renders the notebook in headless Chromium and prints to PDF. Same tool, no TeX dependency.
Setup:
pip install "nbconvert[webpdf]"
playwright install chromium
Then convert:
jupyter nbconvert --to webpdf notebook.ipynb
Pros: Fully local, output mirrors what you see in JupyterLab, no LaTeX whatsoever.
Cons: Requires ~300 MB for Chromium; the playwright install step can fail behind corporate proxies.
Option 2 — HTML Export + Browser Print
The original LaTeX-free path, and still one of the most flexible.
jupyter nbconvert --to html notebook.ipynb
Open the resulting HTML in Chrome, Firefox, or Safari, then Cmd/Ctrl + P → Save as PDF. The browser handles all rendering.
Pros: Zero extra dependencies beyond a browser. Full control via print CSS if you want to tweak margins, fonts, or page breaks. Cons: Manual step. Cell numbering and some inline images don't always survive without custom CSS.
Option 3 — Online Converter
If you don't have Python or just don't want to manage a local toolchain, a browser-based converter like ipynbtopdf.org does the work for you.
- Open the site.
- Drop your
.ipynbin. - Download the PDF ~3 seconds later.
Pros: Nothing to install, works on any OS including Chromebooks and iPads, handles matplotlib + LaTeX math + wide pandas tables correctly. Cons: Requires internet. Worth reading the provider's deletion policy.
Why Skipping LaTeX Is Usually the Right Call
LaTeX produces beautiful PDFs, but it wasn't designed for interactive notebook content. In practice, it introduces three recurring headaches:
- Install size. MacTeX is 4 GB. TeX Live's full install is similar. MiKTeX is smaller but still hundreds of MB.
- Unicode failures. Emoji, CJK characters, and even smart quotes regularly break
pdflatex. Switching toxelatexhelps, but only if you also install the right fonts. - Slow iteration. A typical LaTeX-based conversion takes 90–180 seconds. That kills the edit-save-review loop.
The LaTeX-free paths above — especially webpdf and online converters — routinely complete in 3 to 30 seconds, making them dramatically more pleasant for iterative work.
Output Quality Comparison
| Feature | LaTeX (--to pdf) | webpdf | HTML + print | Online |
|---|---|---|---|---|
| Code highlighting | Yes | Yes | Yes | Yes |
| matplotlib charts | Yes | Yes | Yes | Yes |
| LaTeX math | Yes | Yes (KaTeX) | Yes (KaTeX) | Yes (KaTeX) |
| Wide pandas tables | Clipped | Scrollable | Manual CSS | Scrollable |
| Unicode (CJK, emoji) | Needs xelatex | Yes | Yes | Yes |
| Time per notebook | 90–180s | 20–40s | 60s | ~3s |
Conclusion
You can get a pixel-perfect PDF from a Jupyter Notebook without installing a single byte of LaTeX. If you have Python, reach for nbconvert --to webpdf. If you don't, use an online converter. Either way, you'll save disk space, setup time, and the inevitable xelatex not found error.