Static domains for all ngrok users

August 16, 2023
min read
Nijiko Yonskai

We are excited to announce the launch of one of our most requested features — static domains for our free users. Starting today, all users can claim one static domain for free.

Static domains are unique domains that are yours and don’t change. With your free static domain, you can focus on developing your application, and no longer need to worry about broken links caused by agent restarts. There’s no need to constantly keep updating webhook providers or mobile apps with new URLs or send new links to your team.

Our mission is to equip developers with a unified ingress platform to deliver applications and APIs across every stage of the application lifecycle - from test/dev through production environments.

Adding static domains to the free tier speeds up your dev/test flows and it also unlocks new production use cases. If you don’t require a branded domain, you can now run your first production app on ngrok’s free tier. This is suitable for pre-release versions or internal apps. You can always upgrade later to bring your own custom domain when you’re ready to put it in front of customers.

How do I claim my free static domain?

To claim your static domain, follow these steps:

  1. Log in to your ngrok account.
  2. Navigate to Cloud Edge > Domains.
  3. Follow the prompts to claim your unique, static domain.
Login, go to Cloud Edge -> Domains to claim your static domain

Use your new static domain

Now with a static domain for your apps and APIs, you can use ngrok not just in test/dev environments, but also for production use-cases. 

Here are a few examples of configuring ngrok agents with your static domain:

ngrok CLI

ngrok http --domain=[static-domain] 80

ngrok Agent SDKs

Another way to use ngrok and your static domains is via the ngrok Agent SDKs. Here is an example using the ngrok-go sdk:

package main

import (


func main() {
	tun, err := ngrok.Listen(context.Background(),
	if err != nil {
	log.Println("Application available at:", tun.URL())
	err := http.Serve(tun, http.HandlerFunc(handler))
	if err != nil {

func handler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintln(w, "Hello from ngrok-go!")

Kubernetes Ingress Controller

With the addition of static domains and Cloud Edges in the free tier, you can also leverage ngrok’s Kubernetes Ingress Controller with a static domain:

kind: Ingress
  name: example-ingress
  ingressClassName: ngrok
  - host: ${STATIC_DOMAIN}
      - path: /
          serviceName: example-service
          servicePort: 80

Sign up and get started today

In case you don’t yet have an account, you can sign up for one. Let us know if you run into any problems or have any questions. You can reach us on Twitter, the ngrok community on Slack or at

Share this post
Nijiko Yonskai
Niji is a Senior Product Manager at ngrok helping shape ngrok user experience. Previously product at Kong and Postman. Outside of work Niji is an amateur pasta chef, early-stage investor, writer and open-source developer.
Cloud edge