CloudSaver AI · Blog

How to Read Your AWS Billing CSV and Find Waste in 10 Minutes

The free scanner does the heavy lifting, but it helps to know what's under the hood. Here's how to export your AWS cost data and spot the leaks yourself — in a spreadsheet, no consultant required.

← Back to CloudSaver (free AWS waste scanner)

Step 1 — Export the CSV

Where

Open the AWS Billing ConsoleCost & Usage Reports (or "Bills" → "Download CSV"). AWS lets you download a monthly CSV of every line item. For deeper analysis, create a CUR (Cost & Usage Report) that lands in an S3 bucket — but the monthly bill CSV is enough for a first pass.

Note: the CSV is your own billing data. Keep it local; don't email it to strangers. CloudSaver reads it in your browser and never uploads it.

Step 2 — Know the columns that matter

A raw AWS billing CSV has 20+ columns. You only need a handful to find waste:

ColumnWhat it tells you
ServiceWhich AWS product (EC2, S3, RDS, …). Sort by this to see where the money goes.
UsageTypeThe specific meter — e.g. BoxUsage:t3.micro, EBS:VolumeUsage.gp2. Idle charges show up here.
ResourceIdThe actual resource. Empty ResourceId often = account-level fees you can't attribute.
UnBlendedCost / BlendedCostThe dollar amount. Use UnBlended for a clean per-account view.
UsageQuantityHow much you used. Near-zero usage + non-zero cost = a prime suspect.

Step 3 — Three filters that surface 80% of the waste

Filter A

Idle but billed: UsageQuantity ≈ 0, cost > 0

Filter the CSV for rows where usage is tiny but the cost isn't. Classic hits: unattached EBS volumes (EBS:VolumeUsage with no instance), Elastic IPs with no attachment, and NAT gateways nobody routes through. These are pure leaks.

Typical recovery: 5–15% of a messy bill.

Filter B

Oversized by Service: EC2 cost vs CPU you never use

Sort the CSV by Service = EC2 and sum UnBlendedCost by UsageType. Cross-reference with CloudWatch average CPU (from the cost optimization post). Steady <20% CPU + a big BoxUsage line = downsize candidate.

Typical recovery: 30–60% of that instance's cost.

Filter C

Orphaned by ResourceId: repeating IDs you don't recognize

Pivot the CSV by ResourceId and look for resources that recur monthly but map to nothing you can name. Old RDS snapshots, forgotten load balancers, and test environments left running 24/7 show up here.

Typical recovery: $10–200/month per stale resource, more at scale.

Step 4 — Turn findings into a one-page action list

Once you've filtered, write down three columns: resource, monthly cost, safe action (downsize / delete-after-snapshot / schedule-off). Total the monthly cost — that number is what you're leaking every single month, compounded annually.

This is exactly the format the Pro Audit delivers, founder-reviewed, so you don't have to do the spreadsheet yourself. But doing it once by hand is the fastest way to believe the number.

Skip the spreadsheet

CloudSaver reads the same CSV in your browser and flags these patterns automatically — idle volumes, oversized instances, orphaned resources — in seconds.

Scan my AWS bill free →

Want a founder-reviewed write-up of your specific bill? Email support@getcloudsaver.com.

Frequently asked questions

Is the billing CSV the same as the Cost & Usage Report (CUR)?

The monthly bill CSV is a simplified view; the CUR is the full, row-per-resource dataset AWS can deliver to S3. For a 10-minute audit, the bill CSV is enough. For deep attribution, use the CUR.

Why not just use Cost Explorer?

Cost Explorer is great for charts but hides the per-resource rows that reveal orphans and idle charges. The CSV (or a scanner built on it) shows the actual leaking line items.

Will reading the CSV teach me anything the scanner misses?

No — the scanner finds the same patterns faster. Doing it by hand once just builds the intuition, and makes the scanner's output easier to trust.