CostMonStart free

Calculator

The AWS Bill Analyzer

Drop your AWS bill in. It never leaves this browser. See where the money goes, what changed since last period, which line items are known waste traps, and what the run-rate projects to. All of it runs client-side.

Last updated

This is a static site with no backend to upload to. Parsing, analysis, and rendering all happen in your browser's JavaScript. Check the Network tab while you drop a file in, and you'll see nothing sent anywhere.

This result stays only in this browser tab. It carries over to the dashboard view, and it survives a reload. Closing the tab deletes it. Copy it as Markdown or download it if you want to keep it longer.

Free tool

Drop your bill in and see it for yourself

Works best with an AWS Cost Explorer "Download CSV" export — the parser auto-detects a few other shapes too. Everything below computes in your browser; nothing you drop in is sent anywhere.

.csv files only — parsed entirely in your browser

No file loaded yet

Drop your own AWS Cost Explorer CSV in above, or see what the tool does with a realistic illustrative bill first.

CostMon gives every new account a rule that reads each service in your bill as its own series.

This is a static site with no backend to upload to — parsing and analysis run entirely in your browser's JavaScript. Check the Network tab while you use this tool and you'll see nothing sent anywhere.

How to get your CSV

The Analyzer is built around AWS Cost Explorer's own "Download CSV" export — here's exactly how to get one.

  1. Open Cost Explorer. In the AWS Billing console, open Cost Explorer (Cost Management → Cost Explorer). Set the date range to whatever window you want analyzed. A month-over-month comparison needs at least two full periods.
  2. Group by "Service" or "Usage type". Set "Group by" to Service for a broad view, or Usage type for line-item-level detail. Either works, and the Analyzer auto-detects which one you used.
  3. Click "Download CSV". Use the Download CSV button above the chart. Cost Explorer's own export documents itself as transposed: columns are cost, rows are time. That's the shape this tool auto-detects first.
  4. Drop the file in below. Drag the downloaded CSV onto the drop zone below, or click it to browse. Nothing is uploaded anywhere; open your browser's Network tab and watch for yourself.

What we look for

Every finding traces to one of two catalogs — known AWS line items that commonly waste money, and shape-based patterns computed from your own numbers. Nothing here is a guaranteed saving; it's what to check next.

Known line items (13)

  • NAT gateway data processing — You are being charged per gigabyte for every byte that passes through your NAT gateway, on top of its flat hourly uptime charge and on top of any standard data-transfer charge the traffic would incur anyway.
  • Internet data transfer out — You are being charged per gigabyte for data leaving an AWS region to the public internet.
  • Inter-region data transfer — You are being charged for data sent from one AWS region (here, us-east-1) to a different AWS region (here, us-west-2).
  • Cross-AZ (regional) data transfer — You are being charged for data moving between Availability Zones within the same AWS region. It's billed on both the sending and the receiving side.
  • Public IPv4 address charge — You are being charged hourly for every public IPv4 address you hold, whether it's actively attached and serving traffic, or allocated but unattached and idle.
  • EBS General Purpose SSD storage (gp2/gp3) — Billing for the provisioned capacity (GB-month) of General Purpose SSD EBS volumes: gp2 or its newer, usually cheaper sibling gp3.
  • EBS snapshot storage — GB-month charge for EBS snapshots in the Standard tier, billed incrementally on the changed blocks each snapshot stores.
  • CloudWatch Logs ingestion — Charges for every byte of log data your applications, agents, or functions push into CloudWatch Logs.
  • CloudWatch custom metrics — The per-metric-per-month charge for every unique custom metric (and dimension combination) published to CloudWatch, whether from your own application, embedded metric format logs, or detailed instance monitoring.
  • S3 request charges (PUT/COPY/POST/LIST and GET) — Per-request API charges, billed per thousand requests: Tier1 covers PUT, COPY, POST, and LIST calls; a separate Tier2 line covers GET and most other read requests.
  • S3 Glacier early-deletion charge — A prorated penalty charged when an object archived to S3 Glacier Flexible Retrieval is deleted, overwritten, or transitioned before its 90-day minimum storage commitment ends (parallel early-delete charges exist for the Instant Retrieval and Deep Archive classes).
  • RDS Multi-AZ instance hours — The hourly compute charge for a Multi-AZ RDS deployment, which bills for both the primary instance and its synchronous standby replica in another Availability Zone.
  • Load balancer hourly usage and LCU charge — You are being charged an hourly rate for each load balancer provisioned, plus a rate per Load Balancer Capacity Unit (LCU) consumed. LCUs are driven by whichever dimension (new connections, active connections, processed bytes, or rule evaluations) is highest that hour, not by a simple sum.

Shape-based patterns (5)

  • One line item dominates the bill. That's not automatically a problem: a dominant compute or database line is normal for many stacks. But it's the single highest-leverage place to look first, since a small percentage change there moves more dollars than anywhere else on the bill.
  • A line item spiked hard since last period. A sudden, large jump usually traces to a specific, findable cause, not gradual organic growth. Common culprits: a new feature, a config left in debug mode, a scaling event that never scaled back down, or a traffic/bot spike.
  • A new line item appeared that wasn't there last period. A brand-new charge is worth a quick sanity check even when it's expected (a new feature, a new environment). It's the easiest place to catch a misconfiguration before it compounds over several billing periods.
  • The total has risen every period in this file. Consistent growth across every period, rather than one spike, usually means the underlying driver is itself growing: traffic, data volume, or headcount using a tool. That's worth confirming is expected before it becomes a much bigger number a few months from now.
  • Many small line items add up to a meaningful share. No single one of these is worth chasing on its own. But a long tail of small charges can collectively add up to a real, recoverable amount: services turned on for a one-off task and never turned off, or redundant small resources.

FAQ

Common questions about the AWS Bill Analyzer

Is my bill uploaded anywhere?

No. CostMon's marketing site is a static build with no backend to upload to. The CSV you drop in is parsed and analyzed entirely in your browser's JavaScript. Open your browser's Network tab while you use the tool and you'll see no request carrying your data, because there isn't one.

What file formats does the Analyzer support?

Its primary target is AWS Cost Explorer's own "Download CSV" export, and it auto-detects that shape first. It also handles a console table copied and pasted as CSV, and a long/tidy Cost and Usage Report-style export with a date column, a cost column, and a service/label column. A GCP, Azure, or Anthropic export with that same date/name/cost shape will often work too, as a best-effort secondary. It isn't the primary target and isn't guaranteed.

Why does the Analyzer's total differ from my actual invoice?

Cost Explorer's numbers (what this tool reads) and your final invoice can differ for reasons this tool doesn't model: credits, refunds, tax, currency conversion, and the timing of Reserved Instance or Savings Plan amortization. Treat the Analyzer's total as a read of what Cost Explorer reported for the file you gave it, not a substitute for the invoice itself.

Does this account for credits, Reserved Instances, or tax?

No. It analyzes whatever numbers are in the column you exported (typically unblended or amortized cost) and doesn't separately model credits, RI/Savings Plan amortization schedules, or tax. If your export already nets those in, the Analyzer's totals will reflect that; if not, they won't.

Does it work for GCP, Azure, or Anthropic cost exports?

Often, as a secondary best-effort case. The parser just needs a date column, a cost column, and a name/label column in one of three shapes, which several other providers' exports happen to share. AWS Cost Explorer's own CSV is the one shape this tool is built and tested against, so treat non-AWS results as a bonus, not a guarantee.

What about AI/LLM spend? Does this catch that?

Only if it's billed through your AWS account, like Amazon Bedrock usage, which appears as ordinary line items the same as any other AWS service. A direct Anthropic API subscription, an OpenAI API key on a corporate card, or any other AI vendor invoice paid outside AWS never appears in a Cost Explorer export at all, so this tool can't see it. CostMon's own product normalizes AWS, Anthropic, and SaaS spend into one view specifically because no single provider's export can.

What if nothing on my bill trips a rule?

The Analyzer says so plainly and lists what it checked, instead of manufacturing a finding to look useful. A clean result is a real, useful result. It means nothing in this file matched a known waste pattern or a shape-based flag at the current thresholds.

What does CostMon do that this tool doesn't?

This tool reads one CSV, once, when you remember to export it. CostMon connects to AWS, Anthropic, and your SaaS tools with read-only credentials and does this same kind of analysis continuously. It normalizes every bill into one view, tracks trends day over day, and alerts you before a spike like the ones this tool flags becomes a surprise on the invoice.

A bill read by hand goes stale tomorrow.

Reading one export line by line takes real work. CostMon reads the next one for you, every day, for every provider you connect.

Esc