Share an R Markdown or Quarto HTML report as a link
Drop your knitted report as an .html file up to 10 MB or a ZIP up to 25 MB on ship.page for a free live link, no signup. R Markdown and Quarto output both work, the link stays up for 30 days, and every upload sends a noindex header so search engines stay out. Pro adds password protection for $4 a month.
A file. A folder. A fresh start.
Your static site, one link away.
Uploading publishes your file. The link is public but unlisted, not password-protected, so leave out secrets and confidential content.
- Max size for a single self-contained HTML file
- 10 MB
- Free ZIP limit, up to 100 MB unpacked
- 25 MB
- Free link lifetime without an account
- 30 days
- Pro plan with password protection and permanent links
- $4/mo
How to publish your R Markdown or Quarto report
Knit or render your document to HTML
In R Markdown, html_document uses self_contained = TRUE by default, putting scripts, stylesheets, images and videos inside one standalone HTML file as data: URIs. In a Quarto report, add embed-resources: true under format: html, or keep the default output and zip the HTML file together with its report_files folder.
Drop the HTML file or ZIP onto ship.page
Open ship.page in your browser and drag in your .html file, .zip archive or folder. If you upload a folder or ZIP with multiple files, make sure the main report is named index.html so it opens at the root address.
Copy the link or add a password
Your report is live in seconds on its own HTTPS subdomain, complete with a downloadable PNG QR code. Free links stay online for 30 days, or 90 days if you claim them with a free Google or email sign-in, and Pro users can turn on password protection or re-upload to the same URL.
Ways to share an R Markdown or Quarto HTML report
| Option | How you publish | What to know |
|---|---|---|
| RPubs | From RStudio: Knit, then Publish | Retires June 2027; readable through Dec 31, 2031 |
| Quarto Pub | quarto publish command | Free, public only, 100 MB limit, being replaced by Connect Cloud |
| ship.page free | Drag HTML, ZIP or folder in browser | No signup, unlisted with noindex, 10 MB HTML or 25 MB ZIP, 30 days |
| ship.page Pro | Browser, curl, MCP or GitHub Action | $4/mo, password protection, update in place, links never expire |
Why not email the report or post it on RPubs or Quarto Pub?
When you knit an R Markdown file or render a Quarto document, interactive widgets, plots and tables work in any web browser. Yet when you email that .html file to a coworker or client, they have to download the attachment and open it themselves. Using a tool built to share an HTML file gives your reader a normal URL that opens on any device.
The free community hosts are being phased out. RPubs will retire in June 2027, though existing documents stay readable through December 31, 2031, and Posit recommends Connect Cloud for new publishing. Quarto Pub is free with a 100 MB site limit and a soft limit of 10 GB of bandwidth a month, but everything published there is public and it is also being replaced by Posit Connect Cloud.
If you want a free host for a large public site up to 100 MB, Quarto Pub is a good fit while it remains open, and Posit Connect Cloud is the direct successor for Posit users. If you need a quick link for an internal or client report without setting up an account, ship.page takes the HTML file you already knitted.
How do I keep a self-contained HTML report under the size limit?
R Markdown's html_document sets self_contained = TRUE by default, encoding your plots, CSS and JavaScript as data: URIs inside a single file. Note that MathJax is still loaded externally, so viewers need an internet connection to see formatted equations.
In Quarto, rendering to HTML puts dependencies in a report_files folder next to the HTML file by default. Adding embed-resources: true to your YAML header bundles everything into one standalone HTML file just like R Markdown.
- Single .html files can be up to 10 MB on every ship.page plan.
- If embedded high-resolution plots push your single HTML file past 10 MB, rename it to index.html and compress it into a .zip file.
- Free uploads accept a ZIP up to 25 MB (100 MB unpacked) with up to 100 files.
- Folder uploads go up as one request of at most 10 MB (roughly 7 MB of files), so bigger Quarto folders with a report_files directory should be zipped first.
Tip: When uploading a folder or ZIP instead of a single file, always name your report index.html so it loads automatically when someone opens your link.
How to share an R Markdown report privately
Every report uploaded to ship.page is served with a noindex HTTP header, and ship.page never lists uploads anywhere public. Search engines leave your page out of results, while anyone you give the link to can open it right away.
For confidential client deliverables or internal data summaries, unindexed links may not be enough. On the $4 a month Pro plan (see pricing), you can lock any report behind a password, set a custom expiration from 60 seconds to never, and re-upload a freshly knitted file to the exact same link. The same workflow also works if you export an HTML report from a Jupyter Notebook.
Questions
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 anyone can open on a phone or computer without downloading an attachment. It is free with no account required, and the link stays live for 30 days.
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?
Yes, 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 plans. If your report is larger than 10 MB, rename the file to index.html and compress it into a .zip archive. The free plan accepts ZIP files up to 25 MB (100 MB unpacked), and the Pro plan accepts ZIP files up to 100 MB (400 MB unpacked).
Can I update my report with new data and keep the same URL?
On the free plan, pages cannot be updated in place and 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.
Keep reading
- Host a Quarto report
- Share a Jupyter Notebook as HTML
- Share an HTML file as a link
- Password-protected HTML previews
- ship.page pricing and limits
Turn your knitted report into a link
Drop your R Markdown or Quarto HTML file onto ship.page for a live link in seconds, free with no signup.