S3 STORAGE CLASS SAVINGS · RUNS IN YOUR BROWSER

Will an S3 lifecycle rule actually save money?

Paste an S3 Inventory report (CSV) and get current monthly cost by storage class and the net 12-month saving of moving objects to Standard-IA, Glacier or Intelligent-Tiering — after the per-object transition fee, minimum billable size, minimum storage duration, monitoring fee and retrieval that make small objects lose money.

Nothing is uploaded and AWS is never contacted. The file or text is read in this browser and never leaves your device. Estimates at editable list prices, not a bill.

1. Add your inventory

List prices (USD per GB-month; edit to match your region and tier)

Prefer a CLI, or want a CI check?

Same logic, zero dependencies, one command — reads a file or stdin:

node cli.mjs analyze inventory.csv
node cli.mjs analyze inventory.csv --retrieval-pct 5 --region-multiplier 1.1
node cli.mjs analyze inventory.csv --fail-on warn --waste-threshold 250   # exit 1 above $250/month avoidable
node cli.mjs analyze inventory.csv --json --prices my-prices.json

Get cli.mjs and engine.mjs — Node 18+, nothing to install, no network call. More: how to move S3 objects to Glacier without losing money.

What's recognised

InputHandling

Prices are illustrative and dated; edit them above or with --prices in the CLI. Free tier, volume tiers, request and data-transfer charges, Glacier retrieval request fees and other regions are not modelled except through the multiplier.

Common questions

Does this connect to my AWS account?

No. It reads the S3 Inventory CSV you paste or choose and never contacts AWS. It cannot see your real bill, free tier, volume tiers, request or data-transfer charges, so every dollar figure is rows you supplied times list prices you can edit.

Why can moving small objects to a cheaper class lose money?

Standard-IA and Glacier Instant Retrieval bill every object as at least 128 KB, Glacier Flexible and Deep Archive add about 40 KB of overhead per object, and every lifecycle transition is a billed request per object. For an object under about 128 KB those charges can exceed the storage you save. Add ObjectSizeGreaterThan 131071 to the lifecycle rule to leave them in Standard.

What does it assume about how often my data is read?

An inventory lists what exists, not what is read, so retrieval is an input: the percentage of transitioned bytes retrieved each month (default 1%). Raise it if you read old data; Standard-IA and Glacier Instant Retrieval charge per GB retrieved and Intelligent-Tiering has no retrieval fee. The percentage of objects deleted early is also an input, because of the 30, 90 and 180 day minimum storage durations.

Is my inventory uploaded anywhere?

No. The browser page reads the file or text in your own browser and never sends it anywhere. The CLI reads a local file or stdin and makes no network call.