IPYNB to HTML converter
Drop in a .ipynb file and get a clean, standalone HTML page — Markdown rendered, code highlighted, saved outputs and plots included. Nothing is uploaded.
From notebook JSON to a page
A Jupyter notebook is JSON all the way down, so converting one doesn't need Jupyter — this page walks the nbformat 4 cell list right in your browser. Markdown cells go through a built-in renderer (headings, lists, links, code blocks, blockquotes), code cells become highlighted-ready pre blocks tagged with the notebook's language, and each saved output is rendered in order: streams and results as text with ANSI color codes stripped, images inlined as data URLs, errors as red-tinted tracebacks.
The result is one standalone HTML document — charset declared, minimal readable styling included, no external requests — that you can preview here, copy, or download. Because outputs saved as raw HTML are replaced by their plain-text fallback, the converted page contains no scripts and nothing executable from the notebook.
Getting a good-looking export
- Run the notebook top to bottom and save before converting — the HTML can only show outputs that exist in the file.
- Matplotlib figures export perfectly because they're saved as PNG. For Plotly or Altair, save a static image of the chart (fig.write_image, chart.save) into a cell if you want it in the HTML.
- Big notebooks make big HTML: every embedded image is stored base64-inline. That's the point — one portable file — but trim giant outputs before converting if size matters.
- The download pairs well with the HTML to PDF converter: convert the notebook here, then print the HTML to PDF for a fixed-layout handout.
Frequently asked questions
What is a .ipynb file?
It's a Jupyter notebook: a JSON document (nbformat 4) holding a list of cells — Markdown, code, and raw — where code cells also carry their saved outputs: printed text, results, images, and errors. Because it's JSON, this converter can read it entirely in your browser.
Is my notebook uploaded anywhere?
No. The file is read locally with the browser's FileReader, parsed as JSON, and converted to HTML in the same tab. Nothing leaves your machine — the download button saves a file your own browser generated.
Do I need to re-run the notebook first?
No, but the HTML can only include outputs that were saved in the file. If you ran "Clear All Outputs" before saving, the converted page shows the code and Markdown with no results — re-run and save the notebook to capture them.
Will my matplotlib plots show up?
Yes — plots saved as PNG or JPEG (the matplotlib default) are embedded directly into the HTML as data URLs, so the page stays a single self-contained file you can email or host anywhere.
Why do some outputs show plain text instead of a rich table or chart?
Outputs saved as raw HTML (pandas tables, Plotly figures, widgets) are skipped for safety, because notebook HTML can contain scripts. The converter renders their plain-text fallback instead, which pandas and most libraries always include.
How do I share the converted notebook?
The download is one standalone HTML file — images inlined, styles included — so it works from email, a file share, or any static host. It's exactly the kind of small artifact you can drop onto host0 and hand around as a URL.
Related free tools
See all free tools →Built something? Put it online in seconds
host0 is the cloud for small software: bring any coding agent, build the tool only you need — like this one — and say "deploy to host0". Live at a shareable URL, no servers to run.