[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-page-how-to-measure-your-websites-carbon-footprint":3},{"id":4,"title":5,"body":6,"date":331,"description":332,"draft":333,"extension":334,"image":335,"meta":336,"navigation":337,"path":338,"seo":339,"stem":340,"__hash__":341},"blog\u002Fblog\u002Fhow-to-measure-your-websites-carbon-footprint.md","What your website burns",{"type":7,"value":8,"toc":321},"minimark",[9,13,16,21,24,55,59,66,69,72,76,116,127,131,141,149,161,165,174,188,203,206,219,226,230,233,241],[10,11,12],"p",{},"Every page load spends electricity. Some of it on the server answering the request, some on the networks carrying the response, and most of it on the phone or laptop doing the rendering. Nobody sends you an itemised bill, so it's easy to treat the cost as zero.",[10,14,15],{},"Your website's carbon footprint is measurable, though. Methods are public, and many fixes are within your control.",[17,18,20],"h2",{"id":19},"where-the-energy-goes","Where the energy goes",[10,22,23],{},"Three things decide the number.",[25,26,27,39,47],"ol",{},[28,29,30,34,35,38],"li",{},[31,32,33],"strong",{},"How much data you send"," ",[36,37],"br",{},"Bytes have to be moved, and moving them costs energy at every hop. A page carrying a 5MB hero image is not in the same category as one weighing 200KB.",[28,40,41,34,44,46],{},[31,42,43],{},"Electricity behind your host",[36,45],{},"A server on a grid running mostly on wind and hydro carries a different carbon cost than one sitting on coal, for exactly the same work.",[28,48,49,34,52,54],{},[31,50,51],{},"The visitor's device",[36,53],{},"This is the part people forget. Rendering your page drains someone's battery, and heavy JavaScript, large media and expensive layout work all cost more of it. Device is usually the largest of the three.",[17,56,58],{"id":57},"what-about-those-ai-models","What about those AI models?",[10,60,61,62,65],{},"It's an obvious objection. Data centres used around ",[31,63,64],{},"415 TWh"," of electricity in 2024, about 1.5% of the world's supply, and the IEA expects that to more than double by 2030 as AI builds out - to roughly what Japan gets through in a year.",[10,67,68],{},"Set that against compressing a hero image, it can feel like sorting your yoghurt pots for recycling while a huge refinery runs next door.",[10,70,71],{},"But you don't control the refinery, and you do control your own pages. Fixes cost nothing, they make your site faster at the same time, and they're the part you can act on. Not being able to fix all of it doesn't mean you should stop looking.",[17,73,75],{"id":74},"what-makes-a-page-heavy","What makes a page heavy",[25,77,78,86,94,102],{},[28,79,80,34,83,85],{},[31,81,82],{},"Images, almost always",[36,84],{},"An uncompressed photo straight off a camera can run to several megabytes. The same picture as a well-tuned WebP or AVIF is usually a couple of hundred kilobytes. Nothing else gives you that much return for that little work.",[28,87,88,34,91,93],{},[31,89,90],{},"Video",[36,92],{},"Autoplaying background video is the most expensive thing you can casually add to a page.",[28,95,96,34,99,101],{},[31,97,98],{},"Fonts",[36,100],{},"Quietly bad, because it's so easy to load four weights when the design only uses two.",[28,103,104,34,107,109,110,115],{},[31,105,106],{},"Other people's JavaScript",[36,108],{},"Third-party scripts grow without anyone deciding to grow them - a tag here, a chat widget there, a consent manager on top, all arriving on every page load. ",[111,112,114],"a",{"href":113},"\u002Fblog\u002Fcookie-banners-are-killing-your-conversion-rate","Consent banners"," usually cost you bytes and accurate numbers at the same time.",[10,117,118,119,122,123,126],{},"Open your network tab, sort by transfer size, and ask it of every third-party file: does this earn its bytes? Analytics included, ours as much as anyone's. Cabin's script is about ",[31,120,121],{},"1.2KB"," and Google's gtag.js is about ",[31,124,125],{},"145KB",", though both are worth measuring yourself rather than trusting a number in a blog post, because sizes drift.",[17,128,130],{"id":129},"how-to-measure-your-site","How to measure your site",[10,132,133,134,140],{},"For a quick read on a single page, Cabin's free ",[111,135,139],{"href":136,"rel":137},"https:\u002F\u002Fwithcabin.com\u002Fhow-green-is-your-website",[138],"nofollow","How Green Is Your Website?"," tool will analyse any URL.",[10,142,143,144,148],{},"It measures ",[145,146,147],"em",{},"one"," load of one URL. That's a benchmark, not a footprint. What you actually emit depends on which pages people visit, and how many of them arrive with a warm cache.",[10,150,151,152,156,157,160],{},"Cabin's Energy & Carbon section works from what your real visitors loaded instead. It shows total data transferred, CO2 per unique visitor (which Cabin ",[111,153,155],{"href":154},"\u002Fblog\u002Fhow-cabin-measures-unique-visitors-without-cookies","counts without cookies","), and a per-page list so you can see which URL is doing the damage. Carbon reporting is a ",[31,158,159],{},"Plus"," feature and above.",[17,162,164],{"id":163},"how-to-improve-your-websites-footprint","How to improve your website's footprint",[10,166,167,168,173],{},"Start with images, since that's where most of the weight is. ",[111,169,172],{"href":170,"rel":171},"https:\u002F\u002Fsquoosh.app",[138],"Squoosh",", Google's free browser-based compressor, will turn a camera photo into a WebP a fraction of the size, and the image never leaves your device while it does it.",[10,175,176,177,182,183,187],{},"If you're building on a modern framework, this is often already handled for you: ",[111,178,181],{"href":179,"rel":180},"https:\u002F\u002Fimage.nuxt.com\u002F",[138],"Nuxt Image"," (which this site runs on) converts and resizes images automatically, and Next.js's ",[184,185,186],"code",{},"next\u002Fimage"," does the same, serving WebP by default with AVIF available too. Worth checking whether yours already does this before reaching for a separate tool.",[10,189,190,191,194,195,198,199,202],{},"Two more things are worth doing. ",[184,192,193],{},"srcset"," tells the browser to send a phone the phone-sized version of an image instead of the one built for a desktop monitor, so nobody downloads pixels they can't see. Lazy-loading defers anything below the fold, images included, until the visitor actually scrolls to it - a ",[184,196,197],{},"loading=\"lazy\""," attribute on an ",[184,200,201],{},"\u003Cimg>"," tag is often all it takes.",[10,204,205],{},"Your CDN matters too, not just your host. A good one compresses images and video on the way out and serves them from whichever edge is closest to the visitor, so check whether yours already does it before you do it by hand.",[10,207,208,209,212,213,218],{},"After that: turn on Brotli or Gzip, and set cache headers so returning visitors skip the download entirely. Subset your fonts to the characters you use, or drop to system fonts. Look your host ",[145,210,211],{},"and"," your CDN up in the Green Web Foundation's ",[111,214,217],{"href":215,"rel":216},"https:\u002F\u002Fwww.thegreenwebfoundation.org\u002Fdirectory\u002F",[138],"directory",", and if either isn't listed, ask them why.",[10,220,221,222,225],{},"None of that is exotic. It's the same list a performance audit hands you, which is rather the point: the fast version of your site and the low-carbon version of your site are the ",[145,223,224],{},"same"," site.",[17,227,229],{"id":228},"start-with-one-number","Start with one number",[10,231,232],{},"Measure one page today and write the number down. Fix the heaviest image on it, then measure again. That's the whole loop, and you can run it this afternoon without buying anything.",[10,234,235,236,240],{},"Cabin provides this loop, automatically for your real traffic, ",[111,237,239],{"href":238},"\u002Fauth\u002Fsignup","start with Cabin for free",".",[242,243,244],"footnotes",{},[245,246,247,258,277,284,287,299],"ul",{},[28,248,249,250,257],{},"Data centre electricity: IEA, ",[111,251,254],{"href":252,"rel":253},"https:\u002F\u002Fwww.iea.org\u002Freports\u002Fenergy-and-ai\u002Fexecutive-summary",[138],[145,255,256],{},"Energy and AI",", April 2025. \"Data centres accounted for around 1.5% of the world's electricity consumption in 2024, or 415 terawatt-hours (TWh)\", and consumption is \"set to more than double to around 945 TWh by 2030\", which the report compares to Japan's total electricity use.",[28,259,260,261,266,267,270,271,276],{},"Cabin's CO2 model: the Green Web Foundation's ",[111,262,265],{"href":263,"rel":264},"https:\u002F\u002Fdevelopers.thegreenwebfoundation.org\u002Fco2js\u002Foverview\u002F",[138],"co2.js"," 0.17.0 with the ",[184,268,269],{},"swd"," model, which resolves to ",[111,272,275],{"href":273,"rel":274},"https:\u002F\u002Fsustainablewebdesign.org\u002Festimating-digital-emissions\u002F",[138],"Sustainable Web Design version 3",". Version 4 exists and gives very different answers: 1MB of transfer comes out at 0.383g under v3 and 0.148g under v4. Cabin hasn't switched, so that every month of your history comes from one model rather than having March and April quietly disagree. When it does switch, there'll be a note.",[28,278,279,280,283],{},"Script sizes, measured 16 August 2026. ",[184,281,282],{},"curl -s -H \"Accept-Encoding: gzip\" https:\u002F\u002Fscripts.withcabin.com\u002Fhello.js | wc -c"," returns 1,212 bytes. The same command against Google's gtag.js returns 148,838 bytes, give or take a little depending on the measurement ID.",[28,285,286],{},"Car equivalence in the dashboard uses DEFRA\u002FDESNZ 2024 factors for the UK, EEA 2024 for the EU and EPA 2024 for the US, in both tank-to-wheel and well-to-wheel form, because \"the same as driving X km\" means nothing if nobody says whose car.",[28,288,289,290,295,296,240],{},"Checked 17 August 2026, via the ",[111,291,294],{"href":292,"rel":293},"https:\u002F\u002Fdevelopers.thegreenwebfoundation.org\u002Fapi\u002Fgreencheck\u002Fv3\u002Fgreencheck\u002F",[138],"Green Web Foundation's public API",": Cabin's own CDN endpoint currently reports green, attributed to Hetzner. That's a snapshot of one hostname on one day, not a claim about the CDN network as a whole, which runs many points of presence on different providers. Check your own with ",[184,297,298],{},"curl https:\u002F\u002Fapi.thegreenwebfoundation.org\u002Fgreencheck\u002Fyourdomain.com",[28,300,301,302,311,312,320],{},"The line about the internet producing 2 to 4% of global emissions, \"about the same as aviation\", isn't in the literature. ",[111,303,306,307,310],{"href":304,"rel":305},"https:\u002F\u002Fpmc.ncbi.nlm.nih.gov\u002Farticles\u002FPMC8441580\u002F",[138],"Freitag et al., ",[145,308,309],{},"Patterns",", 2021"," put the whole ICT sector at 1.8 to 2.8% of global greenhouse gas emissions in 2020, or 2.1 to 3.9% adjusted for supply chain truncation. ",[111,313,316,317],{"href":314,"rel":315},"https:\u002F\u002Fdoi.org\u002F10.1016\u002Fj.telpol.2023.102701",[138],"Malmodin et al., ",[145,318,319],{},"Telecommunications Policy"," put the same sector in the same year at about 1.4%. Both measure ICT, which is mostly phones, laptops and televisions rather than web pages, and neither mentions aircraft.",{"title":322,"searchDepth":323,"depth":323,"links":324},"",2,[325,326,327,328,329,330],{"id":19,"depth":323,"text":20},{"id":57,"depth":323,"text":58},{"id":74,"depth":323,"text":75},{"id":129,"depth":323,"text":130},{"id":163,"depth":323,"text":164},{"id":228,"depth":323,"text":229},"2026-02-18","How to measure your website's carbon footprint, where the CO2 numbers come from, and which fixes actually move them.",false,"md","\u002Fimg\u002Fblog\u002Fmesh.jpg",{},true,"\u002Fblog\u002Fhow-to-measure-your-websites-carbon-footprint",{"title":5,"description":332},"blog\u002Fhow-to-measure-your-websites-carbon-footprint","oWGxREjSet08rPTWb6lOdmnGqrQQXCGqhnI15gqvPX8"]