0.622 g
cleaner than an estimated 28.8% of pages on the web
- A+
- A
- B
- C
- D
- E
- F
A+ is 0.04 g or less per view, F is more than 0.359 g CO₂e.
The numbers
- 0.826 g CO₂e
- 0.011 g CO₂e
- verified green
- 332 ms
- 0.032
- 86 ms
At 10,000 views a month this page emits about 74.7 kg CO₂e a year, roughly 306 km in an average petrol car. The estimate assumes 75% new and 25% returning visitors, a measured cache reload ratio of 1%, and world-average grid intensity. How we calculate this
What to fix
apply everything → ~0.256 g/visit, rating D
Convert and compress imagessave ~0.121 g/visit (1.33 MB)High impact · quick fix
24 images (2.96 MB) ship in legacy formats (JPEG/PNG/GIF).
Serve AVIF (or WebP) with responsive srcset sizes, and re-compress oversized files. AVIF typically halves JPEG weight at the same visual quality.
- tool-calling.png1.03 MB
- send-image-to-llm.png973 kB
- web-search-benchmark.png505 kB
- MoonshotAI.png238 kB
- faviconV244 kB
Lazy-load below-the-fold mediasave ~0.115 g/visit (1.26 MB)High impact · quick fix
9 below-the-fold images/iframes (2.52 MB) download immediately for every visitor.
Add loading="lazy" to below-fold img and iframe elements (and keep it off the LCP image). Browsers then fetch them only when scrolling approaches.
- tool-calling.png1.03 MB
- send-image-to-llm.png973 kB
- web-search-benchmark.png505 kB
- faviconV24.7 kB
- openrouter-light.svg4.6 kB
Reduce JavaScript payloadsave ~0.060 g/visit (660 kB)High impact · moderate effort
109 scripts total 2.64 MB on the wire (7.43 MB decoded). Bundles this size usually carry a lot of unused code.
Split bundles per route, tree-shake dependencies, and audit with a bundle analyzer or coverage profile. A 25% cut is a conservative target for bundles this size.
- 537s199 kB
- js190 kB
- ui-common_ui_84d48c_1.30.2.js128 kB
- 1m0hmmyjuoijz.js115 kB
- 42mefu9ko_qq4.js96 kB
Serve images at the size they displaysave ~0.028 g/visit (312 kB)High impact · quick fix
10 images are encoded at more than twice the pixels the layout shows, even accounting for this viewport's pixel density.
Generate multiple sizes and let the browser pick with srcset/sizes; a 4000px original behind a 400px slot spends bandwidth no screen displays.
- tool-calling.png1.03 MB
- send-image-to-llm.png973 kB
- web-search-benchmark.png505 kB
- MoonshotAI.png238 kB
- image43 kB
Optimize web fontssave ~0.019 g/visit (204 kB)Medium impact · quick fix
7 font files total 441 kB, 2 not in WOFF2.
Subset fonts to used glyphs, prefer one variable font over multiple weights, serve WOFF2 only, and consider system fonts for UI text.
- PlusJakartaSans_Italic_VariableFont_wght-s.p.…87 kB
- PlusJakartaSans_VariableFont_wght-s.p.3adhwoh…80 kB
- GeistMono_Variable.p.1sg4ifey12l8-.woff261 kB
- gordita_bold-s.p.3v-a8bgqavs7d.woff254 kB
- gordita_medium-s.p.1djqx3tvkaz4b.woff253 kB
Audit third-party servicessave ~0.013 g/visit (146 kB)Medium impact · moderate effort
9 third-party domains account for 293 kB (4% of the page).
Remove services that no longer earn their place; load the rest on interaction (facades for embeds, delayed consent-gated tags). Each third party is also a privacy and performance dependency.
- www.googletagmanager.com191 kB
- t0.gstatic.com89 kB
- static.cloudflareinsights.com12 kB
- stats.g.doubleclick.net556 B
- cdn.protect.clerk.com421 B
- a3fa4e8481a36291.client.protect.clerk.com130 B
Upgrade compression beyond gzipsave ~0.010 g/visit (111 kB)Advisory · quick fix
737 kB of text ships gzip-compressed; Brotli or Zstandard would cut roughly another 15-20%, and browsers without them fall back to gzip automatically.
Serve precompressed Brotli for static text assets (highest level, compressed at build time) and enable Brotli or zstd for dynamic responses; keep gzip only as the fallback.
- models461 kB
- 537s199 kB
- openrouter.ai29 kB
- v4513226cdae34746b4dedf0b4dfa099e178179150949612 kB
- main.js9.7 kB
Remove references to broken resourcessave ~<0.001 g/visit (2.8 kB)Advisory · quick fix
1 request answered 4xx/5xx on load: transfer and connections spent on nothing, on every single visit.
Delete or fix the references (stale asset URLs, dead third-party tags). Each one is a request the page provably does not need.
- keysHTTP 401 · 2.8 kB
Set a page-weight budgetAdvisory · moderate effort
At 6.83 MB per view this page rates F. The findings above list where the weight is.
Agree a transfer budget (e.g. under 975 kB reaches a B), enforce it in CI, and re-scan after each change to hold the line.
Where the bytes are
- Images3.07 MB · 45 req
- JavaScript2.64 MB · 109 req
- Data (fetch)554 kB · 21 req
- Fonts441 kB · 7 req
- CSS89 kB · 5 req
- HTML29 kB · 1 req
- Data (XHR)1.8 kB · 2 req
- Other556 B · 1 req
Ten heaviest requests
| Resource | Type | Wire size | Cache-Control |
|---|---|---|---|
| openrouter.ai/blog/images/tool-calling.png | image | 1.03 MB | public, max-age=0, must-revalidate |
| openrouter.ai/blog/images/send-image-to-llm.png | image | 973 kB | public, max-age=0, must-revalidate |
| openrouter.ai/blog/images/web-search-benchmark.png | image | 505 kB | public, max-age=0, must-revalidate |
| openrouter.ai/api/frontend/v1/catalog/models | fetch | 461 kB | public, max-age=60, s-maxage=300, stale-while-revalidate=300 |
| openrouter.ai/images/icons/MoonshotAI.png | image | 238 kB | public, max-age=0, must-revalidate |
| openrouter.ai/537s/ | script | 199 kB | private, max-age=900 |
| www.googletagmanager.com/gtag/js?id=G-R8YZRJS2XN | script | 190 kB | private, max-age=900 |
| clerk.openrouter.ai/npm/@clerk/[email protected]/dist/ui-common_ui_84d48c_1.30.2.js | script | 128 kB | public, max-age=31536000 |
| openrouter.ai/_next/static/immutable/chunks/1m0hmmyjuoijz.js | script | 115 kB | public,max-age=31536000,immutable |
| openrouter.ai/_next/static/immutable/chunks/42mefu9ko_qq4.js | script | 96 kB | public,max-age=31536000,immutable |
Share this report
<a href="https://carbonless.cc/report/openrouter.ai"><img src="https://carbonless.cc/api/badge?url=https%3A%2F%2Fopenrouter.ai" alt="Carbon rating for this page" width="150" height="30" loading="lazy" /></a>The badge is a lightweight SVG (under 1 kB) served with long-lived caching, so a new scan can take up to a day to show through.