Methodology

How emissions.dev calculates carbon emissions.

Overview

All emissions.dev calculations are:

  • GHG Protocol compliant — Corporate Value Chain (Scope 3) Standard
  • Expressed in CO₂e — using IPCC Sixth Assessment Report Global Warming Potential over 100 years (AR6 GWP100)
  • Fully traceable — every response includes a source_trail naming the exact emission factor, source dataset, year, and region
  • Well-to-Wheel by default — lifecycle emissions including fuel production (WTT) and combustion (TTW)

Standards & Frameworks

Standard Scope How We Use It
GHG Protocol Corporate Standard, Scope 3 Standard Scope categorisation in every response (ghg_protocol_scopes)
GLEC Framework v3.1 Logistics & freight emissions Primary methodology for the Freight API
ISO 14083 Transport GHG quantification Compliance flagged in freight responses
EN 16258 European transport emissions Compliance flagged in freight responses
DEFRA 2025 UK Government conversion factors Travel, Hotel, Fuel APIs
IPCC AR6 Global Warming Potential values CO₂e conversion across all APIs

Calculation Fundamentals

Global Warming Potential (GWP100)

All emission factors are converted to CO₂-equivalent (CO₂e) using IPCC Sixth Assessment Report (AR6) GWP100 values. This is the most current IPCC assessment and is required by major reporting frameworks.

Greenhouse Gas Chemical Formula GWP100 Value
Carbon dioxide CO₂ 1
Methane CH₄ 27.9
Nitrous oxide N₂O 273

Every API response includes a co2e_calculation_method field confirming ipcc_ar6_gwp100 was used.

Well-to-Wheel (WTW) Lifecycle

By default, all APIs calculate total lifecycle emissions. The response includes a lifecycle_breakdown splitting this into two stages:

Stage Field Description
Well-to-Tank (WTT) energy_provision Extraction, refining, and transport of fuel to the vehicle
Tank-to-Wheel (TTW) vehicle_operation Combustion of fuel during operation

Total Emissions = WTT + TTW

For the Electricity API, WTT represents upstream fuel emissions from power generation and is mapped to Scope 3 Category 3 (Fuel- and energy-related activities). WTT can be disabled with include_wtt=false when only Scope 2 is needed.

Data Sources & Quality

Emission Factor Sources

We use only data published by government agencies, international standards bodies, and peer-reviewed academic institutions. We do not create our own emission factors or use proprietary models.

Source Organisation Coverage Used By
GLEC Framework v3.1 Smart Freight Centre / Global Logistics Emissions Council Freight — all modes, global Freight API
DEFRA 2025 UK Government (Dept. for Energy Security & Net Zero) Travel, hotels, fuels — widely adopted internationally Travel, Hotel, Fuel APIs
Ember Global Electricity Review 2025 Ember Climate 100+ country electricity grid intensities Electricity API
EPA eGRID 2023 US Environmental Protection Agency 50 US state-level electricity grid intensities Electricity API
Cornell CHSB Index Cornell University School of Hotel Administration 60+ country hotel energy benchmarks Hotel API
ICAO International Civil Aviation Organization Flight distance and routing data Travel API

How We Validate Data

Each emission factor in our database is verified against the original source publication:

  1. Source verification — We confirm the factor appears in the named dataset, edition, and table. Every factor is traceable to a specific published document.
  2. Unit normalisation — Factors are converted to a consistent unit (kg CO₂e per activity unit) with the original units documented in the source trail.
  3. AR version check — We verify which IPCC Assessment Report the source used for GWP values. Where sources use older AR values (AR4, AR5), we note this in the source trail. DEFRA 2025 and GLEC v3.1 both use AR6.
  4. Cross-reference — Where multiple sources cover the same activity (e.g. UK electricity grid intensity from both Ember and DEFRA), we compare values to identify discrepancies.
  5. Annual review — When sources publish updated editions, we review changes and update our database. See Data Updates below.

Data Quality Tiers

Following the GLEC Framework's tiered approach:

Tier Description Example Accuracy
Tier 1 Default factors GLEC global averages for a transport mode Lowest — suitable for screening
Tier 2 Regional/vehicle-specific factors Country-specific grid intensity, vehicle class Medium — suitable for reporting
Tier 3 Primary data Your actual fuel consumption records Highest — best practice

Our API uses Tier 1 and Tier 2 data. You can improve accuracy towards Tier 3 by providing more specific parameters (vehicle type, fuel source, exact weights, specific locations).

Source Trail & Transparency

Every API response includes a source_trail array — the full audit trail of emission factors used in the calculation. This is included by default in all responses at no extra cost.

What the Source Trail Contains

Each entry in the source_trail array includes:

Field Description Example
data_category Type of factor emission_factor, grid_intensity
name Human-readable factor name Articulated HGV - Diesel
source Publishing organisation GLEC, DEFRA, Ember, EPA
source_dataset Exact dataset name and version Default fuel efficiency and GHG emission intensity values v3.1
year Factor publication/validity year 2025
region Geographic scope GLOBAL, GB, US-CA

Example Source Trail

{
  "source_trail": [
    {
      "data_category": "emission_factor",
      "name": "Articulated HGV - Diesel",
      "source": "GLEC",
      "source_dataset": "Default fuel efficiency and GHG emission intensity values v3.1",
      "year": "2025",
      "region": "GLOBAL"
    }
  ]
}

Why This Matters

The source trail exists so that:

  • Auditors can verify exactly which factor was applied and trace it back to the original publication
  • Developers can store the trail alongside calculated emissions for future reference
  • Compliance teams can demonstrate methodology transparency for GHG Protocol, CSRD, or other reporting requirements
  • Reproducibility is guaranteed — the same inputs with the same factor year will produce the same outputs

GHG Protocol Scope Mapping

Every API response includes a ghg_protocol_scopes object that pre-categorises emissions into the correct GHG Protocol scope and category. You don't need to map these yourself.

Scope & Category Coverage

GHG Protocol Scope Category Description API
Scope 1 Direct emissions Fuel combustion in owned/controlled sources Fuel API
Scope 1 Direct emissions Owned fleet vehicle operation (TTW) Freight API (asset_owner view)
Scope 2 Purchased electricity Location-based and market-based Electricity API
Scope 3, Cat. 3 Fuel- & energy-related WTT upstream emissions from fuel and electricity Fuel API, Electricity API, Freight API
Scope 3, Cat. 4 Upstream transport Freight purchased from third-party carriers Freight API (freight_buyer view)
Scope 3, Cat. 6 Business travel Flights, car journeys, ferries, hotel stays Travel API, Hotel API
Scope 3, Cat. 9 Downstream transport Outbound freight to customers Freight API (freight_buyer view)

Dual Perspective (Freight)

The Freight API provides scope mapping from two perspectives, since the same shipment falls under different scopes depending on your role:

  • freight_buyer — If you're purchasing transport services, the total emissions are your Scope 3 Category 4 (or 9 for outbound)
  • asset_owner — If you operate the vehicles, TTW is your Scope 1 and WTT is your Scope 3 Category 3

Scope 2: Location vs Market-Based

The Electricity API supports both GHG Protocol Scope 2 methods:

  • Location-based — Uses the average grid intensity for your region. Calculated automatically from Ember/EPA data.
  • Market-based — Uses supplier-specific factors or residual mix. Pass your supplier's factor via the market_based_factor parameter. Returns null when no supplier factor is provided, with a note explaining why.

API-Specific Methodology

Freight API

Formula:

Emissions (kg CO₂e) = Distance (km) × Weight (tonnes) × Emission Factor (gCO₂e/tonne-km) / 1000

Emission factors by mode:

Mode Vehicle Type Factor (gCO₂e/tkm) Source
Road Diesel HGV (articulated) 62 GLEC v3.1
Road Electric truck 25–45 GLEC v3.1 + grid intensity
Rail Electric 22 GLEC v3.1
Rail Diesel 28 GLEC v3.1
Sea Container ship 16 GLEC v3.1
Sea Bulk carrier 5 GLEC v3.1
Air Freighter / belly cargo 1,090 GLEC v3.1

Distance calculation:

  • Road: OSRM road network routing (real driving distances)
  • Sea: Maritime shipping lane distances (Suez, Panama, Cape routes)
  • Air: Great circle distance
  • Rail: Direct distance estimation

Vehicle types: small (under 3.5t), medium (3.5–7.5t), large (7.5–17t), articulated (over 17t), average (fleet default).

Fuel sources: diesel, petrol, electric, hybrid, hvo, cng, lng, hydrogen.

Service types: shared, dedicated, ftl (full truckload), ltl (less-than truckload).

Travel API

Flights:

Flight emissions are calculated using DEFRA 2025 factors with ICAO distance data. The calculation includes:

  1. Base emissions — Fuel burn per passenger-km, varying by haul type (domestic, short-haul, long-haul)
  2. Radiative forcing — A multiplier to account for the increased warming effect of emissions at high altitude. The DEFRA factors include a radiative forcing multiplier.
  3. Cabin class allocation — Seat area weighting, reflecting the greater floor space occupied by premium cabins
Cabin Class Multiplier Rationale
Economy 1.0× Baseline seat pitch
Premium Economy 1.6× ~60% more seat area
Business 2.9× Lie-flat seat area
First 4.0× Suite/private cabin area

Other modes:

The Travel API also covers car, taxi, bus, and ferry journeys. For car travel, emissions are based on vehicle size, powertrain type, and distance. Electric vehicle emissions use grid intensity data from the Electricity API's sources.

Hotel API

Hotel emissions use per-room-night factors that vary by country based on:

  • Grid carbon intensity — the primary driver, as electricity powers most hotel operations
  • Climate zone — heating and cooling energy demand
  • Hotel energy efficiency — regional building standards and practices
  • Water heating — energy for hot water supply

Data sources: DEFRA 2025 and the Cornell Hotel Sustainability Benchmarking (CHSB) Index, which provides energy consumption benchmarks for 60+ countries.

The response includes a factor object showing the per-room-night emission factor used, whether it's a country-specific value or a regional estimate, and the geographic region it applies to.

Electricity API

Formula:

Emissions (kg CO₂e) = Consumption (kWh) × Grid Intensity (gCO₂e/kWh) / 1000

Grid intensity resolution (priority order):

Priority Input Source Example
1 Cloud provider + region Electricity Maps aws + eu-west-1 → Ireland grid
2 Country US + state EPA eGRID 2023 US + CA → 179 gCO₂e/kWh
3 Country code Ember 2025 / DEFRA 2025 DE → 332 gCO₂e/kWh

The response includes source field indicating which resolution was used (cloud_region, us_state, or country), and the grid_intensity value applied.

Optional adjustments:

  • include_wtt=true (default) — Adds upstream fuel production emissions (Scope 3 Category 3), typically adding ~18% to the total
  • include_td_losses=true — Adds transmission and distribution losses (~8%), accounting for electricity lost between power station and point of use

Fuel Combustion API

Supported fuel types:

Category Fuels
Gaseous Natural gas, LPG, CNG, biogas
Liquid Diesel, petrol, kerosene, fuel oil, red diesel
Biofuels Biodiesel (B100), HVO, bioethanol, wood logs, wood pellets
Solid Coal (industrial, domestic), coking coal, petroleum coke

Each fuel type accepts the units most natural for that fuel (e.g. kWh for gas, litres for diesel, kg for solid fuels).

The response includes a gas-by-gas breakdown showing individual CO₂, CH₄, and N₂O contributions, plus the combined CO₂e total. For biofuels, the response separates biogenic CO₂ (outside Scope 1) from fossil emissions, following GHG Protocol guidance.

GHG Protocol mapping: Direct combustion emissions are mapped to Scope 1. When include_wtt=true (default), upstream fuel production emissions are separately reported as Scope 3 Category 3.

Region & Year Fallback Logic

When specific data isn't available for a requested region or time period, the API uses transparent fallback logic rather than returning an error. Fallbacks are always flagged in the response.

Electricity API

The Electricity API uses the most specific grid intensity available. If a US state is requested but not in EPA eGRID, it falls back to the US national average from Ember. If a country isn't in Ember's dataset, no fallback is applied and an error is returned — we don't guess grid intensities.

Hotel API

When a country-specific hotel factor isn't available (e.g. UAE), the API uses a regional average (e.g. Middle East) from the Cornell CHSB Index. When this happens:

  • The factor.is_estimate field is set to true
  • A notices array includes a message explaining the fallback: "Using Middle East regional average for United Arab Emirates. Country-specific data not available."

This ensures you always know when an estimate is being used versus a precise country factor.

Freight API

The Freight API uses GLEC global default factors (Tier 1) when region-specific factors aren't available. These are internationally accepted defaults specifically designed for this purpose. You can improve accuracy by providing more specific parameters (vehicle type, fuel source).

Year Handling

All APIs use the most recent factor year available from each source. The exact year used is recorded in the source_trail. We do not extrapolate or project factors into future years.

Data Updates

Current Factor Versions

Dataset Publisher Current Version Last Updated Update Cycle
DEFRA UK Government 2025 June 2025 Annual (typically June)
GLEC Framework Smart Freight Centre v3.1 (2024) 2024 Periodic (major revisions)
Ember Global Electricity Review Ember Climate 2025 February 2026 Annual
EPA eGRID US EPA 2023 2023 Annual (typically 2-year lag)
Cornell CHSB Index Cornell University 2025 2025 Annual

How Updates Work

When a source publishes a new edition:

  1. We review the changes — comparing new factors against the previous edition to identify material differences
  2. We update our database — new factors are loaded and validated against the source publication
  3. API responses use the latest factors — by default, all API calls use the most current factors available
  4. The source trail reflects the update — the year field in the source trail will show the new factor year

Reproducibility: If you need to reproduce calculations from a previous reporting period, store the API response (or at minimum the source_trail) at the time of calculation. This documents exactly which factors were used. We recommend making all calculations for a given reporting year within the same period to ensure factor version consistency.

Planned Updates

  • DEFRA 2026 — Expected June 2026. Will be integrated within one week of publication.
  • EPA eGRID 2024 — Expected late 2026.
  • GLEC Framework — Monitoring for v3.2 or subsequent revisions.