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. This is 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. One lists known AWS line items that commonly waste money. The other lists 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
    A per-gigabyte charge for every byte that passes through your NAT gateway. It adds to the flat hourly uptime charge. It also adds to any standard data-transfer charge that the traffic would incur anyway.
  • Internet data transfer out
    A per-gigabyte charge for data that leaves an AWS region for the public internet.
  • Inter-region data transfer
    A charge 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
    A charge for data that moves between Availability Zones in the same AWS region. AWS bills both the sending side and the receiving side.
  • Public IPv4 address charge
    An hourly charge for every public IPv4 address you hold. The charge applies if the address serves traffic. It also applies if the address is allocated but idle.
  • EBS General Purpose SSD storage (gp2/gp3)
    Billing for the provisioned capacity (GB-month) of General Purpose SSD EBS volumes. The types are gp2 and 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. The source can be 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 for an object in S3 Glacier Flexible Retrieval that you delete, overwrite, or transition before its 90-day minimum storage commitment ends. The Instant Retrieval and Deep Archive classes have parallel early-delete charges.
  • RDS Multi-AZ instance hours
    The hourly compute charge for a Multi-AZ RDS deployment. It bills the primary instance and its synchronous standby replica in another Availability Zone.
  • Load balancer hourly usage and LCU charge
    An hourly rate per load balancer, plus a rate per Load Balancer Capacity Unit (LCU) used. The highest dimension in that hour sets the LCUs. The dimensions are new connections, active connections, processed bytes, and rule evaluations. The LCU count is not 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 add up to a real, recoverable amount. Look for services turned on for a one-off task and never turned off. Look for redundant small resources too.

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. It handles a long/tidy Cost and Usage Report-style export too, 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. This tool does not model the causes: 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 the numbers in the column you exported, typically unblended or amortized cost. It does not 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 needs a date column, a cost column, and a name/label column in one of three shapes. Several other providers' exports share these shapes. The tool is built and tested against AWS Cost Explorer's own CSV. Treat non-AWS results as a bonus. They are 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 never appears in a Cost Explorer export. Neither does an OpenAI API key on a corporate card, or any other AI vendor invoice paid outside AWS. This tool cannot see them. 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 and tracks trends day over day. It alerts you early, before a spike like the ones this tool flags reaches 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