Distance and CO2
Every segment in the API carries the distance one passenger travels on it and the CO2 that passenger's trip emits, and this page explains how both figures are made.
What the figures are
distance (in km) and co2 (in kg) 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.
- 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 means unknown. A figure is null when we can't compute it, for example for a station we hold no coordinates for. It is never 0.
- Round for display.
valueis not rounded for display: distance comes to the meter and CO2 to the gram. Round it yourself.
Every figure is modeled, and no figure says how it was made. This page is the method to point travelers at.
Reading them from the API
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.
Example: Distance and CO2 on an offer's segments
graphql
query JourneyOffer {
journeyOffer(
journeyId: "c0b652bb-ff2a-4dea-80f0-24f8f5333d36"
passengers: [{ type: ADULT }]
) {
itinerary {
... on SegmentCollection {
segments {
origin {
name
}
destination {
name
}
distance {
value
unit
}
co2 {
value
unit
}
}
}
}
}
}query JourneyOffer {
journeyOffer(
journeyId: "20080268-899b-4d1a-8aa1-9d63e89117e4"
passengers: [{ type: ADULT }]
) {
itinerary {
... on SegmentCollection {
segments {
origin {
name
}
destination {
name
}
distance {
value
unit
}
co2 {
value
unit
}
}
}
}
}
}json
{
"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" }
}
]
}
]
}
}
}{
"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" }
}
]
}
]
}
}
}Distance
A segment's distance is the track distance between its two stations, as reported by the timetable or the operator. When there is none, we estimate it from the straight lines between the train's stops × 1.13, or from the straight line between the two stations × 1.25 when the stops are unknown. The multipliers make up for the curves and detours of the track.
Once we have a track distance for a pair of stations, we keep it and reuse it in both directions, whichever operator sells the journey.
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%.
CO2
Every factor is in g CO2e (CO2 equivalent) per passenger-km, for one passenger at average occupancy. It is well-to-wheel: running the vehicle plus producing its energy or fuel. Building trains, ships and track is not counted.
We use our own factors in every country rather than the figures operators publish, 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 actually on board. Side by side, their figures would not compare.
Buses and ferries have one factor each. Trains have a factor per country, and a train that crosses a border is weighted by the distance it runs in each country. The CO2 is the distance × the factor, kept to the whole gram.
Rail, per country
A country's rail factor depends on how much CO2 its power stations emit and how much of its intercity traffic still runs on diesel. Electric trains carry the emissions of the power they draw, at the country's own generation mix in 2024. Diesel trains carry a fixed 60 g per passenger-km. The two are weighted by the country's diesel share.
The electricity figures come from Ember, a UK not-for-profit that publishes yearly electricity data for every country.
How the rail factor is calculated
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) |
| 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) |
* No source splits intercity from regional there, so the all-services share is used. It likely overstates intercity trains.
Factors are shown rounded to 0.1 g. The CO2 is computed from the unrounded factor.
When Ember publishes final data for the next year, we update every country's grid intensity and the default. The method stays the same.
Other modes 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 |
Related Documentation
- Key Concepts: Journeys, segments and offers
- Getting Offers: Pricing a journey
- Orders: What an order keeps