Carbonara

Freight CO₂e following the GLEC Framework and ISO 14083

How Carbonara calculates

Carbonara calculates the greenhouse gas emissions of freight transport following the approach of the GLEC Framework v3.2 (Smart Freight Centre, 2025) and ISO 14083:2023. It is source-available (PolyForm Noncommercial) at https://github.com/majidkabir/carbonara; this MCP server is the public service at https://carbonara-co2.org calling it. It is not certified or verified against ISO 14083: its results are calculations for the user's own reporting process.

Scope

Inputs

Methods (one per leg)


1. Intensity (default value, ISO 14083 7.2.5): tonne-km = tonnes × distance; emissions = tonne-km × intensity (g CO2e/tkm) × DAF ÷ 1000. The intensity is a published average for the vehicle type.
2. Load model (modelled, ISO 14083 7.2.4), for trucks when load_tonnes or load_factor is given: emissions per vehicle-km at that load, interpolated between DESNZ's 0 %, 50 % and 100 % laden values, plus empty_trip_factor × the empty vehicle's emissions, divided by the tonnes on board: g/tkm = (E(load) + empty_trip_factor × E(empty)) / (payload_t × load_factor). Important: load_factor is a share of the model's payload_t, DESNZ's *average full load* (17.9 t for an articulated truck over 33 t), not the truck's rated payload as in GLEC or EcoTransIT (about 26 t for a 40 t truck). So load_factor: 0.6 means 10.7 t here, but about 16 t in GLEC's terms. When the weight on the truck is known, give load_tonnes instead: it means the same in every tool. Results say how many tonnes a load factor meant. Loads above payload_t are allowed up to 1.6 × it. Vans have no load model.
3. Fuel (primary data, ISO 14083 7.2.3), when the leg has measured fuel (fuel, amount in the fuel's unit, optional vehicle_tonne_km of the whole trip): emissions = amount × fuel factor × share, share = shipment tonne-km ÷ vehicle_tonne_km (1 when not given).
4. Energy (modelled), for electric trains or trucks, with energy_kwh_per_tkm and country (ISO alpha-3): kWh per tonne-km × that country's grid intensity, all well-to-tank. There is no default kWh figure: the user must give the operator's.

Hubs add tonnes × hub g CO2e/t ÷ 1000 (WTW only). Intensity per tonne-km covers transport only.

Distances

A leg's distance is distance_km when given. Otherwise it is routed from the coordinates:

ModeRouteDistance type
roadOSRM on OpenStreetMap roads (worldwide on the public service, in overlapping regions joined where they overlap)shortest feasible (SFD)
railOSRM with a freight-train profile on OpenStreetMap railwaysSFD
inland waterwayOSRM with a barge profile on navigable OpenStreetMap waterways (CEMT class I+)SFD
seashortest path on Eurostat's SeaRoute maritime networkSFD
airgreat circlegreat-circle (GCD)

Without a router for a mode, Carbonara falls back to the great circle; for container ships and inland waterways, whose factors are per actual distance, a leg given only by coordinates is then refused instead (give distance_km). The public service routes road, rail, inland waterway and sea as in the table. Each leg reports its distance_method (given, osrm, sea_network, great_circle, …) and distance_type.

Distance adjustment factors (DAF)

Emissions are tonne-km × intensity × DAF (GLEC p.22). A DAF applies when the leg's distance type differs from the type the factor was built on (distance_basis):

ModeFrom → toDAFSource
seaSFD → actual× 1.15GLEC p.51, citing Clean Cargo
airactual flown → GCD− 95 kmGLEC p.38
inland waterwaySFD → actual× 1GLEC: the network leaves little room for deviation

A mismatch without a DAF is an error, not a silent guess. Each leg reports daf and daf_source.

Missing road legs (on by default)

Emission factors

The default dataset is desnz-2026,nl-iww-2026,eu-mrv-2024:

Known limitations:

Data quality

Each leg and hub has a data_type (ISO 14083 3.3.3): primary (measured fuel, or the operator's own intensities), modelled (load or energy model) or default (published average). The result's primary_data_share is the share of WTW from primary data.

Reading a result

Errors

Presenting results

The public service

At https://carbonara-co2.org, without an account: single shipments and batches of up to 100 shipments, 2,000 shipments a day per visitor. A free account (email sign-in) gives an API key for 100,000 shipments a day and batches of up to 10,000.