1. Paste REPORT lines
2. What it found
Cheapest size by how CPU-bound the function is
| If the function is | Cheapest size | Modelled p50 | Per million invocations |
|---|
Findings
| Rule | Level | Detail |
|---|
Prefer a CLI, or want a CI check?
Same logic, zero dependencies, one command — reads a file or stdin:
aws logs tail /aws/lambda/my-fn --since 1d | node cli.mjs analyze - --invocations 5000000 node cli.mjs analyze logs.txt --cpu-bound 0.8 --arch arm node cli.mjs analyze logs.txt --fail-on warn # exit 1 when over-provisioned or near the limit node cli.mjs analyze logs.txt --json --prices my-prices.json
Get cli.mjs and engine.mjs — Node 18+, nothing to install, no network call. More: how to choose a Lambda memory size to cut cost.
What's recognised
| Input | Handling |
|---|
Prices are illustrative and dated; edit them with --prices in the CLI. Free tier, volume tiers, provisioned concurrency and other regions are not modelled.
Common questions
Does this connect to my AWS account?
No. It reads the REPORT lines you paste and never contacts AWS. It cannot see your real invoice, free tier, tiered pricing, provisioned concurrency or other functions, so every dollar figure is lines you pasted times list prices you can edit.
How can it know the duration at a different memory size?
It cannot measure it; it models it. Lambda gives CPU in proportion to memory, about one vCPU at 1,769 MB. A CPU-bound function speeds up as memory rises and an I/O-bound one does not, so the tool shows the cheapest size at 0%, your guess, and 100% CPU-bound. If those disagree, the real answer depends on your code: run AWS Lambda Power Tuning to measure it.
Why does it limit how much slower the new size may be?
Cost is memory times billed time, so shrinking memory on a CPU-bound function can look cheaper on paper while making every request several times slower. The tool only recommends sizes whose modelled median stays within a latency cap (1.25x by default, editable).
Is my log text 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.