Guide · 5 min read · Updated 2026-08-09

Jupyter notebook to PDF without LaTeX

Skip the multi-gigabyte TeX install. Drop the .ipynb file in and get a PDF.

Drop your file hereor choose a file from your deviceAccepted: IPYNB

This file never leaves your browser.

The official way to turn a notebook into a PDF is nbconvert, and it works well — once you have a working LaTeX installation. Getting there means installing a TeX distribution measured in gigabytes, then debugging missing package errors that mention files you have never heard of. For a one-off PDF to send a supervisor or attach to a report, that is a lot of setup.

If you need journal-grade typesetting, nbconvert with LaTeX remains the right tool. If you need a readable PDF of your analysis, there is a much shorter path.

What is actually inside an .ipynb file

A notebook is a JSON document. It contains an ordered list of cells, each tagged as markdown, code, or raw, and each code cell carries its stored outputs from the last time it ran. That structure is all a converter needs — the notebook already knows which parts are prose, which are code, and what the code printed.

One consequence worth internalising: the outputs in the file are whatever was there when it was saved. The converter reads stored outputs, it does not execute anything. If you edited a cell and did not re-run it, the PDF shows the stale output. Restart and run all before converting anything you intend to share.

Restart and run all firstThis catches two things at once: stale outputs, and cells that only work because of a variable you defined earlier and later deleted. A notebook that fails on a clean run is a notebook you should not be circulating.

How the conversion below works

  1. 1
    Markdown cells become formatted proseHeadings, paragraphs, and lists are rendered with real typographic hierarchy, so the narrative structure of your analysis survives into the PDF.
  2. 2
    Code cells become monospaced blocksCode is laid out in a monospaced font with the execution count preserved, so the reading order matches the order things actually ran.
  3. 3
    Stored outputs are placed under their cellPrinted text and stream output appear directly beneath the code that produced them, which is the layout that makes a notebook readable as a document rather than a listing.
  4. 4
    Everything paginates onto A4Long cells break across pages rather than being clipped at the page edge. The result reports the cell count and page count so you can confirm nothing was dropped.
Drop your file hereor choose a file from your deviceAccepted: IPYNB

This file never leaves your browser.

The alternatives, and when to use them

Print to PDF from the browser: open the notebook in Jupyter and use your browser print dialog. Zero setup, and it captures plots. The downside is that page breaks land wherever they land, often mid-cell, and the Jupyter chrome sometimes bleeds into the output.

nbconvert to HTML, then print: better than printing directly because the HTML has no interface elements. Two steps, but it needs no LaTeX and preserves plot images faithfully.

nbconvert with LaTeX: the best typography and correct handling of mathematical notation. Use it when the PDF is going into a paper or a thesis. Accept the install cost.

A note on plots and LaTeX mathsOur converter focuses on the narrative and code structure. If your notebook is mostly matplotlib figures or dense LaTeX equations, the HTML-then-print route or full nbconvert will serve you better. Choose based on what your notebook actually contains.

Why the local processing matters here

Notebooks leak more than people expect. Outputs commonly contain sample rows of real data, database connection strings in tracebacks, API keys pasted into a cell during debugging, and internal hostnames. Uploading a notebook to a conversion service uploads all of that with it. The converter above runs in your browser, so the file never leaves your machine.

Frequently Asked Questions

Will my matplotlib plots appear in the PDF?

Text and stream outputs are handled well. Image outputs are limited in this converter. For a plot-heavy notebook, export to HTML with nbconvert and print that to PDF instead — you will get faithful figures with no LaTeX install.

Does it run my code?

No. It reads the outputs already saved in the file. This is why restarting and running all before converting matters — the converter faithfully reproduces stale output if that is what the file contains.

Are LaTeX equations in markdown cells rendered?

Inline maths in markdown cells is rendered as text rather than fully typeset. For notebooks where equations are the point, use nbconvert with LaTeX.

Can I convert several notebooks at once?

One at a time here. For a whole directory, a shell loop over nbconvert is the practical answer.

Related Guides