
Predicting your Fly.io bill and avoiding surprises
Weāve done our best to make billing on Fly.io something you can reason about. Machines donāt appear out of nowhere. If something is running, itās because you launched it, or you configured something that did. In general, when we talk about autoscaling, we mean starting or stopping machines youāve already defined. We donāt quietly spin up extras in the background that turn into mystery charges on your bill. The idea is that your bill should always be traceable to something you can see, name, and plausibly explain when someone asks. If itās not, weāre happy to help you sort it out.Need more help understanding your bill? Reach out to us at billing@fly.io.
A few examples
So when youāre budgeting, you can look at what youāve provisioned and do some quick math. Letās say youāve deployed three āshared-1x 1GBā machines insjc. Thatās $23.95/month, tops. If you let them stop when idle, you might only pay for a few hours of computeābut the worst-case scenario is still capped at that monthly rate.
Here are a few more grounded examples:
- A staging app running in the
sjcregion with oneshared-1x 256MBmachine that auto-stops when idle might cost less than $1/month. If you leave it running full-time, itās still only $2.62/month. - A queue worker (also in
sjc) that uses metrics-based autoscaling onshared-1x 512MBmachines might average 3ā5 machines running during busy hours. If those stay up for 50% of the month, youāre looking at $6.61ā11.01/month, worst-case around $22 month if they all run 24/7.
Want to play with numbers? Try the Fly.io pricing calculator to get a rough sense of what your setup might cost. For the full breakdown, hereās our pricing page.
Metrics-based autoscaling can affect costs
There is one important exception to the rule that Fly.io doesnāt create machines on your behalf. If you use the metrics-based autoscaler, for example to scale a background worker based on queue depth, it can create or destroy machines automatically. When can the metrics-based autoscaler create machines? When you deploy and configure the Fly Autoscaler, and useFAS_CREATED_MACHINE_COUNT instead of FAS_STARTED_MACHINE_COUNT, youāre giving it permission to create and destroy machines on your behalf. It still uses the machine sizes and regions you specify, and anything it spins up counts toward your bill. Read more in the docs.
Other Stuff to Watch For
A few more things that can quietly run up your bill if youāre not paying attention:- Bandwidth costs can add up. Outbound data transfer is billed at $0.02/GB in North America and Europe, with higher rates in some other regions. Ingress is free. If youāre serving media, syncing large datasets, or replicating across regions, bandwidth can quietly become a big line item. Learn about data transfer pricing.
- Volumes donāt stop billing when your machines do. Persistent volumes are billed hourly, whether or not your machine is running. That 3GB volume you forgot about in
fra? Itās still costing you. Read about storage pricing here. - Volume snapshots are billed. Snapshot storage is billed on the data stored, after a free allowance each month, so automatic snapshots you keep for backups add to your bill. See snapshot pricing.
- Managed services live outside your apps. Flyās Managed Postgres (MPG), Upstash Redis, and Tigris object storage donāt get deleted when you delete your apps. Youāll find them in your Dashboard. If youāre cleaning up, double-check there too. Weāve seen people get surprised by bills from leftover services and databases they thought were gone.
- Dedicated public IPv4 addresses arenāt free. Each http app gets billed $2/month if you assign it a dedicated public IPv4. If youāve got a bunch of apps or deploy previews per branch, this can sneak up on you.
- Internal-only apps still count. Just because a Fly app doesnāt serve web traffic doesnāt mean itās free. Background workers, queue processors, cron jobs: they all run machines, and those still cost money.
Understanding Free Usage and Overages
- Free allowances donāt cap your bill. We may give you free credits and usage allowances, especially when youāre starting out or have a legacy billing plan. But thereās no soft ceiling. If you go over, weāll bill you. We donāt support billing alerts (yet), so budget accordingly.
- There is no āfree account/free tierā on Fly.io. New accounts get a $1 free trial credit.
- Check your dashboard often. To spot ballooning costs and overages before they become an issue, check the ācurrent month to date billā item in your dashboard.
Related Reading
Want to go deeper on scaling strategies, autoscaling configuration, or controlling concurrency? These docs walk through the mechanics:- Autoscale Fly Machines A practical guide to getting basic autoscaling working with Fly Machines. Covers HTTP-based scaling triggers.
- Metrics-based Autoscaling This is the one that can create machines automatically, based on queue depth or another metric you specify. Use it wisely.
- Setting Concurrency Limits Shows how to keep your app from getting overwhelmed by too many concurrent requests. Especially useful if youāre scaling horizontally.