1. Paste your instances
2. What it found
Modelled monthly cost per instance
| Instance | Per month |
|---|
Findings
| Rule | Level | Detail |
|---|
Prefer a CLI, or want a CI check?
Same logic, zero dependencies, one command — reads a file or stdin:
node cli.mjs analyze instances.csv cat instances.csv | node cli.mjs analyze - node cli.mjs analyze instances.csv --fail-on warn # exit 1 on any waste node cli.mjs analyze instances.csv --json --prices my-prices.json
Get cli.mjs and engine.mjs — Node 18+, nothing to install, no network call. More: RDS instance cost: Multi-AZ, io1 IOPS, Graviton and idle instances.
What's recognised
| Input | Handling |
|---|
Prices are illustrative and dated; edit them with --prices in the CLI. Aurora, Oracle, SQL Server, Db2, storage backups, data transfer, Performance Insights and Reserved Instance or Savings Plan discounts are not modelled.
Common questions
Does this connect to my AWS account?
No. It reads the rows you paste and never contacts AWS. It cannot see your Reserved Instances, Savings Plans or discounts, so every dollar figure is list price times what you pasted, with prices you can edit.
How do I get the numbers?
aws rds describe-db-instances gives DBInstanceIdentifier, DBInstanceClass, Engine, MultiAZ, StorageType, AllocatedStorage and Iops. Average CPU is CloudWatch CPUUtilization averaged over 30 days. The environment is whatever tag or name you use for dev, staging or prod.
Why flag Multi-AZ outside production?
Multi-AZ keeps a synchronous standby in another zone and bills the instance and its storage twice. That is what production wants, and it is waste on a dev, test or staging database nobody fails over to.
Can gp3 really replace io1?
On RDS, gp3 includes a baseline of 3,000 IOPS below 400 GB and 12,000 at 400 GB and above with no per-IOPS charge, while io1 charges per provisioned IOPS every month. If your provisioned IOPS is inside that baseline, the per-IOPS charge is avoidable. Check peak IOPS and latency in CloudWatch before changing.
Is my data uploaded anywhere?
No. The browser page analyses the text in your own browser and never sends it anywhere. The CLI reads a local file or stdin and makes no network call.