Updated October 3, 2026

Guides · Networking

Idle load balancers: what an unused ALB or NLB costs

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.

What they cost (us-east-1 list prices)

TypePer hourPer 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.

Check it yourself

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

How to remove one safely

  1. Check DNS first. If a DNS record points at the load balancer, point it somewhere else and wait for the change to take effect. AWS says to wait at least the record's TTL for a CNAME, and at least 60 seconds for a Route 53 alias record.
  2. Check deletion protection. You can't delete a load balancer while it's turned on.
  3. Delete it. EC2 console → Load Balancers → select it → Actions → Delete load balancer. Or with the CLI (this one changes your account): aws elbv2 delete-load-balancer --load-balancer-arn ARN. Charges stop as soon as it's deleted.
  4. Clean up what's left. Deleting a load balancer doesn't touch its targets: instances keep running and stay registered to their target groups. Delete unused target groups, and check whether the instances behind it are still needed. The idle EC2 guide covers how.

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.

Run a free checkup

Sources

Prices are AWS on-demand list prices for US East (N. Virginia), checked October 3, 2026. Other regions differ.