Horizon vs Pinggy
Horizon costs less for one stable URL. Pinggy covers TCP, UDP and edge auth, which Horizon does not.
Last checked October 2026
npm install -g @hrzn/cliThe short version
Which one fits you
Pick Horizon if…
- You want one stable URL at a lower yearly price than Pinggy Pro.
- You want to install with npm and sign in once.
- You do not want free tunnels that stop after 60 minutes, as Pinggy free tunnels do.
- You send WebSockets or streamed responses, which Horizon documents as passing through.
Pick Pinggy if…
- You need raw TCP, UDP or TLS tunnels.
- You need basic auth, bearer tokens or an IP allowlist in front of the tunnel.
- You need a custom domain.
- You want a tunnel with no install and no signup, from one SSH command.
Side by side
Horizon and Pinggy, topic by topic
URLs and domains
| Feature | Horizon | Pinggy |
|---|---|---|
| Free tunnel URL | Random subdomain | Random URL |
| Stable URL | Reserved subdomain, paid per slot | 1 persistent subdomain on Pro |
| Custom domain | No | Yes, 1 on Pro, wildcard supported |
Protocols
| Feature | Horizon | Pinggy |
|---|---|---|
| HTTPS | Yes | Yes |
| TCP and UDP | No | Yes |
Security and access
| Feature | Horizon | Pinggy |
|---|---|---|
| Basic auth and bearer tokens | No | Yes |
| IP allowlist | No | Yes |
| Browser warning page | Once every 7 days per visitor IP | Once per visitor on free tunnels, none on Pro |
| Skip the warning | x-hrzn-skip-warning header | X-Pinggy-No-Screen header |
| Self-hosting | No | Enterprise on-prem only |
Inspection
| Feature | Horizon | Pinggy |
|---|---|---|
| Request inspection | Dashboard request log, kept 24 hours | Web debugger |
| Replay | Yes, while the tunnel is connected | Yes, resend or edit headers, on free |
Setup
| Feature | Horizon | Pinggy |
|---|---|---|
| Install | npm install -g @hrzn/cli | None for SSH. Also a CLI, desktop app and Docker. |
| Account | Required: hrzn login | Not needed for a basic tunnel |
| Start a tunnel | hrzn tunnel http://localhost:3000 -s my-app | ssh -p 443 -R0:localhost:8000 free.pinggy.io |
Pricing
What a stable URL costs
Price
| Feature | Horizon | Pinggy |
|---|---|---|
| Free tunnels | Free, random subdomain | Free, random URL, 60-minute tunnel timeout |
| One stable URL | €1 per slot per month, or €10 per slot per year | $30 per year, per seat (Pro, billed annually) |
One stable URL for a year: €10 on Horizon, $30 on Pinggy.
Pinggy Pro is $2.50 per month billed annually and has a 7-day trial. We did not find a monthly price. Pinggy prices checked October 2026. The two sets of prices use different currencies and are not converted.
Switching
Switching from Pinggy
Pinggy starts a tunnel with one SSH command. Horizon starts one with one hrzn command after a one-time install. Replace 3000 with the port of your local server.
ssh -p 443 -R0:localhost:8000 free.pinggy.iohrzn tunnel http://localhost:3000 -s my-appX-Pinggy-No-Screenx-hrzn-skip-warningFAQ
Questions about Pinggy
Is Pinggy free?
Yes. The Pinggy free plan costs $0. It gives random URLs, HTTP, HTTPS, TCP, UDP and TLS tunnels, unlimited data and a web debugger with replay. Free tunnels stop after 60 minutes.
How much does a stable URL cost on Pinggy?
Pinggy Pro is $2.50 per month billed annually, which is $30 a year per seat. It includes one persistent subdomain, one custom domain and one persistent TCP or UDP port. We did not find a monthly price. Horizon prices are in the table above.
Does Horizon support TCP or UDP tunnels?
No. Horizon does not offer raw TCP or UDP tunnels. Pinggy does.
Can I add basic auth or an IP allowlist on Horizon?
No. Horizon has no basic auth, edge auth or IP allowlist. Pinggy supports HTTP basic auth, bearer tokens and IP whitelisting.
Do I need to install anything?
For Pinggy, no. A basic tunnel is one SSH command without signup. Pinggy also has a CLI, a desktop app, Docker and npm and pip SDKs. Horizon needs npm install -g @hrzn/cli and a sign-in with hrzn login.
How do I skip the warning page?
Pinggy free tunnels show a warning page once per visitor. Send the X-Pinggy-No-Screen header to skip it. Pro has no warning page. Horizon shows its page once every 7 days per visitor IP. Send x-hrzn-skip-warning or use a non-browser user agent to skip it.
Put localhost online.
Install the CLI, sign in and run one command.
npm install -g @hrzn/cli$ hrzn tunnel http://localhost:3000 -s my-app
HORIZON: Tunnel connected
URL https://my-app.hrzn.run (reserved)
Forwarding http://localhost:3000
Request log https://hrzn.run/dashboard/tunnels/my-app
POST 200 /webhooks/stripe
GET 200 /