Solutions

Share Jupyter notebook HTML exports with your company

One command after `nbconvert`. Your Jupyter notebook export becomes a permanent authenticated URL — accessible to your VP Sales, product leads, and executives with a company email. No Python required.

Free tier available$49/month flat for TeamsGoogle + Microsoft SSOUnlimited viewers
terminal
$ display publish ./report.html
 
Uploading    47kb
Auth       Google Workspace ✓
 
✓ Published
 
→ https://view.display.dev/p/f474hfd/8f3kx9
 
Viewers    anyone at acme.com
Expires    never
Version    1
 
$ 

The workflow

jupyter nbconvert --to html analysis.ipynb --output analysis.html
 
dsp publish ./analysis.html --name "q1-cohort-analysis"

Anyone with a company email clicks, authenticates once with Google or Microsoft, and sees the full notebook — rendered charts, outputs, and all.


Jupyter exports are interactive. Sharing them is broken.

nbconvert exports a Jupyter notebook to a self-contained HTML file. Plotly charts remain interactive. Bokeh widgets respond to input. Altair charts are zoomable. The entire analysis is browsable — in a browser, without Python.

Then sharing it:

  • Email attachment — blocked by corporate email security for HTML files containing JavaScript. Even when it arrives, the recipient downloads it, opens it locally, and relative paths break.
  • Slack upload — downloads as analysis.html. Recipients open it in a text editor.
  • Google Drive — stores the raw file. Doesn't render it. Clicking the link downloads the file.
  • Notion / Confluence — strips JavaScript. Interactive Plotly chart becomes a broken element.
  • GitHub (private repo) — shows raw HTML source. GitHub Pages (private) requires Enterprise Cloud.

The analysis that took days to build gets shared as a screenshot of one chart, or not shared at all.


Display vs. alternatives for Jupyter HTML sharing

DisplayEmail attachmentGoogle DriveGitHub Pages (private)
Renders Plotly/Bokeh/Altair❌ (blocked)❌ (downloads)
Company auth✅ (Google login)❌ / $2,100/mo
Persistent URL
Non-engineer access✅ (when delivered)❌ (GitHub account)
Interactive charts
Monthly cost (100 viewers)$49 flat$0$0$2,100/mo

Full workflow with popular visualization libraries

Plotly:

import plotly.express as px
fig = px.line(df, x='date', y='revenue', title='Q1 Revenue')
fig.show()  # Renders inline in notebook

Export: jupyter nbconvert --to html notebook.ipynb
The exported HTML contains the full Plotly chart with interactive zoom, hover, and filter.

Bokeh:

from bokeh.io import output_notebook
output_notebook()  # Renders inline

Export with --no-input to hide code cells:

jupyter nbconvert --to html --no-input analysis.ipynb --output report.html

Quarto:

quarto render analysis.qmd --to html
dsp publish ./_output/ --name "q1-analysis"

For Voilà dashboards

Voilà converts Jupyter notebooks to interactive dashboards. For static Voilà outputs:

voila --static ./notebook.ipynb --output-dir ./voila-output/
dsp publish ./voila-output/ --name "revenue-dashboard"

For notebooks that require a live Voilà kernel, Display serves the static export — interactive widgets that require kernel communication won't respond. For fully interactive widget dashboards, the live server is required.


Pricing

Free — one-time password auth, 50MB, unlimited viewers
Teams ($49/month) — Google + Microsoft SSO, 25GB, custom domain, unlimited viewers

See all pricing →


Publish your notebook export free →


Common questions.

Does Display preserve Plotly interactivity?+

Yes. Plotly's HTML export embeds the full interactive chart using plotly.js. Display serves the HTML file as-is — the chart remains interactive, with zoom, hover tooltips, and filter controls.

What about notebooks with inline images (Matplotlib, Seaborn)?+

nbconvert embeds images as base64 in the HTML. They render in the published page without any separate asset handling.

Can I share notebooks with code cells hidden?+

Yes. Use --no-input flag: jupyter nbconvert --to html --no-input analysis.ipynb. The exported HTML shows outputs (charts, tables, text) without code cells.

Do stakeholders need to install anything?+

No. Viewers authenticate with their company Google or Microsoft account and view the HTML in a browser. No Python, no Jupyter, no packages.

How large is a typical notebook HTML export?+

Simple notebooks: 1–5MB. Notebooks with embedded images or large datasets: 10–50MB. Plotly-heavy notebooks: up to 50MB (Plotly.js is large). Display's free tier handles 50MB per artifact.

What about parameterized reports from Papermill?+

Papermill executes notebooks with parameters and saves the output as a new notebook. Export that output: jupyter nbconvert --to html output_notebook.ipynb, then publish. Same workflow.

Publish your first artifact in 15 seconds.

Free tier. No credit card. One-time password auth on free, Google + Microsoft SSO on Teams ($49/month flat).