Tips for running free dynos on Heroku in 2019

Heroku has changed how they handle free dynos multiple times over the years, so you’d be excused for being a little lost about the current state of things. The bottom line is that while it’s possible to run a 24/7 production app on a free Heroku dyno, it comes with some caveats. In this article we’ll dive into the details and clear up the confusion.

Money

The current official docs do a fine job laying out the basics:

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.

A few points of clarification I’d add:

Heroku account billing page

You can check how many free dyno hours you have available at any time on your Heroku billing page.

That’s nice to know, but let’s unpack what “free dyno hours” means. Free dynos are one of Heroku’s six dyno types.

Heroku's six dyno types

Free dynos are identical to hobby dynos ($7/mo) and standard-1x dynos ($25/mo), with some limitations:

This means you can run the equivalent of a standard dyno for free for 1,000 hours per month. With 744 hours in a 31-day month, that means you can run your production app 24/7 on Heroku for free, right?

Well, that depends.

Most production apps need at least a web process and a background worker process for things like sending email and processing payments. That’s two dynos running for 744 hours per month, which exceeds your 1,000 hour allotment. Free worker dynos do not automatically idle like free web dynos do, so they’ll be running 24/7 unless you manually scale them down.

This is where you need to decide just how “production-scale” your app needs to be right now. You could perform this work synchronously within your web process instead of backgrounding it, or you find a way to run async jobs within your web process. Some background work could also be performed on a periodic basis with Heroku Scheduler, which only uses dyno hours for the time it’s running.

If you really do need a separate worker process (many production apps do), then you’ve probably outgrown free dynos.

We also need to talk about your database. Heroku’s free Postgres offering is limited to 10,000 records. Yeah… that hurts.

Heroku Postgres plans

Even the smallest production apps are likely going to exceed this limitation. Here are your options:

I personally think Heroku’s Postgres plans are worth every penny, but I also know firsthand the cost can be hard to swallow when launching a side project with no revenue.


So with all this in mind, when do Heroku’s free offerings make sense for you?

Beyond those use cases, you’re probably going to have to pay for Heroku. The free options exist to try out the service, play with an idea, and run experiments. Once you’re running a “real app”, you should be at a point where you can spend a few dollars on hosting. You’ll still be spending a whole lot less than the engineering time required to manage your own production environment.

If you found this useful and want more Heroku tips, you should follow me on Twitter and subscribe to my Mastering Heroku newsletter. See you there! :-)

Published by Adam on February 5, 2019
Last updated on February 8, 2019

HomeArticlesTwitterNewsletterDocs