AWS Cost Explorer
AWS Cost Explorer is a free, built-in tool that turns your raw billing data into charts and tables you can actually understand. Instead of staring at a giant invoice, you can ask questions like “which service cost me the most last month?” or “how much will I spend next month if nothing changes?” and get a clear visual answer. It is the first place most teams look when a bill is bigger than expected, and the place AWS surfaces money-saving recommendations. This page explains how to read those charts, forecast spend, hunt down cost spikes, and act on rightsizing and savings recommendations.
What Cost Explorer does
Cost Explorer reads your cost and usage data and lets you group, filter, and chart it over time. You can slice spending by service (for example EC2, S3, RDS), by linked account (useful in AWS Organizations, the feature that groups many accounts under one payer), by Region, or by cost allocation tag (a label like Team=payments you attach to resources). It also draws a forecast line that predicts future spend based on your recent history.
The first time anyone opens Cost Explorer, AWS takes up to 24 hours to prepare the data. After that it is always available.
Gotcha — Cost Explorer is not real-time. Cost data lags by up to ~24 hours. A spike you caused 10 minutes ago will NOT appear yet. For fast alerting (within hours), use AWS Budgets instead. Cost Explorer is for analysis after the fact, not live monitoring.
When to use this (and when not to)
| Tool | Best for | Speed |
|---|---|---|
| Cost Explorer | Visual trend analysis, forecasting, finding which service/tag drove a change | Lags ~24 hours |
| AWS Budgets | Alerts when spend crosses a threshold | Hours |
| Cost and Usage Report (CUR) | Deep, line-item analysis in your own database/BI tool | Daily file delivery |
Use Cost Explorer when you want a quick, interactive picture of where money goes. Do not rely on it to catch a runaway resource in real time, and do not use it for per-resource forensic billing that needs every line item — that is what the CUR is for.
Finding a cost spike
Say your bill jumped this month and you want to know why. The fastest path is to chart daily costs grouped by service, then drill into the spike.
Console steps:
- Open the AWS Billing console and choose Cost Explorer in the left menu.
- Set Date Range to the last 1-2 months and Granularity to Daily.
- Under Group by, choose Service. The chart now shows a stacked bar per day, colored by service.
- Find the tall bar (the spike day) and note which color grew — that is the service responsible.
- Set Group by to Usage Type and add a Filter for that one service to see exactly what grew (for example
BoxUsage:m5.xlargefor EC2 hours).
CLI equivalent — the same data using the Cost Explorer API. This pulls daily cost grouped by service for May 2026:
aws ce get-cost-and-usage \
--time-period Start=2026-05-01,End=2026-06-01 \
--granularity DAILY \
--metrics "UnblendedCost" \
--group-by Type=DIMENSION,Key=SERVICE
Output:
{
"ResultsByTime": [
{
"TimePeriod": { "Start": "2026-05-14", "End": "2026-05-15" },
"Groups": [
{
"Keys": ["Amazon Elastic Compute Cloud - Compute"],
"Metrics": { "UnblendedCost": { "Amount": "412.66", "Unit": "USD" } }
},
{
"Keys": ["Amazon Simple Storage Service"],
"Metrics": { "UnblendedCost": { "Amount": "38.10", "Unit": "USD" } }
}
]
}
]
}
Tip: “Unblended” cost is the actual rate you paid for each line item. “Blended” cost averages rates across an Organization. For finding spikes, always use
UnblendedCost.
Forecasting future spend
A forecast estimates what you will spend over a future window based on recent usage. It is a prediction, not a guarantee — a new launch or a deleted resource will throw it off.
Console: in Cost Explorer, extend the Date Range end date into the future (for example to month end). A dotted forecast line and a confidence band appear.
CLI — forecast total cost for the rest of June 2026:
aws ce get-cost-forecast \
--time-period Start=2026-06-16,End=2026-07-01 \
--metric UNBLENDED_COST \
--granularity MONTHLY
Output:
{
"Total": { "Amount": "1284.55", "Unit": "USD" },
"ForecastResultsByTime": [
{
"TimePeriod": { "Start": "2026-06-16", "End": "2026-07-01" },
"MeanValue": "1284.55",
"PredictionIntervalLowerBound": "1190.20",
"PredictionIntervalUpperBound": "1378.90"
}
]
}
The “No tag key” problem
When you group by a cost allocation tag, any spend on resources that do not carry that tag is bucketed under No tag key:
A large “No tag key” slice means your tagging is incomplete. Track it down, tag those resources, and the slice shrinks as your cost data becomes attributable. See cost allocation tags for how to activate tags so they appear here.
Note: Tags only show up in Cost Explorer after you activate them as cost allocation tags in the Billing console, and only for usage after activation — past costs are not retroactively tagged.
Rightsizing and RI/SP recommendations
Cost Explorer also tells you how to spend less.
- Rightsizing recommendations find EC2 instances that are oversized (low CPU and memory use) and suggest a smaller or modern instance type. Find them under Cost Explorer → Rightsizing recommendations. For deeper analysis across more resource types, see Compute Optimizer.
- Reserved Instance (RI) and Savings Plans (SP) recommendations estimate how much you would save by committing to 1- or 3-year usage instead of paying on-demand. RIs and SPs trade flexibility for a big discount — see Savings Plans and Reserved Instances.
CLI — get rightsizing recommendations for EC2:
aws ce get-rightsizing-recommendation \
--service "AmazonEC2"
CLI — get a Savings Plans purchase recommendation (30-day lookback, 1-year, no upfront):
aws ce get-savings-plans-purchase-recommendation \
--savings-plans-type COMPUTE_SP \
--term-in-years ONE_YEAR \
--payment-option NO_UPFRONT \
--lookback-period-in-days THIRTY_DAYS
Cost note: Cost Explorer itself is free to view in the console. The Cost Explorer API (every get-* call above) costs $0.01 per request, so a script that polls it on a loop can quietly add up — cache results instead of re-querying.
Best practices
- Use Budgets for alerting and Cost Explorer for analysis — never expect Cost Explorer to flag a spike in real time.
- Always group by Service first to find the offender, then by Usage Type to find the exact cause.
- Activate cost allocation tags early and watch the “No tag key” slice shrink toward zero — that is your attribution coverage improving.
- Review rightsizing and RI/SP recommendations monthly; they refresh as your usage changes.
- Prefer Unblended cost for accuracy when chasing a specific charge.
- Cache or batch Cost Explorer API calls to avoid the $0.01-per-request charge stacking up.
- Save common views as Reports in Cost Explorer so the team reuses the same lens instead of rebuilding filters each time.