You don't need a CI/CD pipeline to share one HTML file.

Upload from your terminal. Get a versioned, shareable URL. That's the whole workflow.

Get started for free


The problem is familiar

You built a quick prototype. Or Claude generated an HTML report for you. Or you wrote a standalone demo page. Now you need someone else to see it.

Your options today:

  • Vercel / Netlify — Create a project, configure build settings, set up a Git repo, push, wait for the build. All for one HTML file.
  • GitHub Pages — Commit, push, enable Pages in settings, wait for the deploy. Hope you remembered to set the right branch.
  • S3 + CloudFront — Write a bucket policy, configure CORS, set up a distribution. Bill arrives next month for $0.003.
  • "Just email the file" — Your recipient opens it in their mail client. Half the CSS breaks. JavaScript doesn't run at all.

Every one of these is either overkill or broken for the simplest case: putting a single file on the web.


Handoff: one command, one URL

handoff upload my-page.html
✓ Uploaded successfully
  handoff.host/@you/my-page
  Version 1

That's it. Your page is live. Send the link.


Update it? Same URL, new version.

# Make changes, then upload again
handoff upload my-page.html
✓ Uploaded successfully
  handoff.host/@you/my-page
  Version 2

The URL stays the same. Anyone with the link sees the latest version. Need to reference a specific version? Append /v/1 to the URL.

No force-pushing. No "deploy to staging first." No merge conflicts with yourself.


Your terminal is the deploy pipeline

Handoff is CLI-first. No web dashboard to click through. No YAML to configure. No build step.

Upload an HTML file

handoff upload dashboard.html
# → handoff.host/@yourname/dashboard

Upload a Markdown doc (rendered automatically)

handoff upload api-spec.md
# → handoff.host/@yourname/api-spec

Upload with a custom slug

handoff upload report.html --slug q1-metrics
# → handoff.host/@yourname/q1-metrics

Upload an image

handoff upload architecture-diagram.png
# → handoff.host/@yourname/architecture-diagram

Every upload gives you a clean, permanent URL. Every subsequent upload to the same slug creates a new version.


Built for how developers actually work

Version control without Git overhead

Every upload is automatically versioned. You get a full history of changes, accessible by version number. No commits, no branches, no merge conflicts. Just upload and the version increments.

handoff.host/@you/prototype        → latest
handoff.host/@you/prototype/v/1    → first version
handoff.host/@you/prototype/v/2    → second version

No signup friction

Get started without creating an account. When you're ready to claim your pages under a username, connect your GitHub account. That's the entire onboarding flow.

Clean URLs you can actually share

Your pages live at handoff.host/@username/page-name. No random hashes. No .netlify.app subdomains. No 40-character commit SHAs in the URL.

Works on mobile

Pages render cleanly on any device. Share a link in Slack, and the person opening it on their phone sees exactly what you intended.


Integrations

Claude Code

If you use Claude Code, Handoff plugs in directly. Generate a page, upload it, and share the link without leaving your session.

# Inside a Claude Code session
> Build me a dashboard showing Q1 revenue data
> Upload it to Handoff

✓ Page uploaded to handoff.host/@you/q1-dashboard

AI generates the page. One command puts it on the web. The loop from idea to shareable link is seconds, not minutes.

cURL (works everywhere)

No CLI installed? Use the API directly.

curl -X POST https://handoff.host/api/upload \
  -F "[email protected]" \
  -F "slug=my-page"

Any environment that can make HTTP requests can upload to Handoff. CI scripts, Makefiles, shell aliases. Whatever your workflow looks like, it fits.


When to use Handoff (and when not to)

Handoff is for:

  • Sharing a prototype with your team or a client
  • Hosting AI-generated HTML pages and reports
  • Publishing standalone demos, one-pagers, or documentation
  • Iterating on a page and keeping a version history
  • Getting a live URL in under 10 seconds

Handoff is not for:

  • Full web applications with routing and server-side logic
  • Multi-page sites with complex build pipelines
  • Projects that need server-side rendering or databases

If you need Vercel, use Vercel. If you need a link for one file, use Handoff.


How it compares

Handoff GitHub Pages Netlify Surge.sh Tiiny.host
Time to live URL Seconds Minutes Minutes Seconds Seconds
CLI upload Yes Via Git Via CLI Via npm No
Built-in versioning Yes Via Git Deploy history No No
Signup required No Yes Yes Yes No
Markdown rendering Yes Via Jekyll Via build No No
Image hosting Yes Yes Yes No No
Made for single files Yes No No No Yes

Free during beta

Handoff is free right now, with no usage caps. Upload as many pages as you need. We're building this for developers who are tired of over-engineering the simple act of putting a file on the internet.

Start uploading

# Install and go
handoff upload my-page.html

Ready to share your work?

Upload a file, get a link. Free during beta.

Start Sharing Free