Switch to dark mode

Distance and CO2e

All trips on All Aboard come with two figures: how far the passenger travels, and their share of the journey's greenhouse gas emissions, in CO2e. Our methodology for calculating these two numbers is documented on this page.

Building with the API? Jump to the implementation section.

Methodology overview

  • Per passenger. Both distance and CO2e are per passenger and can be multiplied to get a booking total.
  • Per segment. Each train, bus or ferry has its own numbers. The trip total is the sum of its segments.
  • Estimated, not measured. There are no real measurements of the emissions of a particular train on a specific day, so we estimate them from distance, published emission factors and each country's rail network.
  • Construction is not included. Our figures cover running the vehicle and producing its electricity or fuel. Building tracks and trains is not counted. The one exception is electricity, whose figures are based on the power system's whole lifecycle, including building power stations.
  • One method for every operator. Operators calculate their emissions in different ways, so we use one method for all of them. That way, figures can be added up and compared.
  • Grid electricity. Electric trains count the average electricity mix of the country they run in, not the green electricity an operator may buy.
  • Updated yearly. We update the electricity figures as soon as Ember releases new yearly data. Booked trips keep the figures they were priced with.

For example, one passenger on the train from Stockholm to Göteborg travels about 455 km, and their share of the train's emissions is about 1.2 kg CO2e.

Distance

We get the track distance between a segment's two stations from our timetable data, or directly from the operator. When neither has a track distance, we apply a distance formula: straight lines between the train's intermediate stops, multiplied by a factor of 1.13. If there are no known intermediate stops, we use the straight line between the two stations and the multiplier increases to 1.25. The multipliers make up for the curves and detours of the track, and were calibrated on 150 known routes in 27 countries.

How the multipliers were calibrated

Applied to Factor Evidence
The sum of straight lines from stop to stop × 1.13 Best single value over 150 legs in 27 countries. The per-leg median is 1.131, and with 1.13, 89% of legs are within ±10%. Country medians run from 1.03 (EE) to 1.26 (CZ), so the error is about ±10% by country.
The straight line between a segment's two ends × 1.25 Median of 152 legs (1.247). One value for every country, because a line's detours follow the terrain, not the border.

The reference track distances for this calibration come from OpenRailRouting on OpenStreetMap. They were first checked on 18 legs against track distances reported by the timetable or operator in Norway, Germany, Sweden and the UK: median ratio 1.0005, every leg within −2.1% to +1.2%.

CO2e emissions

We get the CO2e by multiplying the distance by an emission factor for the trip's trains, buses or ferries. Buses and ferries have fixed factors, while trains have a factor per country. A train that crosses a border is weighted by the distance it runs in each country.

Every factor is in g CO2e (CO2 equivalent, which counts the other greenhouse gases too) per passenger-km, for one passenger at average occupancy. It is well-to-wheel, meaning that it covers running the vehicle plus producing its energy or fuel. Building tracks, trains and ships is not counted. The exception is electricity: its figures are based on the power system's whole lifecycle, including building power stations.

We do not directly rely on the factors that operators may publish, but use that information when calculating our own factors for every country. This is because operators measure different things. Some count building the trains and track, and others leave it out. Some divide a train's emissions by its seats, as if every seat were taken, and others by the passengers that are likely to be on board. Side by side, their figures do not compare, and summarizing the data for reporting does not work.

Green electricity

Many operators buy renewable electricity for their trains and report emissions close to zero, for example DB in Germany and NS in the Netherlands. That is a market-based figure and it counts the electricity the operator has bought. We use a location-based figure instead, which counts the average mix of the power grid the train uses. That is why our figure for a German or Dutch train is higher than the operator's own. Location-based figures work the same way for every operator, and they don't depend on the operators' electricity contracts that we can't check.

Rail calculations per country

A country's rail factor depends on how much CO2e its power stations emit and how much of its intercity traffic still runs on diesel. Electric trains account for the emissions of the power they use, at the country's own electricity generation mix. Diesel trains have a fixed 60 g per passenger-km, weighted by the country's diesel share.

The electricity figures come from Ember, a UK not-for-profit that publishes yearly electricity data for countries.

How the rail factor is calculated

The formula is: factor = (1 − d) × E × L × I + d × D

Input Value What it is Source
E 0.07 kWh/pkm Electricity an intercity train draws from the grid per passenger-km, at about half occupancy. Median of intercity measurements brought to grid intake (range 0.045–0.095). Regional trains use the same value, although they run 1.5–2× higher, because the train type is not reliably known per segment. KTH, Andersson & Lukaszewicz 2006 (X2000 0.077, Signatur 0.079); DB UmweltMobilCheck Grundlagenbericht 2019 (IC, ICE ≤200 km/h); SBB reporting 2025 (Fernverkehr 5.94 kWh/100 pkm); SJ fleet average via Travel & Climate v5.1; EEA TERM 2020, table A1.7
L 1.04 High-voltage transmission loss between the power station and the railway's grid intake KTH 2006 (about 4%); Eurostat transmission losses 1–3.4%
I per country Lifecycle emissions per kWh of the country's own electricity generation in 2024, imports excluded Ember, Yearly Electricity Data (files dated 22 Sep 2026, CC BY 4.0)
d per country Share of intercity passenger-km that runs on diesel per country, below
D 60 g/pkm Intercity diesel train, well-to-wheel COWI for DSB 2025: IC3 53.2, IC4 72.2. ORR 2024-25: CrossCountry 66.5, Grand Central 66.5, Chiltern 49.0 (converted from tank-to-wheel with the DESNZ 2025 gas-oil factor, × 1.227)

Factors per country

Country Factor (g CO2e/pkm) Grid intensity 2024 (gCO2e/kWh) Diesel share Basis for the diesel share
Austria 7.5 103.457 0 intercity is electric
Belgium 9.2 126.931 0 intercity is electric
Bulgaria 22.8 279.059 0.062 all services, gross tonne-km 2021 (UIC RAILISA, BDZ)*
Croatia 27.2 170.527 0.31 all services, gross tonne-km 2024 (Eurostat); Zagreb–Split is diesel south of Oštarije
Czechia 36.2 414.181 0.204 all services, gross tonne-km 2024 (Eurostat)*
Denmark 37.3 132.167 0.55 DSB long-distance and regional passenger-km 2025 (DSB Annual Report)
Estonia 60.0 344.165 1 long-distance lines are diesel (IRG-Rail 2026; 225 km electrified)
Finland 4.9 66.905 0 intercity is electric
France 2.9 40.337 0 intercity is electric
Germany 24.7 339.873 0 intercity is electric
Greece 29.6 321.806 0.169 all services, train-km 2024 (IRG-Rail)*
Hungary 17.6 183.894 0.091 all services, gross tonne-km 2024 (UIC RAILISA, MÁV)*
Ireland 60.0 270.750 1 Irish Rail intercity is all diesel; only DART is electric (NTA 2023)
Italy 20.5 281.435 0 intercity is electric
Latvia 60.0 134.521 1 long routes are diesel (Vivi)
Lithuania 40.4 116.097 0.62 all services, gross tonne-km 2024 (Eurostat)
Luxembourg 9.2 125.828 0 intercity is electric
Netherlands 18.3 250.768 0 intercity is electric
Norway 7.9 29.643 0.1 Nordlandsbanen, 9–13% of long-distance passenger-km (SSB table 10484)
Poland 44.3 608.468 0 intercity is electric
Portugal 8.1 110.639 0 intercity is electric
Romania 29.9 259.697 0.267 all services, gross tonne-km 2017 (CFR Călători)*
Slovakia 18.7 97.188 0.219 all services, gross tonne-km 2022 (Eurostat)*
Slovenia 35.4 230.493 0.43 all services, gross tonne-km 2024 (Eurostat)*
Spain 13.5 146.258 0.057 all services, gross tonne-km 2024 (Eurostat)*
Sweden 2.5 34.908 0 intercity is electric
Switzerland 2.5 34.592 0 intercity is electric
United Kingdom 29.0 216.473 0.3 intercity operators 21–38% (ORR 2024-25, tables 6103/6108)

* Sources don't split intercity from regional there, so an all-services share is used. This likely overstates intercity trains.

Factors are shown rounded to 0.1 g, but our CO2e calculations are done with the unrounded numbers.

When Ember publishes final yearly data, we update the grid intensities in the country list and the default. Figures on booked trips don't change: an order keeps each segment's distance and CO2e as they were when the journey was priced.

Night trains, buses, ferries and the default

Value Source
Night train × 1.2 on the rail factor the segment would otherwise get (country or border-weighted) UIC Night Trains 2.0 (DB International for UIC, 2013); European Parliament TRAN study 2017; Back-on-Track 2022. Range 1.0 (couchettes) to 2.0 (2-berth sleepers)
Bus and coach, night buses included 30 g UBA, TREMOD 6.71B (10/2025): long-distance coach (Linienbus Fernverkehr) 2024, 53% occupancy. Cross-checks: ADEME 33, DESNZ 2025 34
Ferry, per foot passenger 36 g Fraunhofer ISI and CE Delft for the EEA (2020), table 7.6: RoPax ferries 2018, 35.9 g, from EU MRV fuel reporting
Default: a country not in the table, or unknown 15.4 g The rail calculation with Ember's EU-27 grid intensity for 2024, 211.647 gCO2e/kWh, and no diesel

Standards and reporting

We don't claim that our method follows a standard. It makes the same main choices as ISO 14083 (the international standard for transport emissions) in the way that it's also well-to-wheel, it leaves out building vehicles and infrastructure, and it gives emissions per passenger-km. It differs from ISO 14083 in two ways:

  • The electricity figures are based on the power system's whole lifecycle, including building power stations.
  • Energy used at stations is not counted.

For company reporting under the GHG Protocol, the figures fit the distance-based method for business travel (Scope 3, category 6). We provide modeled averages, not figures supplied by the operator. Electricity is location-based, as explained under Green electricity.

Since booked trips may be cancelled, our reporting tools account for this and leave out cancelled trips.

Using the figures in the API

distance (in km) and co2 (in kg CO2e) are fields on every Segment, wherever segments appear: timetable journeys from journeys, offers from journeyOffer and their parts, booked offer parts, and the segments of a JourneyOrderItem on an order.

Both fields are a Quantity: a value and the unit to print after it ("km" for distance, "kg" for co2). Treat unit as a display symbol, not a closed set. The field is named co2, but its value is CO2e, so label it "kg CO2e" where you show it.

  • Per passenger. Each figure is for one passenger. Multiply by the number of passengers for a party.
  • Per segment. A journey's total is the sum of its segments, and unknown if any segment is unknown.
  • Null only on older orders. Every segment has both figures, except on orders placed before these figures were introduced, which carry null. A figure is never 0.
  • Round for display. value is not rounded for display: distance comes to the meter and CO2e to the gram. Round it yourself.

No figure says how it was made, so link travelers to this page when they want to know.

Example: Distance and CO2e on an offer's segments

query JourneyOffer {
  journeyOffer(
    journeyId: "5dd36018-2796-43b7-bafb-05b136b461d2"
    passengers: [{ type: ADULT }]
  ) {
    itinerary {
      ... on SegmentCollection {
        segments {
          origin {
            name
          }
          destination {
            name
          }
          distance {
            value
            unit
          }
          co2 {
            value
            unit
          }
        }
      }
    }
  }
}
{
  "data": {
    "journeyOffer": {
      "itinerary": [
        {
          "segments": [
            {
              "origin": { "name": "Stockholm Central" },
              "destination": { "name": "Göteborg Central" },
              "distance": { "value": 455.4, "unit": "km" },
              "co2": { "value": 1.157, "unit": "kg" }
            }
          ]
        }
      ]
    }
  }
}
Key Concepts
Journeys, segments and offers.
Getting Offers
Pricing a journey.
Orders
What an order keeps.