CO2 Formulas

When using software the typical unit we experience directly is often time. Software is either fast or slow, but we typically do not think about the carbon footprint of software.

Software uses energy through the utilization of the underlying hardware (typically measured in Watts). These Watts have to come from somewhere and we will see that every amount of energy typically has a carbon value associated with it.

Also software uses energy when making network requests and also indirectly is responsible for the embodied carbon, which is the CO2 emitted when the hardware that it uses has to be initially manufactured.

On this page we want to hightlight how to get from typical values like time or Megabytes to kWh and finally to CO2.

List of CO2 formulas

When you want to quantify the cost of transferring an amount of data through the internet you would need to measure at every hop of the packet and add up cost for routers, cables, transmission towers etc.

Since this measurement data is not available a heuristic is used that estimates the cost of all this network equipment the data has to flow through based on the actual transferred amount of data in GB.

When you have the value already in GB you can just convert them with a constant factor to kWh.

As you might suggest this seemingly easy formula makes a lot of assumptions and uses a lot of averages.

Typically these approaches either follow a top down approach by looking at the electricity bill of a telecom provider and then the network transmission reporting to divide the two numbers.

Other approaches are to really trace the path of some sample packets and look at every piece of network equipment on the way and then on its power draw for the transmission only.

There are also other approaches but all have downsides and upsides. We are using the Energy Intensity Model which is described in [0] - See a more detailed discussion about this on our blog: How to Measure and Act on Network Carbon Emissions in Green Software

[0] Coroama, V. (2021) - Investigating the inconsistencies among energy and energy intensity estimates of the internet - Swiss Federal Office of Energy SFOE

Included Network parts

The important point to note with this number is which parts of the network are included. In the picture on the right you see that for the model we favor we recommend to select WAN+FAN+RAN. A good weighting of FAN and RAN could be that RAN makes up about 10% of the connection types while FAN makes up 90%. (Keep in mind that mobile connections that come via WLAN are still considered FAN)

Usable Number

0.04106063
kWh/GB

Given the assumptions from the included network parts above
and using extrapolated values from [0] for the year 2025.

This conversion is probably the most often done and also the one with the most impact.

By most often done we mean that companies already get the current intensity of their grid and schedule workloads accordingly.

The current intensity of the grid can for instance be retrieved from Electricitymap.com. In our case in Germany the number is at the moment 334 gCO2e/kWh (2024 average) [6]

Worldwide average grid carbon intensity

If your workload is distributed over multiple countries or you don't know at all where your workload is running, then the best way is to take the global average.

For 2024 this number is: 473 gCO2e/kWh [7]

So if we were to plug in this number into a calculation starting with kWh we get directly to gCO2e, which means gramms of CO2 equivalent. Since not every checmical process generates pure CO2 they are all converted to the equivalent climate warming potential of CO2, which results in CO2e

1
kWh
x
436
gCO2e/kWh
=
436
gCO2e

[6] Electricitymaps Germany carbon intensity yearly

[7] Ember Global Electricity Review 2025

Some energy budgeting tools or internal power meters (like Intel RAPL) give you *Joules* as an output value.

The actual SI-Unit value of Joules is Ws. So in order to get to kWh you have to first get to hours (60*60) and then get to *kilo*, which means to divide by a thousand

Joules zu kWh

1
Joule
/
(60*60)
(to get to hours)
/
(1.000)
(to get to *kilo*)
=
0.000000277...
kWH

And vice versa:

kWh to Joules

1
kWh
*
(60*60)
(remove hours)
*
(1.000)
(remove *kilo*)
=
3.600.000
Joules

If you cannot measure the Watts directly (with an external powermeter, Intel RAPL, etc.) then you can always use datasheets or benchmarks and interpolate to get to your power value.

A naive approach to estimate the energy draw of a processor would be to use its Thermal Design Power (TDP).

This gives you a first impression in which order of magnitude your expected energy value is.

Example: My Intel i7-5557U has a TDP of 28 W

If I were to do a compute of 5 seconds I would expect an energy consumption of 140 Ws (28 W * 5 s), aka 140 J.

If you look at our CPU measurement of a full CPU load you will see that the measured value is only ~60 J.

So we can conclude that the TDP is a very rough estimate, and serves as a good upper bound. But it exaggerates the real energy by quite a bit.

A benchmark is another way to get from runtime to kWh.

TODO

Source: David Mytton