Horizon vs zrok

Horizon is simpler to set up and keeps a request log you can replay. zrok has free reserved names, private shares, TCP and UDP, and self-hosting.

Last checked October 2026

Get started free
$npm install -g @hrzn/cli

The short version

Which one fits you

Pick Horizon if…

  • You want to skip OpenZiti concepts such as environments and namespaces.
  • You want to install with npm: one package and one sign-in.
  • You want a stored request log with replay in a dashboard, kept for 24 hours.
  • You send WebSockets or streamed responses, which Horizon documents as passing through.

Pick zrok if…

  • You want a free reserved name that stays stable across restarts.
  • You need private shares, or private TCP and UDP tunnels.
  • You want to self-host, or you want open source under Apache-2.0.
  • You need a custom domain, which zrok offers on Pro.

Side by side

Horizon and zrok, topic by topic

Setup

FeatureHorizonzrok
Installnpm install -g @hrzn/cliInstall script or tarball (zrok2)
AccountRequired: hrzn loginAccount, then zrok2 enable <token>
Concepts to learnTunnels and subdomainsEnvironments, shares and namespaces, built on OpenZiti

Inspection

FeatureHorizonzrok
Request inspectionDashboard request log, kept 24 hoursLive feed in the terminal UI

URLs and domains

FeatureHorizonzrok
Stable URLReserved subdomain, paid per slotReserved name on the free plan
Example stable URLhttps://my-app.hrzn.runhttps://myapp.share.zrok.io
Custom domainNoYes, on Pro

Protocols

FeatureHorizonzrok
Public HTTPSYesYes
TCP and UDPNoPrivate tunnels only

Security and access

FeatureHorizonzrok
Browser warning pageOnce every 7 days per visitor IPFor unverified free accounts. Adding a credit card removes it.
Skip the warningx-hrzn-skip-warning headerskip_zrok_interstitial header
OAuth on sharesNoDocumented for self-hosted only
Self-hostingNoYes, open source under Apache-2.0

Pricing

What a stable URL costs

Price

FeatureHorizonzrok
Free tunnelsFree, random subdomainFree: 5 GB a day, 25 environments, 50 share backends, reserved names included
One stable URL€1 per slot per month, or €10 per slot per yearFree on the zrok free plan

One stable URL for a year: €10 on Horizon, $0 on zrok.

zrok custom domains need Pro. We did not find a published Pro price. zrok prices checked October 2026. The two sets of prices use different currencies and are not converted.

Switching

Switching from zrok

zrok reserves a name with zrok2 create name. Horizon reserves a subdomain as a paid slot, then starts it with -s.

zrokInstall script or tarball (zrok2)
Horizonnpm install -g @hrzn/cli
zrokzrok2 enable <token>
Horizonhrzn login
zrokzrok2 create name myapp
Horizonhrzn tunnel http://localhost:3000 -s my-app
zrokskip_zrok_interstitial
Horizonx-hrzn-skip-warning

FAQ

Questions about zrok

Is zrok free?

Yes. The zrok free plan costs $0. It includes 5 GB of bandwidth a day, 25 environments and 50 share backends, either ephemeral or reserved. It rate limits each IP to 2,000 requests per 300 seconds.

Does zrok have reserved names?

Yes, on the free plan. zrok2 create name myapp gives you https://myapp.share.zrok.io, and the name stays the same across restarts. On Horizon, a reserved subdomain is a paid slot.

Do I need to learn OpenZiti to use zrok?

zrok is built on OpenZiti and hosted by NetFoundry. You work with zrok concepts such as environments and namespaces, and you run zrok2 enable with a token from your account. Horizon has none of these: you install the CLI, sign in and start a tunnel.

What does the Horizon request log add?

Horizon stores each request in the dashboard for 24 hours, with method, status, path, headers and bodies. You can replay a request while the tunnel is connected. zrok shows a live request feed in its terminal UI.

Can I self-host Horizon?

No. Horizon is a hosted service. zrok is open source under Apache-2.0 and you can self-host it.

Does Horizon support private shares or TCP and UDP?

Horizon does not offer raw TCP or UDP tunnels. zrok offers private shares, where the visitor runs zrok too, and private TCP and UDP tunnels.

Put localhost online.

Install the CLI, sign in and run one command.

Get started free
$npm install -g @hrzn/cli