Sharing HTML reports
How do I share an R Markdown, Quarto or Jupyter HTML report as a link?
ship.page is a free static host with no signup or credit card that turns HTML files up to 10 MB or 25 MB ZIPs into links, with $4/mo Pro.
To share a knitted R Markdown, Quarto or exported Jupyter HTML report as a link without making your coworkers download an email attachment, drop the file onto ship.page. It's free forever with no signup, takes single .html files up to 10 MB or ZIPs up to 25 MB (100 MB unpacked), and gives you an unindexed HTTPS link and a QR code in seconds. If you need password protection or want to update a report at the same URL, the Pro plan costs $4 a month.
| Option | Price | Limits | Main catch |
|---|---|---|---|
| ship.page (free) | $0 forever | 10 MB HTML file; 25 MB ZIP (100 MB unpacked, up to 100 files); ~7 MB folder upload | Static files only, no custom domains, new URL on every upload, closable badge |
| ship.page Pro / Team | $4/mo Pro, $19/mo Team | 10 MB HTML file; 100 MB ZIP (400 MB unpacked, up to 10,000 files) | No custom domains (Team adds a vanity subdomain), static files only, noindex |
| RPubs | Free | Not stated | Retiring in June 2027 (existing reports stay readable through December 31, 2031) |
| Quarto Pub | Free | 100 MB site limit; 10 GB/mo soft bandwidth limit | Public only, and being replaced by Posit Connect Cloud |
| Posit Connect Cloud | Not stated | Not stated | Posit's replacement for RPubs and Quarto Pub; requires setting up an account |
ship.page
We recommend ship.page first. It's free forever, asks for no signup and no credit card, and lets you do unlimited uploads. You drop an HTML file, a folder or a ZIP into your browser, or paste raw HTML, and you get a live HTTPS link and a QR code in seconds. You can also publish with one curl POST to https://ship.page/deploy with no account or API key, or through an MCP server for AI agents, or with a GitHub Action.
Every upload gets its own unguessable random subdomain and is served with noindex, nofollow headers, and there's no public list of uploads anywhere on the site. If you claim a page into a free account, it stays online as long as you keep it. Free pages show a small badge that visitors can close.
How you prep your file depends on what you're rendering from:
- R Markdown's
html_documentsetsself_contained = TRUEby default, which encodes your plots, CSS and JavaScript asdata:URIs inside one file. Interactive htmlwidgets like Plotly and Leaflet work in the browser because they run as static HTML, CSS and JavaScript, though R Markdown still loads MathJax externally, so your reader needs an internet connection to see formatted equations. - Quarto puts CSS, scripts and plot images in a
report_filesfolder next to your HTML file by default. You can addembed-resources: trueto your YAML header to bundle everything into one standalone file, or keep the folder structure. - Jupyter Notebook exports to HTML work the same way once you have the
.htmlfile on your machine.
On the free plan, single .html files can be up to 10 MB, and folder uploads go up as one request of at most 10 MB (roughly 7 MB of files). So if embedded high-resolution plots push your single HTML file past 10 MB, or you have a larger Quarto report with a report_files folder, rename the HTML file to index.html and compress everything into a .zip file. Free uploads take a ZIP up to 25 MB (100 MB unpacked) with up to 100 files.
For client deliverables or internal summaries where an unindexed link isn't private enough, the $4 a month Pro plan adds password protection, removes the badge, and gives you analytics. Pro pages never expire, though you can also set a custom expiration from 60 seconds to never, and Pro raises the ZIP limit to 100 MB (400 MB unpacked) and up to 10,000 files. Pro also lets you re-upload a freshly knitted file to the exact same URL. The $19 a month Team plan includes everything in Pro and adds a vanity subdomain.
There are a few limits we want to state plainly. It hosts static files only (HTML, CSS, JavaScript, images and media, with no server code, database or build step), it doesn't support custom domains, and because every page is served with noindex, it's not for sites that need search traffic. And on the free plan, every upload gets a new link, so updating a report in place requires Pro.
It suits analysts who already rendered an R Markdown, Quarto or Jupyter HTML report and want to send a coworker or client a link right away without creating an account, or who need $4 a month password protection and same-URL updates for private deliverables.
RPubs
RPubs is built into RStudio: you click Knit, then Publish, and your document goes live. The problem is that Posit is phasing it out. RPubs will retire in June 2027, and while existing documents will stay readable through December 31, 2031, Posit already recommends moving new publishing to Connect Cloud.
It suits RStudio users maintaining older public documents there until the June 2027 retirement, not new reporting workflows.
Quarto Pub
Quarto Pub lets you publish straight from the terminal with the quarto publish command. It's free, gives you a 100 MB site limit with a soft limit of 10 GB of bandwidth a month (which is plenty for a large public report), but everything you put on Quarto Pub is public, and Posit is replacing it with Posit Connect Cloud too.
It suits Quarto users who want a free host for a large public site up to 100 MB while Quarto Pub remains open.
Posit Connect Cloud
Posit Connect Cloud is Posit's direct successor to both RPubs and Quarto Pub for new publishing. Unlike ship.page, where you drop a file you already rendered with no account, moving your reports to Posit's hosted platform means setting up an account.
It suits Posit users looking for the official long-term home to replace RPubs and Quarto Pub.
FAQ
How do I send a knitted HTML file to someone without them downloading it?
Drag your knitted .html file onto ship.page in your browser. In seconds you get an HTTPS link and a QR code that opens on a phone or computer without downloading an attachment, for free and with no account.
Is there a private alternative to RPubs and Quarto Pub?
Yes. Everything on Quarto Pub is public, and RPubs is retiring in June 2027. On ship.page, free uploads are unlisted and sent with a noindex header so search engines ignore them, and the $4 a month Pro plan adds password protection.
Why do my Quarto plots or styles break when I upload only the HTML file?
By default, Quarto puts CSS, scripts and plot images into a separate report_files folder next to your HTML file. Either add embed-resources: true to your Quarto YAML header to produce one standalone HTML file, or rename the HTML file to index.html and upload it in a ZIP together with the report_files folder.
Will equations and htmlwidgets like Plotly or Leaflet work?
Interactive htmlwidgets run in the browser because ship.page serves HTML, CSS and JavaScript as static files. Keep in mind that R Markdown loads MathJax externally even when self_contained = TRUE is used, so the viewer needs an internet connection for equations to render.
What if my self-contained HTML report is larger than 10 MB?
The limit for a single .html file is 10 MB on all ship.page plans. If your report is over 10 MB, rename the file to index.html and compress it into a .zip archive; the free plan accepts ZIPs up to 25 MB (100 MB unpacked) and the Pro plan accepts ZIPs up to 100 MB (400 MB unpacked).
Can I update my report with new data and keep the same URL?
On the free plan, a new upload gets a new link. On the $4 a month Pro plan or $19 a month Team plan, you can re-upload your updated HTML report and keep the exact same link.