Jupyter Notebook to PDF Converter
LocalConvert a Jupyter .ipynb notebook to PDF with its outputs
Drag & drop files here or click to browse
IPYNB, Jupyter Notebook • Max 25 MB
Files are processed in your browser and never uploaded
Privacy First
Your files are processed entirely in your browser. Nothing is uploaded to any server.
How do I convert a Jupyter notebook to PDF?
Add your .ipynb file, pick a page size and margin, then convert and download the PDF. Markdown cells arrive as formatted text, code cells as monospace blocks under their In [n] prompts, and the outputs stored in the notebook — printed text, error tracebacks and PNG or JPEG figures — appear beneath the cell that produced them. Nothing is executed and nothing is installed: no Python, no LaTeX, no nbconvert. The notebook is read and the PDF written inside this browser tab.
About the Jupyter Notebook to PDF Converter
Convert a Jupyter notebook (.ipynb) into a PDF that keeps the notebook’s shape: Markdown cells render as formatted text with headings, lists and tables, code cells appear in a monospace block under their In [n] prompt, and the outputs saved in the file — printed text, error tracebacks and PNG or JPEG figures — sit under the cell that produced them. Nothing is executed: the PDF shows the outputs the notebook was saved with, exactly as an unopened notebook shows them. No Python, no LaTeX and no nbconvert install is needed, because the whole conversion runs in this browser tab. Interactive widget output cannot be drawn on a page and is reported as skipped rather than silently dropped. The text layer uses the built-in PDF fonts, so it covers English, Western European accents and common punctuation, but not Cyrillic, Greek, CJK or emoji.
- Hand in a data-science assignment or lab report as a PDF when the marker asks for one and nbconvert refuses without a LaTeX distribution installed.
- Send an analysis to a reviewer who has no Jupyter install, with the charts and printed results still under the cells that produced them.
- Archive a notebook run as a fixed record: the PDF captures the outputs stored in the file, so it does not change when the data or the library versions do.
- Produce a code-free reading copy for a non-technical audience by turning off code cells and keeping the Markdown narrative and figures.
How to use the IPYNB to PDF tool
- 1
Upload IPYNB, Jupyter Notebook file
Select IPYNB, Jupyter Notebook file from your device or drag file into the upload area.
- 2
Choose settings
Choose settings such as Page Size, Orientation, Margin before processing.
- 3
Convert to PDF
Run the IPYNB to PDF tool to create the PDF output.
- 4
Download the result
Download the finished file. The original file stays on your device and is not uploaded.
Why does nbconvert ask for LaTeX before it will make a PDF?
Because its default PDF route goes through TeX. `jupyter nbconvert --to pdf` converts the notebook to LaTeX and then calls an engine such as XeLaTeX to typeset it, which means a TeX distribution and Pandoc both have to be installed before the command works at all — several gigabytes of dependencies for one document. The alternative, `jupyter nbconvert --to webpdf`, prints through a headless Chromium supplied by Playwright, so it needs nbconvert installed with its webpdf extra and a browser downloaded first. This page needs neither, because the browser you are already using is the layout engine.
Which notebook outputs survive into the PDF, and which cannot?
Printed output, error tracebacks, PNG and JPEG figures, HTML output such as a pandas DataFrame table, and plain-text results are all drawn. Tracebacks have their ANSI colour codes stripped, so an exception reads as text rather than as a line of bracketed escape sequences. What cannot be drawn is anything that is only alive in a running kernel: ipywidgets and other interactive views, JavaScript output, SVG figures, and PDF output embedded inside a cell. Each of those is counted and named in the message shown with the finished file, so you know what is missing before you send it.
Can you leave the code out and keep the write-up?
Yes. Two checkboxes control it: turning off "Include code cells" keeps the Markdown narrative and the outputs while dropping the source, which is the version to hand to a reader who wants the findings rather than the implementation. Turning off "Include cell outputs" does the opposite and produces a plain code listing with no figures, printed values or tracebacks. Both are on by default, which reproduces the notebook as it was saved.
Does converting run the notebook again?
No. There is no Python kernel here, and no cell is executed. What you get is the outputs that were stored in the .ipynb file the last time it was run and saved — the same ones GitHub shows when it previews a notebook. If a notebook was cleared before it was saved, or a cell was never run, its output section is empty in the file and therefore empty in the PDF. Run the notebook and save it before converting if you want the results included.
Are my files uploaded when converting a Jupyter notebook to PDF?
No. The .ipynb file is read by JavaScript in this tab, turned into a document there, and written back out as a PDF you download — no upload, no queue, no conversion server. That matters more for notebooks than for most formats, because a notebook routinely carries the things around the analysis as well as the analysis: connection strings, API keys pasted into a cell, customer rows printed by a stray `head()` call, and file paths that name internal systems.
How to do this offline, on the command line
nbconvert is the official notebook converter, and both of its PDF routes need something substantial installed first — which is the reason this page exists.
jupyter nbconvert (LaTeX route)
pip install nbconvert · plus Pandoc and a TeX distribution (macOS: brew install pandoc and brew install --cask mactex; Debian/Ubuntu: apt install pandoc texlive-xetex texlive-fonts-recommended)
jupyter nbconvert --to pdf analysis.ipynbConverts the notebook to LaTeX and typesets it with XeLaTeX. Add --no-input to leave the code cells out, the same as clearing "Include code cells" here.
jupyter nbconvert (browser route)
pip install "nbconvert[webpdf]" · then playwright install chromium
jupyter nbconvert --to webpdf analysis.ipynbPrints through a headless Chromium instead of TeX, so the output matches the notebook’s HTML styling. It downloads a browser on first use, which is why it is not the default.
jupyter nbconvert (HTML, then print)
pip install nbconvert
jupyter nbconvert --to html analysis.ipynbThe one route with no extra dependency: it writes analysis.html, which you then print to PDF from a browser. This page collapses those two steps into one.
Frequently Asked Questions
Need More Tools?
Explore our collection of 58 free PDF tools, all with privacy-first processing.
Browse All Tools