No. Your dev domain is permanently assigned to your account and remains yours as long as you have an ngrok account. It won't change or expire, even if you don't use it for a while.
Your dev domain doesn't accrue endpoint hours, so you can keep endpoints online without worrying about hourly charges. However, your account is still subject to plan limits for HTTP requests (20k/month on Free), bandwidth (1GB/month on Free), and concurrent endpoints (3 on Free).
On the free plan, HTTP/S endpoints display a browser warning page that visitors must click through before reaching your app. This helps prevent abuse. Upgrading to Hobbyist or Pay-as-you-go removes the interstitial entirely.
No. The free plan only includes your assigned dev domain (e.g., abc123.ngrok-free.dev). To use a custom domain:
Hobbyist ($8/mo): Choose a custom ngrok domain like your-company.ngrok.app
Pay-as-you-go ($20/mo): Bring your own domain like api.your-company.com
Free and Hobbyist plans support up to 3 concurrent endpoints. Pay-as-you-go removes this limit entirely—you can run as many endpoints as you need.
You can create TCP endpoints on the free plan, but you'll need to verify your account with a credit card first. TLS endpoints are only available on Pay-as-you-go.
Jan 8, 2026: We updated this blog post to reflect our new
pricing and the transition from static domains to
dev domains.
One of the major complaints users have with ngrok is that the URL changes every
time the agent restarts. Every ngrok account now comes with a free dev
domain to
alleviate this issue.
Dev domains are automatically assigned to your account and remain yours as long
as you have an ngrok account. Your dev domain uses the ngrok-free.dev base
domains—for example, abc123xyz.ngrok-free.dev.
With your free dev domain, you can focus on developing your application or
configuring ngrok as a gateway to your production services without needing to
worry about the default behavior of the ngrok agent, which generates a random
URL like https://9490551445c1.ngrok.app. That makes the development and
testing lifecycle even easier, especially for pre-release versions or internal
apps.
Dev domains aren’t billed for endpoint hours and don’t count toward the domain
limits of paid plans. If you need a custom or branded domain, you can upgrade
to a paid plan—our Hobbyist plan lets you choose
custom ngrok domains like your-company.ngrok.app, while our pay-as-you-go
plan lets you bring your own domain to create endpoints like
api.your-company.com and app.your-company.com.
Our mission is to equip developers with composable infrastructure that makes
putting APIs and apps online as simple as ngrok http .... Free dev domains get
all of us one crucial step closer to that vision.
Find your dev domain
Your dev domain is automatically assigned when you create your ngrok account.
To find it:
Look for your dev domain (it will be on an ngrok-free.dev base domain).
Put your dev domain to use
You can use ngrok and your dev domain to front your apps and APIs no matter
where you run them or how they’re packaged.
With the ngrok CLI
The fastest way to get started with your dev domain is to create an agent
endpoint. In this case, your dev domain routes traffic directly to the API or
app service running on port 8000.
ngrok http 8000 --url=<YOUR_DEV_DOMAIN>
With a cloud endpoint
Cloud endpoints are always online and not tied to the lifecycle of an ngrok
agent—you can think of them like serverless functions for handling traffic.
Cloud endpoints are perfect for creating a single point of ingress for your root
domain at your-company.com—that’s exactly what we do for ngrok.com. When
combined with internal
endpoints, you can
route traffic to any number of upstream services and control the configuration
from one place.
With an ngrok agent SDK
Another way to use ngrok and your dev domain is via the ngrok agent
SDKs, which allow you to embed ngrok’s
functions directly into your APIs or apps.
1package main23import (4 "context"5 "fmt"6 "log"7 "net/http"89 "golang.ngrok.com/ngrok"10 "golang.ngrok.com/ngrok/config"11)1213func main() {⋯14 tun, err := ngrok.Listen(context.Background(),15 config.HTTPEndpoint(config.WithDomain("<YOUR_DEV_DOMAIN>")),16 ngrok.WithAuthtokenFromEnv(),17 )18 if err != nil {⋯19 log.Fatal(err)20 }21 log.Println("Application available at:", tun.URL())22 err := http.Serve(tun, http.HandlerFunc(handler))23 if err != nil {⋯24 log.Fatal(err)25 }26}2728func handler(w http.ResponseWriter, r *http.Request) {⋯29 fmt.Fprintln(w, "Hello from ngrok-go!")30}
Once you run go run main.go, ngrok creates an agent endpoint on your dev
domain and makes this application accessible from anywhere in the world.
With a Kubernetes cluster
If you’re using Kubernetes to make your APIs or apps available to the public,
you can leverage our Kubernetes Operator to handle
ingress and load balancing without dealing deeply with
Ingress or Gateway
API resources.
The Kubernetes Operator then creates pods and services to route all traffic on
https://<YOUR_DEV_DOMAIN> to the example-service pod.
Sign up and get started today
If you don’t yet have an ngrok account, you can sign
up for free—your dev domain is
automatically assigned when you create your account. Check out our pricing page to compare plans.
For smaller projects, the hobbyist plan lets you
use custom ngrok-branded subdomains, like example.ngrok.app.
When you’re ready to start using ngrok for production, check out our
pay-as-you-go plan, which lets you add your custom
branded domain. Then
update your DNS records to point to ngrok to create as many subdomains as you
need and handle ingress to all your services from one place.
Let us know if you run into any problems or have any questions either by
emailing our customer success team or by dropping an
issue in our community repo.