Guide
Replace NGROK with Free Subdomains
A stable subdomain is often a better public address than a rotating tunnel URL. Learn when that is true, when it is not, and how to choose safely.
A stable subdomain is often a better public address than a rotating tunnel URL. Learn when that is true, when it is not, and how to choose safely.
This guide is for teams choosing between a temporary public tunnel URL and a stable subdomain for previews, webhook endpoints, demos, or internal tools that still need a real hostname.
The most common request-flow mistake here is not technical. It is conceptual. Teams ask for a stable subdomain when what they actually need is a short-lived tunnel to a laptop, or they keep sharing rotating tunnel URLs long after the workflow clearly wants a permanent public name.
Decision checklist
Before you pick the workflow, answer these questions:
- does the public URL need to stay the same across restarts
- will teammates, clients, or external services store this URL anywhere
- is the destination a real hosted environment or just a local machine
- does the outside world need the hostname to remain stable for days or weeks
Those four answers usually make the choice obvious.
Who this is for
Use this guide if you need a public address for:
- webhook callbacks
- preview environments
- demos you expect people to bookmark
- internal tools with a small but stable audience
When tunnels are still the right tool
Use a tunnel when the destination is still local and the access window is short.
That includes cases like:
- a one-off demo from a laptop
- a callback test against a local app
- temporary debugging where you do not want to publish a real environment
Tunnel tools are good because they reduce setup time. The trade-off is that the public name is usually provider-branded, session-bound, or less stable than a hostname you actually own.
When a stable subdomain is better
Use a stable subdomain when the public address should stay consistent even if the underlying environment changes.
That is usually the better fit for:
- documentation that points to a preview host
- third-party webhooks
- collaboration across several people
- a promotion path from preview to production naming
Field capture
The operational difference becomes clear the moment you compare a rotating tunnel URL with a stable environment hostname in config and docs.
The question that keeps the decision honest
Ask this instead of asking whether one tool is “better”:
Do I need a temporary bridge to a local machine, or do I need a public hostname that other people and systems can keep depending on?
If the answer is the second one, a stable subdomain usually wins.
Configuration difference in practice
A tunnel-first setup often looks like this in the rest of the stack:
PUBLIC_BASE_URL=https://2f8a-203-0-113-9.ngrok-free.app
WEBHOOK_CALLBACK_URL=https://2f8a-203-0-113-9.ngrok-free.app/webhooks
That is fine for quick testing, but it becomes noisy the moment those values have to survive beyond one session.
A stable-subdomain workflow is easier to operate repeatedly:
PUBLIC_BASE_URL=https://preview.example.com
WEBHOOK_CALLBACK_URL=https://preview.example.com/webhooks
The infrastructure behind preview.example.com can change. The public contract does not.
Failure cases to watch for
A stable subdomain was requested for something that is still purely local
If the only real destination is a laptop with no durable public environment, DNS alone does not solve the access problem. You still need a tunnel or a hosted preview.
A tunnel URL was reused as if it were permanent
Docs, QA checklists, or third-party callbacks keep referencing a provider-generated session URL that changes later. That is when “quick” starts becoming expensive.
Teams mix naming models
One system points at a tunnel, another points at a stable preview hostname, and a third expects production naming patterns. That makes debugging harder than either approach on its own.
Recommended default
Choose a tunnel when:
- speed matters more than hostname stability
- the origin is still local
- the public access window is temporary
Choose a stable subdomain when:
- the public name should remain stable
- outside systems or other people will depend on it
- the destination is a real hosted environment
That distinction is what turns “replace ngrok” from a slogan into a useful architecture decision.
Manual review
Need a root-domain name reviewed?
and.guide reviews specific root-domain subdomain requests manually. Approval is limited, provisioning is never guaranteed, and honest project context matters more than speed.