Learn about the limits enforced in the free ngrok for developers plan.
The free tier does NOT have timeouts on tunnels. If you’d like to run your endpoint all the time, you can do so, on the free tier, as a background service.
See Pricing and Limits to learn how to increase or remove these limits.

Limits and licensing

ResourceLimit on Free
Data Transfer Out1 GB
Endpoints1
Requests20,000
TCP Connections5,000
TLS ConnectionsNot Available
You can check your usage in the Usage page in the dashboard.

Free plan resources

ResourceLimit on Free
Users1
Active Endpoints1
Traffic Policy Rules per Policy5
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

Increasing your limits

If you run into a limit, you can upgrade to a plan with higher limits. If you always want your endpoints online and available, select the Pay-as-you-go plan. See the Pricing and Limits page for more information.

Removing the interstitial page

To prevent bad actors from using ngrok to execute phishing attacks, ngrok injects an interstitial page in front of all HTML browser traffic on the free tier.
  • This page informs visitors that they’re accessing a site served by ngrok.
  • Once the visitor selects the “Visit” button to continue to the site, a cookie is set which prevents the interstitial from appearing for that domain for 7 days.
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.
axios.get(url, { 'headers': { 'ngrok-skip-browser-warning': '1' } })
  .then((response => {
    console.log(response.data);
  })
  .catch((error) => {
    console.log(error);
  });

Using a custom user agent

Change your user agent by setting the User-Agent header to something non-standard to bypass the warning, such as MyApp/0.0.1.
You can also use a browser extension to customize your browser’s user agent value. Here is an example for Chrome.

I hit a limit on my plan or ran out of credit. What are my options?

Upgrade to a plan with higher limits. If you want to ensure your endpoints are always online, choose the Pay-as-you-go plan.