dev environment — not public
Try it yourself How it works Pricing Docs Dashboard
for embedded & firmware teams

Know your firmware
budget is breaking.
Before you merge.

FlashBudget checks flash and RAM usage on every pull request and comments the size diff, symbol by symbol — so you never discover a blown memory budget three weeks before release.

↳ This is a real PR comment, not a mockup — see it on GitHub
Free — 100 builds/mo, no card required · Team €19/mo · works with GCC/Clang .elf & .map files · any CI
pull request #482 — build check
feat: add BLE OTA resume support — 3 files changed
FB
flashbudget-bot size report
flash+312 B
ram-64 B
⚠ flash budget at 91.8% — 8.2% headroom left
Mockup for illustration — layout matches the real PR comment above

See it in action

Two ways to look at this — pick one.

A real pull request, on a real (small) firmware repo. Nothing staged for this screenshot — this is what the bot actually posted.

Real FlashBudget bot comment on a GitHub pull request, showing a flash and RAM size diff table

Open this PR on GitHub →

You've felt this before

On a resource-constrained MCU, memory doesn't run out gradually — it runs out on the exact commit nobody checked.

// discovered too late

The build finally fails on the release branch, two days before shipping, and nobody remembers which of the last forty commits pushed it over.

// invisible cost

A new dependency, a bigger buffer, a debug string left in — each one looks harmless in review because nobody sees the memory impact.

// manual and skipped

Someone could run size or nm by hand after every PR. Nobody does it every time. So it stops happening at all.

How it works

01

Connect your CI

Add one step to your existing build that uploads the .elf or .map file after compilation. No firmware code changes required.

- run: | curl -sf https://flashbudget.io/api/builds \ -H "Authorization: Bearer ${{ secrets.FLASHBUDGET_TOKEN }}" \ -F "elf=@build/app.elf"
02

We diff the binary

FlashBudget compares flash and RAM usage against the target branch, section by section and symbol by symbol.

03

Get the verdict on the PR

A comment lands directly on the pull request, plus an alert if a configured budget threshold is crossed.

Per-symbol diffing

See exactly which function, struct, or constant grew — not just a total byte count.

Configurable budgets

Set a hard flash/RAM ceiling per target and fail the build automatically when it's crossed.

Trend dashboard

Track memory footprint over time across firmware targets, not just per pull request.

Multi-target support

Different budgets for different boards or variants built from the same repository.

Pricing

Open source
Free
  • 100 builds / month
  • PR size comments & CI budget checks
  • 1 firmware target
  • Last 30 builds of history
Start free
Team
€19 / repo / month
  • Unlimited builds
  • Unlimited firmware targets
  • Full build history & trends
  • Priority support
Upgrade from your dashboard

Your binaries stay yours

Analyzed, never stored

Your .elf is parsed in memory and discarded seconds later — never written to disk, never executed, never logged. Only derived size metadata (symbol names and byte counts) is kept. That's in the privacy policy, in writing.

Audit the engine

The diff engine, fbdiff, is 200 lines of readable open-source Python. Read it — or run it fully locally in your CI, so nothing leaves your infrastructure. Want the full technical breakdown? Read the application note (PDF) →

Your CI posts the comment

FlashBudget never gets access to your repositories. The PR comment is posted by your own CI, with your permissions. We only ever see what you send us.

Start free. Upgrade when it matters.

Create a project, plug your CI, get size reports on your PRs today. Free tier covers 100 builds a month — Team unlocks unlimited builds, targets, and history for €19/mo.

Open the dashboard

Not ready to try it? Get an email when we ship new features.