Free tool · no signup
Your real renewal calendar. Right now.
Paste the output of one AWS CLI command and get back exact expiry dates, what a lapse costs per hour, per day and per year, and a full renewal calendar, priced from your own committed rates. Nothing leaves your browser.
Output of aws ec2 describe-reserved-instances,aws rds describe-reserved-db-instances, oraws elasticache describe-reserved-cache-nodes. Paste a full response, a bare array, or several pasted one after another.
Defaults to Reserver's blended discount model, the same assumption behind thesavings calculator. Drag to match your own rates.
Nothing you paste leaves this browser. No network request, nolocalStorage, no analytics. Open DevTools' Network tab and watch it stay empty while you analyze. Disconnect your network; it still works. The calendar and CSV files below are built the same way and saved straight to your disk, still zero requests. More on what we collect.
Showing the sample fleet above. Paste your own and hit Analyze to replace it.
Next 12 months
- Sep 20261$543
- Oct 20262$3,086
- Nov 20261$355
- Dec 20260—
- Jan 20271$620
- Feb 20271no price
- Mar 20270—
- Apr 20271$700
- May 20271$659
- Jun 20270—
- Jul 20271$1,489
- Aug 20271$1,600
Oct 2026 carries the most committed spend in this calendar: $3,086, 34% of the next 12 months. The heaviest rolling quarter, Sep 2026 through Nov 2026, carries 44%.
This calendar covers only the next 12 months. A longer term ending later is not in it. Read the renewal ladder guide
Soonest expiries
| Reservation | Region | Ends | Days left | Annual cost | Lapse cost / day | Lapse cost / yr |
|---|---|---|---|---|---|---|
| m5.largeEC2 · ri-2f8a1c0e | us-east-1 | Sep 24, 2026 | 9 days left | $543 | $1.22 | $444 |
| cache.r6g.largeElastiCache · ri-ec-2d4b91 ×2 | us-west-2 | Oct 8, 2026 | 23 days left | $2,000 | $4.48 | $1,636 |
| m5.xlargeEC2 · ri-6b3d9a41 | us-east-1 | Oct 30, 2026 | 45 days left | $1,086 | $2.43 | $889 |
| db.t3.mediumRDS · ri-rds-8e21f4 | us-west-2 | Nov 29, 2026 | 75 days left | $355 | $0.80 | $291 |
| c5.largeEC2 · ri-91e7c2ab ×3 | us-east-1 | Jan 13, 2027 | 120 days left | $620 | $1.39 | $507 |
| db.r6g.largeRDS · ri-rds-b70d52 | us-east-1 | Feb 22, 2027 | 160 days left | no price in payload | — | — |
| cache.m6g.largeElastiCache · ri-ec-97a0c3 | us-west-2 | Apr 3, 2027 | 200 days left | $700 | $1.57 | $573 |
| r5.largeEC2 · ri-04a8f7d3 | us-east-1 | May 23, 2027 | 250 days left | $659 | $1.48 | $539 |
| db.m6g.largeRDS · ri-rds-1f6a8c | us-east-1 | Jul 12, 2027 | 300 days left | $1,489 | $3.34 | $1,218 |
| m5.2xlargeEC2 · ri-7c1b5e90 | us-west-2 | Aug 31, 2027 | 350 days left | $1,600 | $3.59 | $1,309 |
| cache.r6g.xlargeElastiCache · ri-ec-5e8f14 | us-east-1 | Oct 20, 2027 | 400 days left | $1,988 | $4.46 | $1,627 |
By service & region
| Service | Region | Reservations | Units | Annual cost |
|---|---|---|---|---|
| EC2 | us-east-1 | 5 | 7 | $3,452 |
| ElastiCache | us-west-2 | 2 | 3 | $2,700 |
| ElastiCache | us-east-1 | 1 | 1 | $1,988 |
| EC2 | us-west-2 | 1 | 1 | $1,600 |
| RDS | us-east-1 | 2 | 2 | $1,489 · 1 unpriced |
| RDS | us-west-2 | 1 | 1 | $355 |
Take it with you
12 reservations · 39 reminders · built in your browser, nothing uploaded
A calendar reminder is a floor, not a system. It can't tell you the instance was resized, already covered, or that the person who owns the reminder left. Reserver watches the fleet, not the calendar.Join the waitlist ·Read the renewal playbook
That's our sample fleet
Paste your own reservations above — this card becomes your real numbers, sized to your own fleet.
That fits Autopilot 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 →
How to get the numbers
Three commands. Any account, any region.
Each command needs only read access to describe reservations: the same Describe/List scope Reserver's own read-only role uses.
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. Reserved Instances are always regional or zonal, never global.
Many accounts at once
This is the enterprise path: loop the three commands over every profile and region, and paste the whole run. The tool scans for each JSON document in the paste and aggregates everything it finds into one calendar.
for profile in prod-us prod-eu staging; do
for region in us-east-1 us-west-2 eu-west-1; do
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
doneWhat the fields mean
A short glossary of what's in the payload.
- FixedPrice
- The upfront amount paid for the term (0 for No Upfront).
- RecurringCharges / UsagePrice
- The hourly rate billed on top of the upfront amount, whether or not the instance runs.
- Duration
- The term length in seconds: 31,536,000 for 1 year, 94,608,000 for 3 years.
- OfferingType
- The payment option: All Upfront, Partial Upfront, or No Upfront.
- State
- Whether the reservation is active, retired (its term ended), payment-pending, or payment-failed.
More definitions in the glossary, and the full story on why renewals slip in the renewal playbook.
What this can't do
An honest limit: this is a snapshot, not a watch.
This tool reads exactly what you paste, once. It's a manual pull, one account and region at a time, of reservations you already own. It can't see running capacity that was never reserved, and nobody re-runs it for you the day a date arrives. Reserver closes that gap: a read-only connection that scans continuously, matches reservations to what's actually running, and warns you before a renewal is due.
Expiry check, answered
Questions about the tool.
Does anything get uploaded when I paste my reservations?
No. Parsing and analysis both run entirely in your browser. There's no fetch, no beacon, no analytics call, and nothing is written to localStorage or the URL. Open DevTools' Network tab before you paste: it stays empty through the whole analysis.
Why do RDS and ElastiCache show different end-date math than EC2?
AWS's own describe-reserved-instances response for EC2 includes an explicit End field. The RDS and ElastiCache equivalents don't. Their end date is StartTime plus Duration in seconds, which is exactly how this tool derives it. All three are the same underlying commitment; only the field names differ.
I ran the loop across a dozen accounts and pasted it all at once. Did it work?
Yes. Paste as many aws ... describe-... outputs one after another as you like, in any order, mixing services and regions. The tool scans for each top-level JSON document and aggregates everything it recognizes into one calendar.
This only shows what I already own. What am I missing?
Exactly what it can't do: it's a manual snapshot, one paste at a time, of reservations you already have. It doesn't see the running capacity you never reserved. For that half of the story, paste the same reservations alongside what's actually running into the Coverage Check. It'll show you the gap and price it. Reserver itself goes further still: it connects once, scans continuously, and tells you what to buy next as well as what's expiring.
My paste includes retired reservations. Are they counted?
No. The tool reads each reservation's own State field and excludes anything that isn't active (retired, retired-pending, payment-failed, or payment-pending) from committed annual spend, the exposure figures, the calendar, and the service & region table. It still tells you how many were excluded, so the count always reconciles against what you pasted. The "bleeding $/day" figure is further limited to lapses within the last 90 days, since an older lapse has almost certainly already been resolved. If you'd rather trim the paste yourself first, EC2, RDS, and ElastiCache's describe-reserved-* commands all accept --filters Name=state,Values=active, though it isn't required, since the tool handles unfiltered output correctly on its own.
Does the calendar file upload anything?
No. The .ics and CSV are both built in the page from what you pasted, then saved straight to your disk. Same zero-request guarantee as the rest of the tool.
Will re-downloading duplicate every event in my calendar?
No. Each event's UID is derived from the reservation and its end date, not the download time, so re-importing an updated file updates matching events instead of duplicating them. The file is standard RFC 5545, so Google Calendar, Outlook and Apple Calendar all handle the update the same way.
More free tools
Coverage Check
What are you not reserving?
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.