One HTML file, one POST, one URL
A self-contained HTML file is already a complete website. Deploying it is one POST with a text/html content type — the URL it returns is the file, live for anyone you share it with.
Drop your Single HTML file report here — get a live link
.zip, folder, or single .html — free, no account, live for 7 days.
The artifact dead-end
The 'I made a thing, look at it' genre — a demo, a report, a generated page, an LLM artifact — keeps dying in chat uploads and email attachments that nobody can open properly.
Standing up hosting for a single file is absurd; so is pasting markup somewhere that doesn't render it.
Two lines to a live link
Hand the file to the action — or straight to the API:
.github/workflows/ci.yml
- uses: bitgate/ship-page-action@v1
if: always()
with:
path: index.htmlOr with plain curl — no account needed
curl -fsS -X POST https://ship.page/deploy \
-H "Content-Type: text/html" \
--data-binary @index.html | jq -r .urlpath: index.html deploys exactly what the tool wrote — no detection to configure. The link goes in the job summary — add comment: true and it lands on the pull request too.
What you get
- Content-Type: text/html, body is the file — the response URL serves it at the drop root
- Inline CSS and JS, data-URI images, CDN script tags — everything the file references works, because a drop is just a static origin
- No account for 7-day links; add an API key when you want named, redeployable URLs
Questions
Does the file have to be named index.html?
No — a single text/html upload becomes the landing page whatever the file is called. The name only matters once you deploy multi-file folders.
What about external assets?
Absolute URLs — CDNs, fonts, images — work as-is. Relative references to other local files won't exist on the drop, so inline them or deploy the folder as a zip instead.
Is the URL private?
Slugs are long and unguessable, there's no public index, and every drop serves x-robots-tag: noindex. Share the URL, share the page — nobody else finds it.
Try it on your next run
Anonymous deploys need no account and no key — paste the step, get a link. When you want stable URLs that redeploy in place, an API key and a name are all it takes.
Need to share the report with someone outside GitHub? How to share a GitHub Actions artifact without a login.