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_trailnaming 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:
- Source verification — We confirm the factor appears in the named dataset, edition, and table. Every factor is traceable to a specific published document.
- Unit normalisation — Factors are converted to a consistent unit (kg CO₂e per activity unit) with the original units documented in the source trail.
- 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.
- 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.
- 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_factorparameter. Returnsnullwhen 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:
- Base emissions — Fuel burn per passenger-km, varying by haul type (domestic, short-haul, long-haul)
- Radiative forcing — A multiplier to account for the increased warming effect of emissions at high altitude. The DEFRA factors include a radiative forcing multiplier.
- 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 totalinclude_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_estimatefield is set totrue - A
noticesarray 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:
- We review the changes — comparing new factors against the previous edition to identify material differences
- We update our database — new factors are loaded and validated against the source publication
- API responses use the latest factors — by default, all API calls use the most current factors available
- The source trail reflects the update — the
yearfield 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.