Horizon
Compare

Horizon vs ngrok

Horizon is an ngrok alternative for HTTP tunnels with a stable subdomain. See what each does, what ngrok adds, and how to switch.

Pick Horizon when you want an HTTPS URL for localhost, a subdomain that stays yours, and a request log in the dashboard. Pick ngrok when you need raw TCP, authentication at the edge, or custom domains.

Last checked: October 2026. The ngrok facts on this page come from ngrok's own pages on that date. ngrok changes its plans, so check ngrok pricing before you decide.

When to pick which

Horizon does one job. It puts a local HTTP server on a public HTTPS URL. You install one CLI, run one command and get a request log. A reserved subdomain keeps your webhook URL the same across restarts.

ngrok does more. It also tunnels raw TCP, and it can enforce basic auth, OAuth and IP restrictions before a request reaches your app. It supports custom domains on paid plans If you need any of those, use ngrok. Horizon has none of them.

Comparison

Horizonngrok
HTTPS tunnelsYesYes
WebSocketsYesYes
Streaming (Server-Sent Events, chunked bodies)Yes, streamed unbufferedYes, no limit on data sent by clients or upstream services
Stable subdomainPaid. Random subdomains are free.Free plan: one assigned dev domain. Paid plans: more branded domains.
Custom domainsNoYes, listed on Pay-as-you-go ($0.01 per active hour)
Raw TCPNoYes. Free plan needs a payment method on file.
Edge auth: basic authNoYes (basic-auth action). Plan: See ngrok pricing
Edge auth: OAuthNoYes (oauth action). Free plan: 3 monthly active users.
IP restrictionsNoYes (restrict-ips action). Plan: See ngrok pricing
Request inspectionRequest log in the dashboard, kept 24 hoursTraffic Inspector
Request replayYes, from the request logYes, on the free plan
Browser warning page on free tunnelsYes, once every 7 days per IP addressYes, for 7 days after a visitor continues
CLI installnpm install -g @hrzn/cliSee the ngrok download page
PricingSee Horizon pricingFree $0, Hobbyist $10 per month, Pay-as-you-go $20 per month plus usage (checked October 2026)

Switching from ngrok

Install the CLI and sign in. Then swap the command.

ngrokHorizon
ngrok http 3000hrzn tunnel http://localhost:3000
ngrok http 3000 --url https://my-app.ngrok.devhrzn tunnel http://localhost:3000 -s my-app
ngrok-skip-browser-warning headerx-hrzn-skip-warning header

ngrok's --url takes a full URL. Horizon's -s takes the subdomain name only, and the name must be one you reserved on the Subdomains page. Your URL becomes https://my-app.hrzn.run.

Both headers take any value. Set the Horizon one on requests you send yourself, so a browser visitor skips the Before you continue page. Webhook senders and curl never see it.

Update the URL in every webhook and OAuth redirect setting that pointed at ngrok. The guides below walk through the common cases:

On this page