Skip to main content

Limits for ngrok's free plan

Learn about the limits enforced in the ngrok free plan.

tip

See the pricing page for more details on increasing or removing these limits.

Free plan limit table

ResourceLimit on FreeLimit on Development PlansLimit on Production Plans
Data Transfer Out1 GBSee pricingSee pricing
Endpoints11See pricingSee pricing
Requests20,000No limit100,000 then usage-based
TCP Connections5,000No limit10,000 then usage-based
TLS Connections5,000No limit10,000 then usage-based
note

You can check your current usage in the dashboard.

Free plan resources

ResourceLimit on Free
Users1
Active Endpoints[^1]1
ngrok static domain1
Tunnels per agentup to 3
Bandwidth1 GB Outgoing/month
TCP Connection Rate120/min
Agents1
Edges1
Logs/EventsUp to 10,000 per month
OAuth/OIDC MAUUp to 5 per month
HTTP RequestsUp to 20,000/month
TCP ConnectionsUp to 5,000/month
TLS ConnectionsUp to 5,000/month
Webhook verificationsUp to 500/month

Features included for free on all plans:

  • HTTPS Tunnels
  • HTTPS Edges
  • Web Inspection Agent
  • Replay Requests
  • ngrok SDKs
  • ngrok Kubernetes Operator
  • Remote Agent Management
  • Circuit Breaking
  • Automatic Certificates and Encryption
  • Email Support

Learn more about ngrok limits

See the Pricing and Limits page for more details on ngrok's pricing, limits, and licensing model.

Removing the interstitial page

To prevent bad actors from using ngrok to create phishing pages, ngrok injects an interstitial page in front of all HTML browser traffic on the free tier. Once the user acknowledges that the site is being served by ngrok, a cookie is set that is valid for 7 days for that domain.

note

This does not impact users serving APIs or accessing ngrok endpoints programmatically.

You can remove the interstitial by upgrading to any paid plan or using one of the following methods.

Using headers

From the client accessing the ngrok endpoint, add a header value of ngrok-skip-browser-warning and set it to any value. These requests will bypass the interstitial.

const response = await fetch(URL, {
headers: {
"ngrok-skip-browser-warning": "1",
},
// ...
});

Using a custom user agent

Change your user agent by setting the User-Agent header to something non-standard, such as MyApp/0.0.1, to bypass the warning.

tip

You can also use a browser extension to customize your browser's user agent value. Here is an example for Chrome.

Increasing your limits

If you run into a limit, you have two options:

See the Pricing and Limits page for more information.

Footnotes

  1. Endpoints are the public URLs that ngrok creates for your tunnels.