Estimate before you train
Model size, tokens and hardware in; electricity, cost, CO₂ and the Landauer gap out, with every step of the derivation shown. Ranked what-ifs tell you which change saves the most.
6 × params × tokens → kWh → g CO₂
Estimate a training run before you pay for it, measure real joules while it runs, and fail the build when a job goes over its energy budget. Every number traces back to physics: today’s hardware spends hundreds of millions of times more energy per operation than the Landauer limit.
$ joules -- sh -c 'for i in $(seq $(getconf _NPROCESSORS_ONLN)); do python3 -c "x=0 for i in range(100000000): x+=i" & done; wait' joules · 15.45 s · exit 0 Apple SoC (CPU + GPU + ANE) 71.5 J 4.6 W avg total 71.5 J = 19.9 mWh cost <0.0001 · CO₂ 0.00735 g at 370 g/kWh
You have been invited to a team on Landauer Gap. Sign in, or create an account, with the email address the invite was sent to.
This is a preview. Sign-in and accounts work on the website.
Open landauer-gap.vercel.app ↗Free account. By continuing you agree to the Terms and Privacy policy.
Model size, tokens and hardware in; electricity, cost, CO₂ and the Landauer gap out, with every step of the derivation shown. Ranked what-ifs tell you which change saves the most.
6 × params × tokens → kWh → g CO₂
Like time, but for energy. Reads NVIDIA, AMD, Intel and Apple meters with zero dependencies, then calibrates the calculator to your real utilisation and power draw. joules proxy puts an energy receipt on every AI response; joules agent splits a GPU cluster’s energy between its Slurm jobs and Kubernetes pods.
joules -- python3 -c "sum(range(10**8))"
A GitHub Action measures your benchmark on every pull request, compares it with the base branch and comments the change. Another fails the check when a planned run goes over your kWh or CO₂ budget.
joules ci --budget 10 -- python3 -c "sum(range(10**7))"
Providers of general-purpose AI models must keep technical documentation that includes the model’s known or estimated energy consumption (AI Act, Article 53 and Annex XI). Where the energy is not known, Annex XI allows it to be estimated from the computational resources used. That is exactly what Landauer Gap computes, with the method written out.
Pro reports are PDFs with the inputs, the derivation, the assumptions and a report ID. Anyone can check the ID by running the same inputs again. The same figures support Scope 2 carbon reporting (CSRD, GHG Protocol) and customer sustainability questionnaires.
Landauer Gap is a calculation tool, not legal advice. Check your obligations with your own counsel.
| Change | Energy | CO₂ | Cost | Saved |
|---|
| Part | Energy | Share | CO₂ |
|---|
Every run you measure with joules --track, over time. Tune hardware, utilisation and where you run, and watch your Landauer gap fall.
| When | Run | Above usual | Sent to |
|---|
| Finished | Project | Run | Hardware | Time | Energy | CO₂ | Gap |
|---|
Add --params and --tokens (billions) so joules can work out the Landauer gap. joules sends the energy, time, cost, CO₂, hardware and a short label: the program and script name, or your --label. Never your arguments, code, outputs or file contents. Each tracked run uses one API call.
Every estimate you keep, private to your account. Select two to compare.
Runs are saved in this browser. Sign in to keep them in your account and open them on any device.
Some runs are only in this browser.
No saved runs yet. Configure a run in the calculator, then press S or Save run.
| Run | Energy | CO₂ | Cost | Gap |
|---|
| Metric | Change |
|---|
Energy per generated token, measured with joules on real hardware and shared by the people who ran it. Each row is the median of every run for that model and machine; lower is better.
| # | Model | Hardware | J / token | Best | kWh / 1M tok | tok/s | Power | Runs | People |
|---|
joules sends only the model name, hardware, energy per token, speed and average power. Nothing from your prompts, outputs, host name or files. Simulated runs are refused. Results from a quiet machine with --subtract-idle 5 are the most comparable.
| Model | Hardware | J / token | tok/s | Shared |
|---|
Every figure comes from a published formula, and every assumption is editable in the calculator.
The standard operation count for dense transformers. Run time is compute ÷ (peak throughput × utilisation).
Accelerators first, then CPUs, memory and networking, then cooling and building losses.
Grid presets are rounded recent annual averages. Use your provider’s figure for formal reporting.
One bit per operation gives the lowest floor, so the gap is an upper bound. Reversible computing aims to avoid erasure altogether.
| Run | Source | Calculator | Published | Difference |
|---|---|---|---|---|
| GPT-3 175B, energy | Patterson et al. 2021 | 1,290 MWh | 1,287 MWh | +0.2% |
| GPT-3 175B, carbon | Patterson et al. 2021 | 553 t | 552 t | +0.2% |
| BLOOM 176B, energy | Luccioni et al. 2022 | 433 MWh | 433 MWh | 0.0% |
| BLOOM 176B, carbon | Luccioni et al. 2022 | 24.7 t | 24.7 t | 0.0% |
Run the same model from your code, CI and dashboards. Create and revoke keys in Settings → API keys.
| Endpoint | Plan | What it does |
|---|---|---|
| POST/api/v1/estimate | Free, Pro | Inputs in, energy, CO₂, cost, Landauer gap and ranked savings out. Same model as this page. |
| POST/api/v1/estimate | Pro | With {"inputs": {…}, "save": true, "name": "…"} the run is also saved to your account. |
| POST/api/v1/report | Pro | Branded PDF report with a verifiable report ID. Same body as estimate. |
| POST/api/v1/report | Pro | With {"kind": "project", "project": "…", "days": 30}: a measured energy report over every tracked run in that project and period. Add "team": true for your team's runs. |
| POST/api/v1/track | Free, Pro | Add a measured run. This is what joules --track sends; a team key puts it in your team. The reply lists any energy alerts it set off. |
| GET/api/v1/runs | Pro | Your saved runs, newest first. ?limit=1…200 |
| GET/api/v1/measurements | Free, Pro | The leaderboard: median joules per token for each model and machine. ?model=llama filters, ?mine=1 lists yours. |
| POST/api/v1/measurements | Free, Pro | Add a measurement. This is what joules bench --share sends. DELETE ?id= removes one of yours. |
| GET/api/health | Public | Service status and model version. |
Errors are JSON: {"error": {"code", "message", "fields"}}. 401 bad key · 400 bad inputs (each field named) · 403 Pro feature · 429 limit reached, with Retry-After. Every response carries X-RateLimit-Limit and X-RateLimit-Remaining.
Manage your profile, sign-in, team, plan, API keys, preferences, alerts and data.
How you appear in Landauer Gap.
— The ways you sign in, your email address and your password.
Signed in on a computer you no longer use? Sign out everywhere, including here. API keys keep working; revoke them under API keys.
Share projects, Tracking, alerts and energy reports with up to 10 people.
| Member | Role | Joined |
|---|
| Sent | Expires |
|---|
Your plan, what it includes, and this month's API calls.
| Free | Pro · $19 a month | |
|---|---|---|
| API calls a month | 100 | 20,000 |
| API calls a minute | 10 | 120 |
| API keys | 2 | 10 |
| Calculator, Tracking, leaderboard, joules, CI actions | ✓ | ✓ |
| Branded PDF reports | — | ✓ |
| Save and list runs from the API | — | ✓ |
| Measured energy reports for a project (PDF) | — | ✓ |
| Energy alerts, in the app and to Slack, Discord or a webhook | — | ✓ |
| Team workspace, up to 10 people | — | ✓ |
Pro is billed monthly by Stripe and you can cancel any time from Manage billing. See the Terms and refund policy.
Keys let joules, CI and your code use your account. Treat them like passwords. How to use them →
| Name | Key | Created | Last used |
|---|
Runs tracked with a team key appear on the team's Tracking page. Its calls count against the team owner's plan.
| Name | Key | Made by | Created | Last used |
|---|
Saved to your account, so every device you sign in on uses them.
Choose when to hear that a run used much more energy than usual. Alerts that fire show on the Tracking page.
| For | Project | Threshold | Webhook |
|---|
What your account holds, and a copy of all of it.
One JSON file with everything above, plus your plan, preferences, team and alerts. API keys are listed by name and prefix only; the keys themselves are never stored.
Permanently remove your account and everything in it.