Guides · Networking
A load balancer bills for every hour or partial hour it runs, whether or not anything is behind it. Load balancers left over from old environments, tests and retired services keep billing until someone deletes them. Each idle Application or Network Load Balancer costs about $16.43 a month in us-east-1 before any traffic charges, plus its public IPv4 addresses if it faces the internet.
| Type | Per hour | Per month (730 hours) | Plus |
|---|---|---|---|
| Application Load Balancer (ALB) | $0.0225 | $16.43 | $0.008 per LCU-hour |
| Network Load Balancer (NLB) | $0.0225 | $16.43 | $0.006 per NLCU-hour |
| Gateway Load Balancer | $0.0125 | $9.13 | $0.004 per GLCU-hour |
| Classic Load Balancer | $0.025 | $18.25 | $0.008 per GB processed |
One idle ALB is $197.10 a year. Partial hours are billed as full hours.
Capacity units. On top of the hourly charge, an ALB bills Load Balancer Capacity Units (LCUs). AWS measures four dimensions, averaged over the hour, and charges only for the one with the highest usage. One LCU is 25 new connections per second, 3,000 active connections per minute, 1 GB per hour of processed bytes for EC2, container and IP targets (0.4 GB for Lambda targets), or 1,000 rule evaluations per second. The first 10 rules are free. An NLB bills NLCUs the same way; for TCP traffic, one NLCU is 800 new connections per second, 100,000 active connections or 1 GB processed per hour.
Public IPv4 addresses. An internet-facing load balancer uses public IPv4 addresses, and AWS charges $0.005 an hour for each one in use. AWS's own pricing example shows a load balancer with two, which adds $7.30 a month.
1. What you pay: Billing and Cost Management → Cost Explorer, grouped by Usage type. Look for LoadBalancerUsage (hours) and LCUUsage (capacity units). In us-east-1 they have no prefix; in other regions they start with a region code.
2. List your load balancers (repeat for each region):
aws elbv2 describe-load-balancers --region us-east-1 \
--query 'LoadBalancers[].[LoadBalancerName,Type,Scheme,CreatedTime]' --output table
3. Does anything sit behind it? List its target groups, then the registered targets in each one. A load balancer whose target groups are empty, or that has none, has nothing to send traffic to. One exception: an Application Load Balancer whose listener rules only redirect or return a fixed response needs no targets and can still be in use, so check its rules and request count before deleting it. The checkup doesn't read listener rules, so it flags such a load balancer as idle.
aws elbv2 describe-target-groups --region us-east-1 \
--load-balancer-arn arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/my-alb/0123456789abcdef \
--query 'TargetGroups[].TargetGroupArn' --output text
aws elbv2 describe-target-health --region us-east-1 \
--target-group-arn arn:aws:elasticloadbalancing:us-east-1:123456789012:targetgroup/my-targets/0123456789abcdef \
--query 'TargetHealthDescriptions[].[Target.Id,TargetHealth.State]' --output table
4. Does it get traffic? For an ALB, sum RequestCount over 14 days. For an NLB, use NewFlowCount or ProcessedBytes in the AWS/NetworkELB namespace instead.
aws cloudwatch get-metric-statistics --region us-east-1 --namespace AWS/ApplicationELB \
--metric-name RequestCount --dimensions Name=LoadBalancer,Value=app/my-alb/0123456789abcdef \
--start-time 2026-09-19T00:00:00Z --end-time 2026-10-03T00:00:00Z \
--period 86400 --statistics Sum --output table
Both types also publish ConsumedLCUs, the capacity units you're billed for.
5. Classic Load Balancers list their registered instances directly:
aws elb describe-load-balancers --region us-east-1 \
--query 'LoadBalancerDescriptions[].[LoadBalancerName,length(Instances)]' --output table
aws elbv2 delete-load-balancer --load-balancer-arn ARN. Charges stop as soon as it's deleted.The free checkup finds this and 20 other kinds of issues automatically. In each region it scans, it flags Application, Network and Gateway Load Balancers with no registered targets, Application Load Balancers with zero requests in 14 days, and Classic Load Balancers with no instances. If it can't read a target group's health, it assumes the group is in use. It prices each idle load balancer at $0.0225 an hour, so its estimate for a Classic Load Balancer ($0.025) is slightly low. It doesn't count capacity units or public IPv4 addresses, and it doesn't check traffic on Network Load Balancers that have targets.
LoadBalancerUsage $0.0225 per hour (Application, Network), $0.0125 (Gateway), $0.025 (Classic); LCUUsage $0.008 (Application), $0.006 (Network), $0.004 (Gateway) per capacity unit-hour; DataProcessing-Bytes $0.008 per GB (Classic).Prices are AWS on-demand list prices for US East (N. Virginia), checked October 3, 2026. Other regions differ.