Posted on Aug 8, 2026 · Updated Aug 8, 2026 · 10 min read

ALB vs NLB Pricing: LCU Math Demystified (2026)

AWS load balancers don't bill a flat rate per hour — they bill an hourly base charge plus a capacity-unit rate (LCU for Application Load Balancer, NLCU for Network Load Balancer, GLCU for Gateway Load Balancer), and the capacity-unit charge is driven by whichever traffic dimension is highest that hour — not the sum of all of them. Most teams never model this and either overpay for headroom they don't need or get surprised when one spiky dimension (often new connections per second, not bandwidth) triples the bill.

This guide demystifies the LCU math for all three AWS load balancer types, compares base pricing side by side, and works through a realistic traffic profile end to end so you can convert your own traffic into a monthly dollar figure. For the transfer costs that ride alongside load balancer traffic, see our AWS data transfer cost map and our NAT Gateway pricing guide, since egress and NAT charges frequently stack on top of load balancer processing fees in the same request path.

TL;DR — ALB vs NLB vs GWLB pricing (2026)

  • ALB: $0.0225/hr + $0.008/LCU-hr — use for HTTP/HTTPS, path-based routing, WebSockets, and container/Kubernetes ingress (L7)
  • NLB: $0.0225/hr + $0.006/NLCU-hr — use for ultra-low-latency TCP/UDP, static IPs, and millions of connections per second (L4)
  • GWLB: $0.0125/hr + $0.004/GLCU-hr — use to insert third-party firewalls/IDS appliances transparently in the traffic path (L3 gateway)
  • You're billed on the single highest LCU dimension per hour, not the sum — a burst of new connections can dominate the bill even with modest bandwidth
  • ALB tracks 4 dimensions: new connections/sec, active connections/min, processed bytes/hr, rule evaluations/sec. NLB tracks 3: new connections/sec (or flows), active connections/min, processed bytes/hr
  • The real gotcha: LCU charges are separate from data processing/transfer fees — run traffic through an ALB, a NAT Gateway, and internet egress and you pay three different per-GB-style charges for the same bytes
Network switches and cabling representing load balancer traffic routing

The master ALB vs NLB vs GWLB pricing table

Prices below are 2026 US East (N. Virginia) list rates for planning purposes. AWS publishes these per-region and they do shift over time — always confirm current numbers against the AWS Elastic Load Balancing pricing page before budgeting a production workload.

Load balancerHourly base rateCapacity-unit rateLayerBilled dimensions
Application LB (ALB)$0.0225/hr$0.008/LCU-hrL7 (HTTP/HTTPS/gRPC)4: new conns/sec, active conns/min, bytes processed/hr, rule evals/sec
Network LB (NLB)$0.0225/hr$0.006/NLCU-hrL4 (TCP/UDP/TLS)3: new conns or flows/sec, active conns/min, bytes processed/hr
Gateway LB (GWLB)$0.0125/hr$0.004/GLCU-hrL3 (GENEVE gateway)Primarily bytes processed/hr through the appliance

Rates shown are 2026 US East (N. Virginia) list prices for planning; other regions vary by a few percent. Source: AWS Elastic Load Balancing Pricing. Confirm current rates for your region before budgeting.

What a Load Balancer Capacity Unit actually is

Every AWS load balancer type meters capacity across several traffic dimensions in parallel, then converts each dimension into an equivalent number of “capacity units” for that hour. The dimension that produces the highest unit count wins — you pay for that one number, not the sum of all dimensions. This is the single most misunderstood part of load balancer pricing, and it's why two workloads with identical bandwidth can land on wildly different bills.

The mechanics work the same way across ALB, NLB, and GWLB — only the specific dimensions and their per-unit thresholds differ. AWS measures usage each hour, computes how many capacity units each dimension alone would require to serve that traffic, and bills the maximum of those numbers rounded to the nearest 0.01 unit.

ALB: the 4 LCU dimensions

One Application Load Balancer LCU-hour buys you the highest of these four thresholds, measured over the hour:

Dimension1 LCU buys you
New connections25 new connections/second
Active connections3,000 active connections/minute
Processed bytes1 GB/hour (HTTP), 0.4 GB/hour if TLS termination is on the ALB
Rule evaluations1,000 rule evaluations/second (the default single rule doesn't count; each additional listener rule beyond the first adds a multiplier)

To compute LCUs for an hour: divide your actual usage in each dimension by its per-LCU threshold, then take the largest of the four resulting numbers. That's your billed LCU count for that hour — the other three dimensions ride along free once the max one is covered.

NLB: the 3 NLCU dimensions

Network Load Balancer drops the rule-evaluation dimension (NLB does L4 routing, not L7 content-based rules) and uses a coarser byte-processing rate that reflects its higher-throughput design:

Dimension1 NLCU buys you
New connections or flows800/second for TCP, 400/second for TLS
Active connections100,000 active connections/minute
Processed bytes1 GB/hour (plain TCP/UDP), 0.5 GB/hour if TLS termination is on the NLB

NLB's active-connections threshold (100,000/minute per unit) is more than 30x looser than ALB's (3,000/minute), which is exactly why NLB is the right tool for workloads with huge numbers of long-lived, low-chatter TCP connections — think IoT fleets, game servers, or gRPC streams — that would otherwise blow through ALB's active connection LCU and force you to pay for capacity you don't functionally need.

GWLB: GLCU in brief

Gateway Load Balancer sits at L3 and is built for one job: transparently routing traffic through third-party virtual appliances (firewalls, intrusion detection, deep-packet inspection) using GENEVE encapsulation, without the traffic's source or destination needing to know an appliance is in the path. Its capacity-unit math is simpler in practice — the dominant dimension is almost always processed bytes/hour flowing through the appliance fleet, since GWLB doesn't do connection-based routing decisions the way ALB and NLB do. Treat GWLB cost as roughly proportional to total inspected traffic volume for planning purposes, then verify against actual usage once appliances are live.

Worked example: converting traffic into a monthly bill

Assume a mid-size API service behind an ALB with this hourly traffic profile at peak:

  • 450 new connections/second
  • 8,000 active connections/minute
  • 2.5 GB processed/hour (HTTPS, TLS terminated on the ALB)
  • 600 rule evaluations/second (a handful of path-based routing rules)

Convert each dimension into LCUs using the thresholds above:

DimensionUsageThresholdLCUs required
New connections450/sec25/sec per LCU18.0
Active connections8,000/min3,000/min per LCU2.7
Processed bytes (TLS)2.5 GB/hr0.4 GB/hr per LCU6.25
Rule evaluations600/sec1,000/sec per LCU0.6

The max across all four is new connections at 18.0 LCUs — that's the billed number for this hour, even though processed bytes and active connections are nowhere close to that ceiling. This is the core lesson: a connection-churn-heavy workload (short-lived requests, frequent reconnects, aggressive client retry logic) can dominate the bill long before bandwidth becomes the limiting factor.

Assuming this peak profile holds for roughly 10 peak-equivalent hours/day (a common simplification for services with a daily traffic curve) and a lighter ~4 LCU baseline for the other 14 hours:

ComponentMonthly cost
Hourly base rate (730 hrs × $0.0225)$16.43
Peak LCU-hours (10 hrs/day × 30 × 18 LCU × $0.008)$43.20
Off-peak LCU-hours (14 hrs/day × 30 × 4 LCU × $0.008)$13.44
Total estimated monthly ALB cost≈ $73.07

Run the same 2.5 GB/hr peak traffic through an NLB instead (assuming it's a raw TCP workload rather than HTTP, so the ALB comparison isn't apples-to-apples, but useful for seeing the rate difference): the processed-bytes threshold is looser (1 GB/hr per NLCU vs. 0.4 GB/hr for ALB with TLS termination) and the per-unit rate is lower ($0.006 vs. $0.008), so NLB pricing for byte-heavy, low-connection-churn traffic comes in meaningfully cheaper — often the deciding factor for high-throughput streaming or bulk-transfer workloads that don't need L7 routing.

When each load balancer type is the right (and cheapest) choice

Cheapest isn't just about the sticker rate — the wrong load balancer type for your traffic shape can cost more even at a lower per-unit price, because the wrong dimension model produces more billed units.

  • Choose ALB for HTTP/HTTPS/gRPC traffic that needs path- or host-based routing, WebSocket support, native OIDC/Cognito authentication, or Kubernetes ingress via the AWS Load Balancer Controller. The rule-evaluation and content-aware routing capability is worth the higher per-LCU rate for anything that benefits from L7 intelligence.
  • Choose NLB for raw TCP/UDP/TLS traffic needing ultra-low latency (single-digit millisecond added latency), a static IP or Elastic IP per AZ, extreme connections-per-second scale (millions), or preservation of the client's source IP without proxy protocol overhead. NLB is also the required front door for AWS PrivateLink endpoint services.
  • Choose GWLB only when you need to insert third-party security appliances (firewalls, IDS/IPS) transparently into a traffic path across many VPCs — it's not a general-purpose load balancer for application traffic and shouldn't be evaluated as an ALB/NLB alternative outside that use case.

For containerized workloads, this decision usually shows up as EKS ingress choice; see our EKS vs AKS vs GKE pricing guide for how load balancer cost fits into overall managed Kubernetes economics.

The gotcha: LB + NAT + egress stack

LCU/NLCU/GLCU charges are billed independently of data transfer and NAT Gateway processing fees — they're not a substitute for either. A single request path where a client hits an internet-facing ALB, the target routes an outbound call through a NAT Gateway, and the response leaves back out to the internet can rack up three separate per-byte-style charges on effectively the same data:

  • ALB processed-bytes LCU cost for bytes flowing through the load balancer
  • NAT Gateway processing charge ($0.045/GB) for any outbound traffic routed through it — see our NAT Gateway pricing guide for the full breakdown
  • Internet data transfer out ($0.09/GB tiered) for bytes leaving AWS entirely — detailed in our AWS data transfer cost map

None of these individually looks large on a line-item basis, but at meaningful traffic volumes they compound. Architectures that route unnecessary traffic through a NAT Gateway when a VPC endpoint would do, or that terminate TLS redundantly at multiple hops, pay for the same bytes multiple times over. Model the full path, not just the load balancer line item, when estimating total cost.

To model your own load balancer and networking spend without building a spreadsheet from scratch, the SpendArk cloud cost calculator lets you compare ALB, NLB, and the surrounding data transfer costs side by side.

Data center server racks representing network traffic routing and load balancing

Providers with simpler load balancer pricing

If tracking four separate LCU dimensions across ALB, NLB, and GWLB is more overhead than your traffic volume justifies, these providers offer flatter load balancer pricing with fewer billing dimensions to model.

  • DigitalOceanload balancers bill a flat monthly rate per instance, no capacity-unit math to track across multiple traffic dimensions.
  • Hetznerload balancer pricing is a flat hourly rate plus included traffic, simple to forecast for small to mid-size workloads.
  • Vultrload balancers use straightforward per-instance pricing without ALB-style multi-dimension capacity billing.

Some provider links above are affiliate links — we may earn a commission at no extra cost to you. It never affects our pricing data.

Frequently asked questions

What is an LCU in AWS load balancer pricing?

A Load Balancer Capacity Unit (LCU) is the billing unit AWS uses for Application Load Balancer capacity beyond the hourly base rate. Each LCU-hour covers a threshold in four traffic dimensions — new connections/second, active connections/minute, processed bytes/hour, and rule evaluations/second — and you're billed for whichever dimension requires the most LCUs in a given hour, not the sum of all four.

Is NLB cheaper than ALB?

NLB's per-unit rate ($0.006/NLCU-hr) is lower than ALB's ($0.008/LCU-hr), and its thresholds for active connections and processed bytes are looser, so byte-heavy or connection-heavy TCP/UDP traffic is usually cheaper on NLB. But NLB can't do L7 routing, so if your workload needs path-based rules or host-based routing, ALB is the only option regardless of price — you'd otherwise need to build that routing logic elsewhere.

Why is my ALB bill higher than expected given low bandwidth?

LCU billing is driven by the highest of four dimensions, not total bandwidth. A service with frequent short-lived connections (heavy client retries, no keep-alive, chatty polling) can rack up a large new-connections LCU count even with low processed-bytes volume. Check CloudWatch's ConsumedLCUs metric and its per-dimension breakdown to identify which dimension is driving the bill.

Does GWLB pricing work the same way as ALB and NLB?

Yes — GWLB uses the same base-rate-plus-capacity-unit model (GLCU), but its billing is dominated almost entirely by processed bytes/hour flowing through the connected appliance fleet, since GWLB doesn't do L7 rule evaluation or the same connection-based routing NLB and ALB do. Treat GWLB cost as roughly proportional to inspected traffic volume for initial planning.

Do load balancer charges include data transfer costs?

No. LCU/NLCU/GLCU processed-bytes charges are separate from AWS data transfer (egress) pricing and NAT Gateway processing fees. The same bytes can be billed through the load balancer's capacity-unit rate, a NAT Gateway's per-GB processing charge, and internet data transfer out — all in the same request path.

Estimate your cloud costs — for free

Compare AWS, Azure, and GCP pricing side by side with our free calculator, and dig into the guides to learn how to cut cloud waste. No sign-up required.