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.
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.
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:
analysis.html. Recipients open it in a text editor.The analysis that took days to build gets shared as a screenshot of one chart, or not shared at all.
Plotly:
import plotly.express as px
fig = px.line(df, x='date', y='revenue', title='Q1 Revenue')
fig.show() # Renders inline in notebookExport: 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 inlineExport with --no-input to hide code cells:
jupyter nbconvert --to html --no-input analysis.ipynb --output report.htmlQuarto:
quarto render analysis.qmd --to html
dsp publish ./_output/ --name "q1-analysis"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.
Free — one-time password auth, 50MB, unlimited viewers
Teams ($49/month) — Google + Microsoft SSO, 25GB, custom domain, unlimited viewers
Publish your notebook export free →
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.
nbconvert embeds images as base64 in the HTML. They render in the published page without any separate asset handling.
Yes. Use --no-input flag: jupyter nbconvert --to html --no-input analysis.ipynb. The exported HTML shows outputs (charts, tables, text) without code cells.
No. Viewers authenticate with their company Google or Microsoft account and view the HTML in a browser. No Python, no Jupyter, no packages.
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.
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.
Free tier. No credit card. One-time password auth on free, Google + Microsoft SSO on Teams ($49/month flat).