Free Dyno Hours
Last updated 14 November 2017
Every Heroku account is allocated a pool of hours which you can use with Free dynos. Free dynos are unique because they go to sleep after 30 minutes of inactivity. This helps you conserve your Free dyno hours and so you can use them for fun, learning and experimentation. Other dyno types do not sleep or have a pool of hours.
An app actively consumes Free dyno hours if some part of the app is running. For example, if any of the following are true.
- There is a web dyno that is receiving traffic.
- If a worker dyno is running without a web dyno.
- A one-off dyno is running. For example, started via the CLI or the Scheduler.
If an app has a web dyno, and that web dyno receives no traffic in a 30 minute period, the web dyno will sleep. In addition to the web dyno sleeping, the worker dyno (if present) will also sleep.
Free dynos do not consume Free dyno hours while sleeping.
If a sleeping web dyno receives web traffic, it will become active again after a short delay. If the app has a worker dyno that was scaled up before sleeping, it will be scaled up again too.
Occasionally, monitoring services such as Pingdom or New Relic monitoring can prevent a web dyno from sleeping. Run
heroku logs -t to view your app’s logs to see if this is the case and turn off these services if it is happening.
Worker-only Free dynos do not sleep since they do not respond to web requests. Be mindful of this as they may run 24/7 and consume from your pool of hours.
Free dyno hour pool
Accounts are given a base of 550 hours each month in which your Free dynos can run. In addition to these base hours, accounts which verify with a credit card will receive an additional 450 hours to the monthly Free dyno quota.
Used free dyno hours are non-transferable. If you transfer an application which has used hours to a different account, the portion you used while the app was on your account will remain until it resets the following month.
When you use all your Free dyno hours for a given month, all Free apps on your account will be forced to sleep for the rest of the month.
Determining your Free dyno hours
You can view the amount of Free dyno hours remaining by using the CLI. You can do this by running
heroku ps on one of your Free apps.
$ heroku ps -a <app name> 650 free dyno hours (65%) used 350 hours remaining === web (Free): bundle exec puma -C config/puma.rb (1) web.1: idle 2016/05/16 15:51:45 -0700 (~ 22h ago)
Alternatively, you can also view this on Dashboard’s billing page Billing page.
When you exceed 80% of your Free dyno quota, you will receive an email notification warning you of your account usage, giving you time to adjust Free dyno usage across your apps.
A second notification will be sent when you reach 100% of your account quota, at which point your application’s dynos will be put to sleep for the remainder of that month. As a result, any apps using free dynos will not be accessible for the remainder of the month. This doesn’t affect any paid apps you may have, which will continue to run.
Managing your quota
- Scale down apps that you don’t use, and ensure that one-off dynos are not run.
- Any apps that are critical should be upgraded to hobby dynos.
- Turn off any pinger or monitoring, such as New Relic or Pingdom, as they may unintentionally keep your app awake.