Free Dyno Hours
Last updated 09 March 2020
Every Heroku account is allocated a pool of free dyno hours, which can be used by Personal apps - apps that are not part of a Heroku Team or Enterprise Team.
An app actively consumes free dyno hours if the app is set to use
free dynos and any of the following are true:
- It has a web dyno that is receiving traffic (i.e., not sleeping)
- It has a worker dyno running
- It has a one-off dyno running. For example, one started via the CLI or Scheduler.
If an app has a free web dyno, and that dyno receives no web traffic in a 30-minute period, it will sleep.
Free web 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 (assuming your account has free dyno hours available).
Worker dynos do not sleep, because they do not respond to web requests. Be mindful of this as they may run 24/7 and consume from your pool of hours.
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.
Free dyno hour pool
Personal accounts are given a base of 550 free dyno hours each month. In addition to these base hours, accounts which verify with a credit card will receive an additional 450 hours added to the monthly free dyno quota. This means you can receive a total of 1000 free dyno hours per month, if you verify your account with a credit card.
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, which is refreshed daily to display the updated amount.
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 free dyno usage
- 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