ALB vs NLB cost: why they're nearly identical and what actually drives the bill
ALB and NLB both cost ~$16.43/month to exist plus LCU/NLCU usage at ~$0.006-0.008 per unit-hour. The price difference is small — the real lever is the LCU dimension your traffic stresses and how many balancers you run.
Quick answer
ALB and NLB cost almost the same: a flat ~$16.43/month to exist plus a usage charge in LCUs/NLCUs at ~$0.006-0.008 per unit-hour. Price is rarely the deciding factor — choose ALB for HTTP/HTTPS routing and NLB for raw TCP/UDP/TLS throughput. The real cost lever is how many load balancers you run: each one carries the hourly base whether traffic flows or not.
"ALB vs NLB" is usually framed as a features question, but it comes up just as often as a cost question, because both show up on the bill as a flat charge that's there even when the app is idle. The good news: they cost nearly the same. The useful news: the thing that actually moves your load-balancer bill isn't the type, it's the count and the LCU dimension your traffic happens to stress.
The two-part bill
Both balancers charge the same shape: an hourly base plus a usage unit.
- Hourly base: ~$0.0225/hour, about $16.43/month, per balancer. Charged continuously regardless of traffic.
- Capacity units: ALB bills LCUs, NLB bills NLCUs, at roughly $0.006-0.008 per unit-hour. You pay for the peak dimension each hour, not the sum.
What an LCU actually measures
An LCU bundles four dimensions, and AWS charges for whichever is highest in a given hour:
- New connections per second (25/sec per LCU)
- Active connections per minute (3,000 per LCU)
- Processed bytes (1 GB/hour per LCU for ALB)
- Rule evaluations per second (1,000 per LCU)
This is why two apps with the same request count can have very different ALB bills. A websocket app pins the active-connections dimension; a high-throughput download service pins processed bytes; an ALB with hundreds of routing rules pins rule evaluations. Find your peak dimension and you've found your bill.
Where ALB and NLB actually diverge on price
NLB's NLCU meters TCP, UDP, and TLS traffic separately, and TLS connections are more expensive per unit because NLB terminates them. For a plain HTTP/HTTPS app the two come out within a few dollars of each other. The cases where it tilts:
- Very high throughput, few connections: NLB's per-GB metering can be cheaper than ALB's for raw byte movement.
- Lots of routing rules: only ALB charges rule evaluations, so a rule-heavy ALB can cost more than an equivalent NLB that does no L7 routing.
The real cost lever: how many do you run?
The single biggest load-balancer overspend isn't ALB-vs-NLB, it's sprawl. One balancer per microservice, plus one per preview environment, plus stale ones from deleted stacks, each carry the $16.43/month base. Twenty idle ALBs is $329/month for routing nothing. Consolidating onto a shared ALB with host- and path-based rules collapses that to a single base charge.
FAQ
How much does an AWS load balancer cost?
Both ALB and NLB start at a flat ~$0.0225/hour (about $16.43/month) just to exist, plus a usage charge measured in LCUs (ALB) or NLCUs (NLB) at ~$0.006 per unit-hour. A lightly loaded balancer is ~$16-20/month; a busy one is driven by whichever LCU dimension peaks.
Is ALB or NLB cheaper?
The hourly base and per-unit rate are nearly identical. The difference is which dimension your traffic stresses. ALB's LCU counts new connections, active connections, processed bytes, and rule evaluations; NLB's NLCU counts connections and bytes but TCP and TLS traffic are metered differently. For most HTTP apps the cost is within a few dollars of each other — choose on features, not price.
What is an LCU and how is it billed?
A Load balancer Capacity Unit bundles four dimensions: new connections/sec, active connections, processed bytes, and rule evaluations. AWS bills you for the single highest dimension each hour, not the sum. One LCU is about $0.008/hour. The dimension that peaks for your workload is the one that sets the bill.
Why am I paying for a load balancer with almost no traffic?
The ~$16.43/month hourly base is charged whether or not traffic flows. Teams that spin up one ALB per service or per preview environment accumulate dozens of these idle base charges. Consolidating with host/path routing rules on a shared ALB is the usual fix.
Does a Classic Load Balancer cost less?
No, and it's deprecated. CLB is billed per hour plus per GB and lacks the routing features of ALB. Migrate to ALB (HTTP/HTTPS) or NLB (TCP/UDP/TLS) — there's no cost reason to stay on Classic.
How does C3X estimate load balancer cost?
C3X prices the hourly base charge for an aws_lb from its type, and treats the LCU/NLCU usage as usage-driven — add expected connections and processed bytes in c3x-usage.yml to include it.
What to do next
Pick the balancer by protocol and features, then control the count. Audit for idle balancers, consolidate microservice routing behind shared ALBs, and delete the ones left over from torn-down stacks. C3X prices the hourly base for every aws_lb in your Terraform and flags balancers that exist with no backend traffic modeled. The quickstart shows the totals across your whole stack in one run.
Share this post
Try C3X on your own Terraform
Free and open source. No API key required. One command to install, one command to estimate.