A practical guide to cutting your site's CO₂ output — ordered by impact. Measurement comes first. Everything else is optimization.
Measure Your Site First →Before you optimize anything, you need a baseline. A website carbon calculator gives you a grams-of-CO₂ number and an A–D rating. Run it now, note the figure, then return to it after each optimization to confirm you're moving in the right direction.
01
Compress and convert images
HIGH IMPACT
Images are the single biggest driver of page weight on most websites. Converting to WebP or AVIF reduces file size by 25–50% compared to JPEG, with no perceptible quality loss. Use tools like Squoosh, ImageMagick, or your CMS's built-in optimization. Serve appropriately sized images using srcset — a 1500px image served to a 375px mobile screen transfers 4× the bytes needed.
Typical saving: Often reduces total page transfer by 30–60%
02
Remove unused JavaScript
HIGH IMPACT
Modern JavaScript bundles are large. Unused libraries, dead code, and entire frameworks loaded on every page add weight without value. Run a coverage audit in Chrome DevTools to see what percentage of your JS is actually executed. Tree-shake dependencies, code-split by route, and defer non-critical scripts. Aim for under 100KB of initial JS for content pages.
Typical saving: Can reduce JS transfer by 40–70% on typical marketing sites
03
Audit and prune third-party scripts
HIGH IMPACT
Each analytics, retargeting, chat, and A/B testing tag loads its own script, often from external servers that add latency. Run a tag audit: list every active script tag, who owns it, and whether it's still used. A quarterly tag audit typically uncovers 2–5 scripts that can be removed immediately. Use a tag manager to load non-essential tags asynchronously or after user interaction.
Typical saving: Removing 3 unused tags can save 200–500KB per page load
04
Eliminate or defer video autoplay
HIGH IMPACT
Autoplay video is the fastest path to a D sustainability rating. A 15-second background loop can transfer 20–50MB on the first load. Replace autoplay video with a static image and a poster, then load the video only when the user clicks play. If video is essential, use adaptive bitrate streaming (HLS) via a CDN and never autoplay on mobile.
Typical saving: Removing one autoplay video can cut per-load data transfer by 50%+
05
Implement lazy loading
MEDIUM IMPACT
Don't transfer assets the user hasn't seen yet. Use the native loading='lazy' attribute for images and iframes. For content below a long fold, defer JavaScript components with dynamic import(). The goal: only transfer what's in the initial viewport, load everything else on demand.
Typical saving: Reduces initial transfer by 20–40% on content-heavy pages
06
Use a CDN
MEDIUM IMPACT
A CDN doesn't reduce the amount of data transferred, but it reduces how far data travels — and shorter routes mean lower energy use. A CDN also enables better caching, so repeat visitors load far fewer bytes. Most modern hosting platforms (Vercel, Netlify, Cloudflare) include CDN delivery by default.
Typical saving: Reduces energy-per-byte by shortening network paths; cuts repeat-visit transfer to near-zero for static assets
07
Switch to green-powered hosting
MEDIUM IMPACT
The same byte transferred over a server powered by solar produces less CO₂ than one powered by coal. The Green Web Foundation maintains a database of verified green web hosts. Migrating to a host with credible renewable energy commitments can cut the carbon intensity of every byte your site transfers.
Typical saving: Can reduce effective CO₂ output by 50–90% depending on current host's energy mix
08
Optimise or remove custom fonts
MEDIUM IMPACT
Custom webfonts load in multiple weights, styles, and formats. A single typeface at four weights can add 400–800KB. Options: switch to the system font stack (no download), subset fonts to only the characters you use, or load a single font weight with font-display: swap to avoid render blocking.
Typical saving: Typically saves 100–600KB depending on number of font files
09
Enable and extend caching
MEDIUM IMPACT
Long cache-control headers mean returning visitors transfer almost nothing for static assets. Set cache-control: max-age=31536000, immutable on all hashed JS, CSS, and image assets. Configure your CDN to respect these headers. First-time visitors still transfer everything, but most traffic is repeat visitors.
Typical saving: Reduces per-session transfer by 60–90% for returning visitors
10
Track changes with automated scanning
CRITICAL IMPACT
None of the above techniques deliver measurable value without measurement. Without tracking, you can't know if an optimization worked, or if a new page section added by marketing last month undid your gains. Set up automated daily carbon scans and watch your A–D rating and CO₂ figure trend over time.
Typical saving: Enables continuous improvement rather than one-off wins
Moving from a D to a C rating typically takes a focused half-day sprint — mostly image compression and removing obvious bloat. Getting to a B rating requires a more systematic audit of third-party scripts and JavaScript bundles, usually 2–3 days of engineering work. An A rating requires ongoing discipline: code review policies that check page weight, automated transfer budget checks in CI, and a culture of shipping lean.
Track Your Optimization Progress
Set up daily carbon scans and watch your A–D rating improve as you implement these techniques. 100 URLs, daily automatic scans, trend charts. First 14 days free.
Start Free 14-Day Trial →