An unofficial fan tribute featuring Dizzy cursor imagery, with thanks to The Oliver Twins.
Estimated CO₂e methodology
The footer line Estimated CO₂e for this page is a build-time estimate for the URL you are viewing — not a site-wide average, and not a measurement of any individual visitor’s actual emissions.
What the number means
- Model: Sustainable Web Design Model version 4, via
@tgwf/co2. - Visit type: First visit (full transfer). The figure assumes a cold cache so CSS, JavaScript, fonts, and images are downloaded. A repeat visit with a warm cache would usually transfer less.
- Hosting: Calculated with green hosting enabled, reflecting this site’s deployment on Cloudflare.
- Unit: Grams of CO₂ equivalent (CO₂e) attributed to the measured bytes for that page view under the model above.
How it is measured
- A production-like build of the site is served locally with Wrangler (
wrangler pages dev _site), so Brotli (and the Pages Function) match edge behaviour as closely as practical. - Playwright (Chromium) loads the page once with an empty cache (
load, then a shortnetworkidlewait) and records encoded network transfer sizes for the document, stylesheets, scripts, fonts, images, and other responses that actually load. Deferred assets that start after that window may be under-counted. - Those bytes are passed to CO2.js (
perByteon SWD v4) to produce the grams shown in the footer. - Results are stored in committed Eleventy data (
_data/co2eAudit.json) and rendered at build time. Normal deploys do not launch a browser; they only read the last committed audit.
When numbers change
Historic posts rarely change. The opt-in script npm run measure:co2e skips URLs whose source content fingerprint is unchanged and reuses the cached row. Run it after publishing a new post (or with --force / --url=/path/ when you want a refresh). Then rebuild or redeploy so the footer picks up the updated data.
Limits
- The estimate follows a lab methodology (SWD v4 + measured transfer). Real-world emissions vary with device, network path, grid intensity, caching, and what the visitor does next.
- Shared asset churn (for example fingerprinted CSS or JS) does not by itself invalidate historic rows until the next measure run.
- Pages without a cached row omit the footer line entirely rather than inventing a number.