azurefunctionsserverlesscost-optimization

Azure Functions cost: Consumption vs Premium plan

Consumption bills per execution and scales to zero; Premium bills ~$150/month per always-on instance for no cold starts and VNet. Here's the crossover and the min-instances trap.

The C3X Team··7 min read

Quick answer

Consumption bills $0.20 per million executions + $0.000016/GB-second (with free grants) and scales to zero — near-free for bursty workloads. Premium bills for always-allocated instances, ~$150/month for one EP1, buying no cold starts, VNet integration, and predictable performance. Consumption wins for variable load; Premium wins when you need warm instances or sustained high throughput.

The Azure Functions plan you pick changes the cost model entirely, and the choice is really about one tradeoff: pay-per-use with cold starts (Consumption) versus pay-for-capacity with warm instances (Premium). Picking by habit instead of by workload shape is how teams end up either eating cold-start latency they can't afford or paying $150/month for a function that runs twice a day.

Consumption: pay for what runs

Consumption is true serverless. You pay per execution and per GB-second of runtime, with generous free grants, and the app scales to zero when idle:

Executions: $0.20 per million   (first 1M/month free)
Duration:   $0.000016 per GB-second  (first 400,000 GB-s free)

A bursty API or a scheduled job often lands in single-digit dollars or within the free grant entirely. The cost is the cold start: an idle function takes a moment to spin up on the first request. See the cold-start cost/latency tradeoff — the same dynamic applies on Azure.

Premium: pay for warm capacity

Premium (Elastic Premium) keeps pre-warmed instances allocated so there's no cold start, and adds VNet integration, longer timeouts, and bigger instances. You pay for that capacity continuously:

EP1 (1 vCPU, 3.5 GB)  ≈ $0.205/hour ≈ $150/month  (one always-on instance)
+ scales out to more instances under load, each billed per hour

Which is cheaper

  • Consumption wins: variable, bursty, or low-volume workloads. Scale-to-zero means an idle function costs nothing, and the free grants cover a lot.
  • Premium wins: when you need no cold starts, VNet access, or when sustained high throughput would run up Consumption's per-GB-second meter past the cost of a flat instance.

The crossover is utilization, just like Fargate vs EC2: a function busy enough to justify a warm instance most of the time is cheaper on Premium; anything idle much of the day is cheaper on Consumption.

The min-instances trap (again)

Teams reach for Premium to kill cold starts, then leave it scaled higher than needed. One always-on EP1 is $150/month; a default of two or three pre-warmed instances triples that for capacity that mostly sits idle. If cold starts are the only reason you're on Premium, keep the always-ready instance count minimal and let it scale out on demand.

FAQ

How much do Azure Functions cost on the Consumption plan?

Consumption bills $0.20 per million executions (first 1M/month free) plus $0.000016 per GB-second of execution time (first 400,000 GB-seconds free). A light or bursty workload often costs near zero; you pay only for what runs, and it scales to zero when idle.

How much does the Premium plan cost?

Premium (Elastic Premium) bills for always-allocated instances. EP1 (1 vCPU, 3.5 GB) is about $0.205/hour — roughly $150/month for one always-on instance — plus more as it scales out. You pay for pre-warmed capacity whether or not it's handling requests.

When should I use Premium over Consumption?

Use Premium when you need no cold starts (pre-warmed instances), VNet integration, longer execution timeouts, more memory/CPU per instance, or predictable performance under sustained load. Use Consumption for variable, bursty, or low-volume workloads where scale-to-zero and pay-per-use win.

Is the Consumption plan always cheaper?

For variable and low-traffic workloads, yes — often dramatically, because it scales to zero. But a function that runs constantly at high volume can cost more on Consumption's per-GB-second metering than a fixed Premium instance. High, steady load is where Premium's flat capacity can be cheaper.

What about the App Service (Dedicated) plan?

If you already run an App Service plan, you can host functions on it at no extra compute charge (you're paying for the plan anyway). It makes sense when you have spare capacity on an existing plan, but it doesn't scale to zero and lacks Premium's elastic scaling features.

How does C3X estimate Azure Functions cost?

C3X prices an azurerm_linux_function_app on Consumption at the per-execution rate (usage-driven via c3x-usage.yml) and a Premium plan at its always-on instance cost, so you can compare scale-to-zero against pre-warmed capacity before choosing a plan.

What to do next

The plan choice is in your Terraform (the linked service plan), so the cost is decidable before deploy. C3X prices an azurerm_linux_function_app on Consumption from execution volume and on Premium from its instance cost, so you can put scale-to-zero next to pre-warmed capacity on one page. The quickstart runs it in minutes.

Try C3X on your own Terraform

Free and open source. No API key required. One command to install, one command to estimate.