0.275 g
cleaner than an estimated 60.5% 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.365 g CO₂e
- 0.0040 g CO₂e
- unknown
- 776 ms
- 0.002
- 26 ms
At 10,000 views a month this page emits about 33.0 kg CO₂e a year, roughly 135 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.133 g/visit, rating B
Serve images at the size they displaysave ~0.045 g/visit (403 kB)High impact · quick fix
5 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.
- agents-hero-db25ae9b78de0e83337b8ca77e1ef841.…396 kB
- agents-preferred-cloud-388ced42257500da7ec403…74 kB
- manage-connectors-3a03cb2ee65ae73697497d13e61…41 kB
- manage-no-disk-sizing-ba1e7dcba6b4b60a0583f0d…40 kB
- manage-checkpointing-ff418d9ba95f1124fff3383c…31 kB
Reduce JavaScript payloadsave ~0.030 g/visit (267 kB)High impact · moderate effort
7 scripts total 1.07 MB on the wire (3.70 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.
- app-dd9bfad74effae51c4aa12809ee55a2d.js523 kB
- stripe.js267 kB
- js192 kB
- posthog-7b1419414106236dca312c579aaf3d4a.js79 kB
- events.js2.2 kB
Convert and compress imagessave ~0.025 g/visit (227 kB)Medium impact · quick fix
2 images exceed 300 kB apiece.
Serve AVIF (or WebP) with responsive srcset sizes, and re-compress oversized files. AVIF typically halves JPEG weight at the same visual quality.
- agents-hero-db25ae9b78de0e83337b8ca77e1ef841.…396 kB
- cta-banner-bg-c4b3c3dcfe58aec2f56bd438c419976…359 kB
Audit third-party servicessave ~0.015 g/visit (134 kB)Medium impact · moderate effort
3 third-party domains account for 268 kB (11% 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.
- js.stripe.com267 kB
- www.googletagmanager.com385 B
- 0 B
Optimize web fontssave ~0.012 g/visit (107 kB)Medium impact · quick fix
7 font files total 305 kB.
Subset fonts to used glyphs, prefer one variable font over multiple weights, serve WOFF2 only, and consider system fonts for UI text.
- fricolage-grotesque.var.woff2147 kB
- mackinac-bold-italic.woff227 kB
- mackinac-bold.woff227 kB
- mackinac-medium-italic.woff227 kB
- fragment-mono-italic.woff226 kB
Verify your hosting energyMedium impact · moderate effort
This host has not published renewable energy evidence with the Green Web Foundation, so its energy source is unknown.
Choose a provider listed in the Green Web Directory, or ask your current provider to publish evidence (and a carbon.txt). This cuts the data-center share of every single page view.
- carbon.txtNo carbon.txt found at the site root; publishing one is the lightest first step.
Upgrade compression beyond gzipsave ~0.015 g/visit (136 kB)Advisory · quick fix
907 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.
- app-dd9bfad74effae51c4aa12809ee55a2d.js523 kB
- js192 kB
- app-5a6f014ecd5740774077b8674e6d2a5e.css110 kB
- posthog-7b1419414106236dca312c579aaf3d4a.js79 kB
- webmcp-3f6bb99cd226597bfa4e98ecb2d9f2bd.js1.4 kB
Set a page-weight budgetAdvisory · moderate effort
At 2.46 MB per view this page rates D. 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.
Upgrade connections to HTTP/2 or HTTP/3Advisory · quick fix
1 host serves five or more resources over HTTP/1.1, paying per-request connection and header overhead newer protocols eliminate.
Enable HTTP/2 (or HTTP/3) on the server or move the assets behind a CDN that speaks it; multiplexing makes many small requests nearly free.
- fly.io27 requests over http/1.1
Where the bytes are
- JavaScript1.07 MB · 7 req
- Images955 kB · 17 req
- Fonts305 kB · 7 req
- CSS110 kB · 1 req
- HTML25 kB · 1 req
- Data (fetch)272 B · 1 req
Ten heaviest requests
| Resource | Type | Wire size | Cache-Control |
|---|---|---|---|
| fly.io/phx/assets/js/app-dd9bfad74effae51c4aa12809ee55a2d.js?vsn=d | script | 523 kB | public, max-age=31536000, immutable |
| fly.io/phx/images/agents-hero-db25ae9b78de0e83337b8ca77e1ef841.webp?vsn=d | image | 396 kB | public, max-age=31536000, immutable |
| fly.io/phx/images/sprites/cta-banner-bg-c4b3c3dcfe58aec2f56bd438c4199767.webp?vsn=d | image | 359 kB | public, max-age=31536000, immutable |
| js.stripe.com/dahlia/stripe.js | script | 267 kB | max-age=120 |
| analytics.fly.io/gtag/js?id=G-EX6DMZ1DZV | script | 192 kB | private, max-age=900 |
| fly.io/phx/ui/fonts/fricolage-grotesque.var.woff2 | font | 147 kB | public |
| fly.io/phx/assets/app-5a6f014ecd5740774077b8674e6d2a5e.css?vsn=d | stylesheet | 110 kB | public, max-age=31536000, immutable |
| fly.io/phx/assets/js/posthog-7b1419414106236dca312c579aaf3d4a.js?vsn=d | script | 79 kB | public, max-age=31536000, immutable |
| fly.io/phx/images/agents-preferred-cloud-388ced42257500da7ec403f260a14091.webp?vsn=d | image | 74 kB | public, max-age=31536000, immutable |
| fly.io/phx/images/manage-connectors-3a03cb2ee65ae73697497d13e61281d5.webp?vsn=d | image | 41 kB | public, max-age=31536000, immutable |
Share this report
<a href="https://carbonless.cc/report/fly.io"><img src="https://carbonless.cc/api/badge?url=https%3A%2F%2Ffly.io" 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.