Free tool · no signup
What are you not reserving?
Paste what's running and what's already reserved, and get back your real coverage percentage, the uncovered capacity, the idle reservations already costing you money, and what closing the gap is worth per year. It's priced from real AWS data, not a blended guess. Nothing leaves your browser.
Output of describe-instances, describe-db-instances,describe-cache-clusters, and each service's describe-reserved-*, in any order, as many documents as you like.
Nothing you paste leaves this browser. No localStorage, no analytics. Analyze fetches one small, public price list from this site. That request carries no trace of your paste. It runs once, and every later analysis reuses the cached copy. Open DevTools' Network tab and check. More onwhat we collect.
Showing the sample fleet above. Paste your own and hit Analyze to replace it.
1 EC2 regional reservation didn't carry a region in the API response — matched fleet-wide, which can overstate coverage if you run the same family in more than one region. Add a "# region: <name>" line above that command's output to pin it.
Coverage map
By service, region & family
| Service | Region | Family | Running | Reserved | Coverage |
|---|---|---|---|---|---|
| RDS | us-east-1 | r6g | 12 | 8 | 67% |
| EC2 | us-east-1 | m5 | 8 | 4 | 50% |
| EC2 | us-west-2 | r6g | 8 | 0 | 0% |
| ElastiCache | us-west-2 | r6g | 8 | 4 | 50% |
| EC2 | us-east-1 | m6i | 4 | 0 | 0% |
| RDS | us-east-1 | m5 | 4 | 0 | 0% |
| EC2 | region unknown | t4g | 0 | 4 | 0% |
| ElastiCache | us-east-1 | m6g | 0 | 4 | 0% |
What Reserver would tell you to buy
| Class | Buy | Term · payment | $/yr saved | Upfront | Break-even |
|---|---|---|---|---|---|
| r6g.xlargeEC2 · us-west-2 | 1 reservation | 1yr · All Upfront | $728/yr | $1,038 | 7 mo |
| r6g.xlargeEC2 · us-west-2 | 1 reservation | 3yr · All Upfront | $1,102/yr | $1,992 | 14 mo |
| m5.largeEC2 · us-east-1 | 1 reservation | 1yr · All Upfront | $347/yr | $494 | 7 mo |
| m5.largeEC2 · us-east-1 | 1 reservation | 3yr · All Upfront | $525/yr | $949 | 14 mo |
| cache.r6g.largeElastiCache · us-west-2 | 1 reservation | 1yr · All Upfront | $659/yr | $1,146 | 8 mo |
| cache.r6g.largeElastiCache · us-west-2 | 1 reservation | 3yr · All Upfront | $993/yr | $2,434 | 16 mo |
| db.r6g.largeRDS · us-east-1 · Multi-AZ | 4 units | 1yr · All Upfront | $869/yr | $1,014 | 6 mo |
| db.r6g.largeRDS · us-east-1 · Multi-AZ | 4 units | 3yr · All Upfront | $1,201/yr | $2,047 | 13 mo |
8 uncovered units are outside the RI Price Library's priceable surface (non-Linux EC2, dedicated tenancy, SQL Server/Oracle, memcached, an untracked type or region) — counted above, never priced. 1 row covers less than one whole reservation — an instance your existing reservations already partly cover. Those are quoted per normalized unit, so the saving, upfront and break-even all describe the same fraction of a reservation.
Idle reservations
| Reservation | Region | Idle units | Wasted $/yr |
|---|---|---|---|
| t4g.large | region unknown | 4 | $263 |
| cache.m6g.large | us-east-1 | 4 | $500 |
What this can't see
- Utilization. A covered instance can still be badly oversized for its actual load.
- AWS Savings Plans, which aren't Reserved Instances and aren't covered by this tool or Reserver's coverage math.
- RDS storage and IO cost. Only the compute instance-hour is reserved.
- A one-time snapshot. Reserver connects once and scans continuously instead.
- Anything outside the RI Price Library's 92 tracked types × 16 regions. Those gaps are counted, never priced.
- 1 EC2 regional reservation didn't carry a region in the API response — matched fleet-wide, which can overstate coverage if you run the same family in more than one region. Add a "# region: <name>" line above that command's output to pin it.
That's our sample fleet
Paste your own running instances and reservations above — this card becomes your real numbers, sized to your own fleet.
That fits Watch on Reserver.
Join the waitlistCarries only the totals shown above — never reservation IDs, ARNs, or account details. Nothing leaves your browser until you submit.
Need to justify this internally? Build a business case →
That coverage % is only one of three levers. Discount depth and utilization move it just as much. See how all three combine into Effective Savings Rate, the FinOps industry's standard number for what a reservation actually saved.
How to get the numbers
Six commands. Any account, any region.
Each command needs only read access to describe resources and reservations, the same Describe/List scope Reserver's own read-only role uses.
What's running
aws ec2 describe-instances --region us-east-1
aws rds describe-db-instances --region us-east-1
aws elasticache describe-cache-clusters --region us-east-1
What's already reserved
aws ec2 describe-reserved-instances --region us-east-1
aws rds describe-reserved-db-instances --region us-east-1
aws elasticache describe-reserved-cache-nodes --region us-east-1
Add --profile your-profile for a named credential profile, and repeat--region for every region you run in.
Many accounts at once
This is the enterprise path. Loop all six commands over every profile and region, then paste the whole run. The echo lines pin each block's region and profile, and the tool honours them. That matters most for EC2 regional Reserved Instances (see the FAQ below).
for profile in prod-us prod-eu staging; do
for region in us-east-1 us-west-2 eu-west-1; do
echo "# profile: $profile"
echo "# region: $region"
aws ec2 describe-instances --profile "$profile" --region "$region"
aws rds describe-db-instances --profile "$profile" --region "$region"
aws elasticache describe-cache-clusters --profile "$profile" --region "$region"
aws ec2 describe-reserved-instances --profile "$profile" --region "$region"
aws rds describe-reserved-db-instances --profile "$profile" --region "$region"
aws elasticache describe-reserved-cache-nodes --profile "$profile" --region "$region"
done
doneThe other half of the story
Two tools, one fleet.
The Expiry Check answers "don't lose the discount you already bought." It reads what you've reserved and tells you exactly when it lapses. This tool answers the other half: "reserve the capacity you never reserved." Run both against the same paste; together they're the two numbers Reserver's own coverage scan produces continuously.
Coverage check, answered
Questions about the tool.
Does anything get uploaded when I paste my fleet and reservations?
No. Parsing, matching, and pricing all run entirely in your browser, and nothing is written to localStorage or the URL. Clicking Analyze pulls down a small, public price list from this site. That happens once: the browser caches it, and the request carries nothing from your paste. Open DevTools' Network tab and watch for yourself.
How is this different from the Expiry Check?
The Expiry Check reads only what you've already reserved and tells you when it lapses. This tool reads what's actually RUNNING too, and matches it against what you own, so it can show you the capacity you never reserved in the first place, something the Expiry Check can't see at all.
Why doesn't every uncovered instance get a dollar figure?
This tool prices gaps against the same AWS Price List data behind the RI Price Library: 92 instance types across 16 regions, RDS PostgreSQL/MySQL, ElastiCache Redis/Valkey, and EC2 Linux. A gap outside that surface (Windows, SQL Server, Oracle, an untracked type or region) is still counted in coverage, with exact math, but never assigned an estimated price. The unpriced count is always shown so it reconciles against your paste.
My EC2 Reserved Instances are regional. Why does a region matter?
AWS's own describe-reserved-instances response carries no region field for regional-scope RIs, only zonal ones. Add a # region: <name> comment line above that command's output in your paste (the documented loop below does this automatically) and this tool will pin it to that region. Without one, it's matched fleet-wide as a last resort, which can overstate coverage if you run the same instance family in more than one region. It tells you exactly how many reservations that applied to.
I ran the loop across dozens of accounts and regions. Did it work?
Yes. Paste as many aws ... describe-... outputs one after another as you like, mixing running and reserved documents, services, and regions, in any order. The tool scans for each top-level JSON document (and any # region: / # profile: marker lines) and aggregates everything it recognizes into one coverage picture.
What can't this tool see that Reserver's real scan can?
Utilization (a covered instance can still be oversized), Savings Plans overlap, RDS storage and IO cost, and anything outside the priceable surface above. It's also a one-shot manual snapshot. Reserver connects once and scans continuously, matching reservations to what's running as your fleet changes.
More free tools
Expiry Check
Your real renewal calendar. Right now.
Try it →Savings calculator
What Reserved Instances are worth to you.
Try it →Renewal exposure
What a missed renewal costs your whole fleet.
Try it →Business case builder
Something to send to whoever signs.
Try it →Size flexibility calculator
One reservation of this size covers what, exactly?
Try it →Term Check
One year or three? Upfront, or not?
Try it →Stop overpaying for a steady fleet.
Reserver is in early access. Join the list and we'll onboard you as capacity opens up. Your first recommendation lands within minutes of connecting.