Skip to content

Interactive reports

Share an interactive Plotly chart as a link

Send an interactive chart, not a screenshot. Export your Plotly figure as HTML, upload it here, and share a link that keeps the hover labels, zoom and legend controls.

No signup to upload. No account needed to view.

See a real example ↓

Drop your Plotly HTML here — get a live link

free, no account, live for 30 days.

Shipping…

HTML up to 10 MiB · ZIP up to 25 MiB, 100 files, 100 MiB unpacked. Free anonymous links last 30 days.

Public link, not private storage. The HTML includes your chart data, even hidden traces. Remove sensitive data before uploading.

From Python figure to browser link

  1. 01

    Save a complete HTML file

    Run fig.write_html("index.html", include_plotlyjs=True, full_html=True). This bundles the chart and Plotly.js; your reader does not need Python or a notebook.

  2. 02

    Upload the HTML

    Drop it into the uploader above — selecting the file stages it, your email verifies it, and the page goes live. If that HTML tops 10 MiB, tuck index.html into a ZIP instead: free ZIPs take up to 25 MiB compressed, 100 MiB unpacked, and 100 files.

  3. 03

    Share the interactive result

    Open the returned URL to check the chart, then copy the link. Browser-side interactions work; callbacks that need a running Python process do not.

Try it with sample content

A chart your reader can explore

Two series of made-up weekly data. Hover over a point, drag to zoom, or click a legend label. This small demo loads a pinned Plotly library from its CDN; the recipe below bundles it instead.

Download sample HTML

Export a self-contained Plotly chart

Install Plotly with python -m pip install plotly, then save this as chart.py and run python chart.py. It creates index.html in your working directory, ready to upload.

chart.py · Python

import plotly.graph_objects as go

fig = go.Figure()
fig.add_scatter(x=[1, 2, 3, 4], y=[12, 18, 15, 24],
                mode="lines+markers", name="Design A")
fig.add_scatter(x=[1, 2, 3, 4], y=[10, 13, 19, 21],
                mode="lines+markers", name="Design B")
fig.update_layout(title="Weekly signups — sample data",
                  xaxis_title="Week", yaxis_title="Signups")
fig.write_html("index.html", include_plotlyjs=True,
               full_html=True)

Bundling Plotly.js adds several megabytes before your data. Over 10 MiB? ZIP the file, keeping its name as index.html. Or use include_plotlyjs="cdn" for a smaller file that needs the Plotly CDN to load. The self-contained recipe does not need that CDN.

This is HTML hosting, not a Python or Dash server. Read Plotly's HTML export guide for multi-chart reports and other export options.

Before you share

How do I share a Plotly chart without sending a notebook?

Export the figure with fig.write_html("index.html", include_plotlyjs=True, full_html=True), upload index.html above, and copy the returned link. Readers open the interactive HTML in a browser without installing Python or Plotly.

Does this host Dash apps or Python callbacks?

No. This serves exported static HTML, CSS and JavaScript. Plotly hover, zoom and legend interactions run in the browser. Dash callbacks, FigureWidget Python callbacks and server-side data queries require a separate backend.

Can anyone pull the raw data out of my chart?

Yes. Anything embedded in the exported figure sits right inside the HTML — hidden traces and hover data included. That anonymous link is public and unlisted; paid plans add password protection. Either way, strip out confidential data before you export.

Should I bundle Plotly.js or use its CDN?

include_plotlyjs=True makes a self-contained file with a larger size. include_plotlyjs="cdn" makes a smaller HTML file but readers need access to the Plotly CDN. include_plotlyjs=False does not make a standalone working chart unless your surrounding page already loads Plotly.js.

How big can the report be, and how long does it stay online?

Single HTML uploads are capped at 10 MiB on every plan. Free ZIPs allow 25 MiB compressed, 100 MiB unpacked and 100 files. Anonymous links last 30 days by default; claiming to a free account extends them to 90 days from claiming. Each upload here creates a new URL; paid named deployments support same-URL replacement.