1. Jetty — for showing work to clients and crews
Jetty's difference is the gallery: share every server you're running — the app on :3000, the admin on :8080, the API — as one page with live status, instead of a handful of separate URLs. Pricing is flat per crew ($7/mo Captain, $19/mo Fleet), so adding a collaborator never adds a line item. Request inspection, reserved subdomains, and custom domains come with Captain.
Not for you if: you need an API gateway, in-process SDKs, or self-hosting. See the honest gaps in Jetty vs ngrok.
2. Cloudflare Tunnel — for production origins, free
If your domain already lives on Cloudflare and you're exposing something long-lived, cloudflared is free, production-grade, and sits behind Cloudflare's whole security stack. The tradeoff is ceremony: DNS on Cloudflare, per-hostname config, and a dashboard built for infrastructure rather than for "look at this branch."
Pick it when: the thing you're exposing is closer to production than to work-in-progress. Full comparison.
3. Expose — for self-hosters
Expose is the open-source option: a PHP tunnel server you can run on your own domain and infrastructure, with hosted plans if you'd rather not. If owning the entire stack matters — audit, fork, white-label — this is the genuinely different answer on the list.
Pick it when: self-hosting is a requirement, not a preference. Full comparison.
4. Tailscale Funnel — for teams already on Tailscale
If everyone who needs to see your work is already in your tailnet, Tailscale Serve shares privately with zero extra product, and Funnel opens a service to the public internet on your machine's ts.net hostname. It's a networking layer first; the sharing features stop at the URL.
Pick it when: the audience is internal and Tailscale is already installed everywhere. Full comparison.
5. localhost.run — for one-off shares with zero install
One SSH command, no install, no account for the basics. For a quick "check this out" from any machine with an SSH client, it's the least-friction option in existence. There's no dashboard, no persistence, and no team anything — by design.
Pick it when: you'll use the URL once and never think about it again. Full comparison.