Diagnostics — 8 min read
Is my AWS bill too high?
Two companies the same size can differ fivefold, legitimately. So stop comparing, and look for symptoms instead.
It's the question that sends people looking, and the honest answer is unsatisfying: there is no industry figure for what a company your size "should" be spending on AWS. Two companies with identical headcount and revenue can differ by five times, legitimately, because one processes video and the other serves forms.
So comparisons don't work. Symptoms do.
The five checks
Work through these on your own account. Each takes a few minutes and needs nothing but Cost Explorer and the console.
1. Does anyone own the bill?
Not "does someone look at it" — does it appear in a specific person's responsibilities. If the honest answer is "sort of, nobody really", that alone predicts waste better than any other signal.
Industry data puts average cloud waste around 27–29%, and 35–40% at organisations without a dedicated FinOps practice. That second number is the one that applies to almost every company under 100 people.
2. Is the bill growing faster than the business?
Pull twelve months in Cost Explorer, monthly granularity. Then compare the shape against your own growth — customers, revenue, traffic, whatever you steer by.
Infrastructure that grows with usage is working as intended. Infrastructure that grows while usage is flat is accumulating, and accumulation is almost always waste rather than capacity.
A step change with no matching business event is worth chasing on its own — that has its own diagnostic.
3. What share is compute, and what share is everything else?
Group by service, last month. In a healthy account, EC2 and RDS dominate and the rest is small.
The signals worth noticing:
EC2 — Otherabove about 12% of the bill. That bucket is EBS, NAT Gateway and inter-AZ transfer — none of which anyone budgets for, all of which grow silently.- CloudWatch above 3%. Almost always log groups set to never expire.
- Data transfer above 6%. Usually services talking across Availability Zones by accident.
None of those are large line items anyone chose. They're the residue of decisions nobody made.
4. Is anything running that nobody uses?
Three console checks, five minutes:
- EC2 → instances with sustained CPU under 10%
- RDS → instances with zero connections for weeks
- EC2 → Volumes filtered to state
available— every one of those is billed at full price, attached to nothing
If any of those lists is non-empty, you already have your answer.
5. Is everything paying full price?
Look for a SavingsPlanCoveredUsage or ReservedInstance line in Cost Explorer.
If there isn't one, every steady, always-on workload is being billed at the most
expensive rate AWS offers.
And if there is one, check what it covers — Savings Plans don't cover RDS, which catches out more teams than any other detail in AWS pricing.
Scoring it honestly
Decide
How many of the five were true?
If you scored zero and the bill still feels wrong, the cause is usually architectural rather than configurational — something is expensive because of how it was built, not how it was provisioned. That's a different and much larger piece of work.
The one number that is worth knowing
Not a benchmark — a ratio, and only useful against yourself over time: what you spend per unit of the thing your business actually does. Cost per customer, per order, per thousand requests, whatever fits.
Track it monthly. If total spend rises while cost-per-unit falls, you're growing and your infrastructure is getting more efficient. If cost-per-unit rises, the bill is drifting regardless of what the total says.
That single line tells you more than any comparison to a company you don't run.
Before you do anything expensive about it
Set an AWS Budget alert at a threshold you'd genuinely want to know about, and turn on Cost Anomaly Detection. Both are free, both take five minutes, and between them they mean you find out about the next surprise in days rather than at month end.
Then work the cost checklist in order — it's arranged by payback speed, so the cheap reversible things come first and the commitments come last.
If you'd rather see which of these apply to your account before spending the week, the free teardown reads a Cost Explorer export in your browser and flags the patterns in about two seconds. Nothing is uploaded and there's no signup — and if it turns out your bill is fine, it will tell you that too.
Check your own account
Does this apply to you? Find out in two seconds.
Drop a Cost Explorer export into the free teardown. It reads your service mix and tells you which of these patterns show up in your bill — in your browser, with no upload and no email.