Home › Decoder › Why is my AWS bill so high? Check these 8 line items first

Why is my AWS bill so high? Check these 8 line items first

On small-team AWS accounts the surprise is rarely the servers. It is the lines around them: per-GB network charges, hourly fees for things that exist but do nothing, and storage nobody expires. Open Cost Explorer, group by Usage type, and look for these eight names in this order. Each has a one-line test and a page with the price, the causes and the fix steps.

All prices are US East (N. Virginia) list prices checked on 2026-11-04; other regions differ.

See a sample result

The checks, in order

  1. NatGateway-Bytes

    $0.045 per GB through the gateway, on top of normal transfer. Cost Explorer > Usage type contains NatGateway-Bytes. If it is a large line, find out how much of that traffic goes to S3 or DynamoDB: a gateway endpoint for those two has no additional charge.

    Decoder: NatGateway-Bytes: the NAT Gateway data-processing line

  2. NatGateway-Hours

    $0.045 per hour = $32.85 per gateway per month before any data. Count NAT gateways (VPC console > NAT gateways). One per AZ per environment adds up; check each is routed to by a private subnet.

    Decoder: NatGateway-Hours: the fixed monthly cost of each NAT gateway

  3. DataTransfer-Regional-Bytes

    $0.01 per GB in each direction between AZs. Usage type DataTransfer-Regional-Bytes in the daily view; a steady line that scales with traffic points at chatty cross-AZ services, replicas or a shared NAT.

    Decoder: DataTransfer-Regional-Bytes: cross-AZ traffic on your bill

  4. PublicIPv4:InUseAddress and IdleAddress

    $0.005 per address-hour = $3.65 per month each, in use or idle. VPC console > Elastic IPs for unattached ones; count public IPs on load balancers, NAT gateways and instances that do not need one.

    Decoder: PublicIPv4:InUseAddress and IdleAddress: the public IP address charge

  5. CloudWatch Logs DataProcessing-Bytes

    $0.50 per GB ingested (Standard class). CloudWatch > Log groups sorted by stored bytes; then IncomingBytes per group. Look for debug logging left on and retry loops.

    Decoder: CloudWatch Logs DataProcessing-Bytes: the log ingestion line

  6. LoadBalancerUsage and LCUUsage

    $0.0225 per ALB-hour = about $16.43 per month each, plus $0.008 per LCU-hour. EC2 > Load Balancers; check RequestCount for each over 14 days. A load balancer with no traffic still bills hourly.

    Decoder: LoadBalancerUsage and LCUUsage: what an ALB costs

  7. EBS:VolumeUsage.gp2 and unattached volumes

    gp2 $0.10 vs gp3 $0.08 per GB-month. EC2 > Volumes filtered to gp2 and to state Available (unattached).

    Decoder: EBS:VolumeUsage.gp2 - the gp2 volume line, and the cheaper gp3

  8. S3 TimedStorage-ByteHrs and DataTransfer-Out-Bytes

    S3 Standard $0.023 per GB-month; internet egress $0.09 per GB after the first 100 GB. S3 Storage Lens by bucket for the largest and oldest data; Cost Explorer by Service for who sends bytes to the internet.

    Decoder: TimedStorage-ByteHrs: the S3 Standard storage line

Checklist

  1. Cost Explorer > Group by: Usage type; date range: last full month and the month before. Note any line that moved by more than 20%.
  2. Switch to Daily granularity to see whether the increase is a step (a change shipped on one day) or a slope (growth).
  3. Group by Service for the top two services, then by Usage type inside each.
  4. In the CUR or the Resource ID view (if enabled), find the resource behind the largest unfamiliar line.
  5. Before you change anything, check the metric that proves the cause (traffic, requests, connections). Suggestions here are starting points; you know your setup and we cannot see it.
  6. Change one thing at a time and watch the daily line for three days.

Skip the hunt: drop in your bill export

Upload a Cost Explorer or CUR CSV. Billtrim reads it in your browser, ranks these lines for your account with the dollars each is worth, and gives the console and CLI steps.

See a sample result

Paste your export: how to export a Cost Explorer CSV or CUR file in two minutes.

Questions people ask

Why did my bill go up when traffic did not?

Fixed hourly charges (NAT gateways, load balancers, public IPv4 addresses) and cumulative storage grow with the number of things you have created, not with traffic.

Where do I see the breakdown by line item?

Billing and Cost Management > Cost Explorer > Group by Usage type. For per-resource detail enable the Cost and Usage Report with resource IDs.

Is the first 100 GB of data transfer free?

AWS documents the first 100 GB per month of data transfer out to the internet as free, aggregated across services.

Related