Back to home

Methodology

How Verdex computes a vendor's monthly cloud carbon footprint and turns it into a 0–1000 score. Every constant on this page is cited so an auditor can replay the math against primary sources.

methodology_version: v3.1-2026-06

1. Frameworks

The calculator follows the GHG Protocol's Scope 2 (location-based) method for operational electricity, plus Scope 3 Category 11 for amortized embodied (manufacturing) emissions. Service-level energy coefficients come from Cloud Carbon Footprint, the de-facto open-source standard. Grid carbon intensities default to IEA 2023 medians and are overridden with real-time Electricity Maps data when available.

GHG Protocol Scope 2 Guidance (2015), GHG Protocol Scope 3 Standard, Cloud Carbon Footprint methodology, IEA Electricity 2023, Electricity Maps

2. Core formula & grid intensity

For each service category, we compute operational energy in kWh, multiply by the regional grid intensity at calculation time, then add embodied (manufacturing) carbon. The total emissions for a vendor is the sum across all services across all connected cloud accounts.

Energy_kWh   = usage × kWh_per_unit(service) × PUE(provider)
Scope_2_kg   = Energy_kWh × grid_intensity_g/kWh / 1000
Scope_3_kg   = embodied_factor_per_unit × usage_units      (v3, see §4)
Total_kg     = Scope_2_kg + Scope_3_embodied_kg + Scope_3_transport_kg

Grid intensity resolution (v3 Pass 2)

Annual averages misrepresent emissions because intensity varies 5–20× across the day. us-east-1 swings between ~250 g/kWh at solar peak and ~520 g/kWh on overnight gas peakers; eu-west-3 swings from 18 g/kWh (nuclear baseload) to 200+ g/kWh on winter peak imports. Verdex therefore queries Electricity Maps for the trailing-24h hourly series at calculation time and applies the time-weighted mean (trapezoidal integration over the hourly samples). The series is cached in Firestore for 1 hour per zone so concurrent verify runs share one upstream call.

region                  → Electricity Maps zone (lib/grid-intensity.ts)
zone                    → /v3/carbon-intensity/history (24 hourly samples)
hours[]                 → time-weighted mean (gCO2e/kWh)
fingerprint = sha256(canonical_json({zone, hours}))     ← in proof.json

fallback chain:
  no API key / unknown zone / upstream error
    → REGION_INTENSITY[region]   (IEA 2023 annual mean)
    → FALLBACK_REGION_INTENSITY  (world average, 400 g/kWh)

Every score document records the actual intensity that was applied (region_intensity_g_per_kwh), its provenance (region_intensity_source: hourly_trailing_24h / cache_hit / static_annual_average), and a SHA-256 fingerprint over the hourly series so a buyer's auditor can replay the exact mean.

Honest caveat. v3 ships hourly intensity, not hourly usage matching. Usage is assumed flat across the day — mathematically equivalent to multiplying monthly kWh by the time-weighted mean. True hourly matching needs hourly usage data (AWS Cost Explorer is monthly-only; Azure Carbon Optimization and GCP BigQuery export are month-grained). That lands in Pass 4 when the AWS Sustainability service GA (June 2026) adds per-hour exports. The GHG Protocol's 2026 Scope 2 consultation is moving toward hourly matching as a requirement for market-based claims by 2027.

3. Energy coefficients

ConstantValueSource
AWS_PUE1.135Amazon 2022 Sustainability Report (PUE)
GCP_PUE1.1Google Environmental Report 2023 (PUE)
AZURE_PUE1.18Microsoft Sustainability Fact Sheet (PUE)
STORAGE_KWH_PER_GB_MONTH0.00065Cloud Carbon Footprint methodology
TRANSFER_KWH_PER_GB0.001Cloud Carbon Footprint methodology
SERVERLESS_KWH_PER_GB_SECOND4.63e-7Cloud Carbon Footprint methodology
BUILD_WATTS20Cloud Carbon Footprint methodology

4. Embodied carbon — absolute per-unit factors (Scope 3 Cat 11)

v3 replaces the v2 "multiplier on operational" model with absolute per-unit factors. Why: as grids decarbonize, embodied carbon's share of lifetime data-center emissions has grown from ~25% to 40–50%. In clean-grid regions (eu-north-1 at 8 g/kWh) a multiplier-of-operational under-represents embodied by an order of magnitude. Absolute per-unit factors stay correct regardless of grid. Numbers derive from iMasons Climate Accord server LCA disclosures (~922 kg CO₂e per dual-socket server) amortized over a 4-year service life and split by vCPU + memory density.

Compute — kg CO₂e per instance-hour

Instance typekg CO₂e / hour
t3.nano0.0001
t3.micro0.0002
t3.small0.0005
t3.medium0.001
t3.large0.0025
t3.xlarge0.005
t3.2xlarge0.01
m5.large0.03
m5.xlarge0.06
m5.2xlarge0.12
c5.large0.03
c5.xlarge0.06
r5.large0.038
r5.xlarge0.076

Storage, transfer, serverless, builds

Unitkg CO₂e per unit
GB-month storage0.0005
GB transferred (network gear)0.00005
GB-second serverless3e-10
CI build minute0.00005

Fallback: when instance type can't be resolved (e.g., AWS Cost Explorer spend without per-SKU breakdown), the v2 multiplier model is used and the score is tagged as spend_to_kg_fallback with a ±35% confidence band.

5. AWS Cost Explorer fallback factors

When granular usage isn't available (no CUR, no per-instance metrics), we fall back to converting AWS spend into emissions using category-specific factors. These are derived from Cloud Carbon Footprint coefficients combined with AWS list pricing for the dominant SKU in each category. CUR ingestion gives ~5–10× tighter accuracy and is on the registry roadmap.

Categorykg CO₂e per $1
compute0.2
storage0.06
transfer0.4
database0.25
other0.15

6. Score & tier

ratio  = total_kg / size_band_benchmark
score  = clamp(round(1000 × (1 − ratio)), 0, 1000)

Gold     800–1000   (≤ 20% of benchmark)
Silver   600–799    (20–40% of benchmark)
Bronze   400–599    (40–60% of benchmark)
Tracked    0–399    (> 60% of benchmark)

Score is a ratio against a CCF reference deployment at the vendor's size band — not a percentile rank. Each band's benchmark is a deterministic deployment (vCPU + storage + egress mix) run through the same methodology described here. The registry profile says "your emissions are X% of the size-band reference," not "you beat X% of vendors." Once the registry has ≥50 published vendors per band, this benchmark becomes a fallback and a true percentile fromregistry_snapshots takes over.

Size bandReference deploymentkg/mo
indie1 vCPU + 50 GB + 10 GB egress45
startup8 vCPU + 1 TB + 250 GB egress180
scaleup50 vCPU + 10 TB + 2 TB egress1100
enterprise300 vCPU + 100 TB + 20 TB egress6500

6a. Market-based Scope 2 (dual-reporting)

The GHG Protocol's Scope 2 standard requires dual reporting: a location-based number (what was physically emitted on the grid the data centre draws from) and a market-based number (after applying the contractual REC/PPA/CFE claims the cloud provider has made). CSRD and the SEC climate-disclosure rules both expect both numbers. Every Verdex score document therefore carries:

scope_2_kg                 ← location-based (physical grid mix)
scope_2_market_kg          ← location_kg × market_factor.factor
scope_2_market_basis: {
  basis: "provider_100pct_match" | "provider_partial_cfe"
       | "inherited" | "no_claim" | "self_declared_ppa",
  factor: 0.0–1.0,
  source: <citation URL>,
  year:   <year of disclosure>,
  note:   <caveat>
}

The headline total_kg always uses the location-based number — that is the auditable physical footprint. The market number is reported alongside so a buyer can see how much of a "clean" claim depends on REC accounting vs. actually-clean grids.

Provider claims (2024 / 2023)

ProviderClaimSource
AWS100% renewable matched (annual, global)Amazon 2024
Azure100% renewable matched (annual, global)Microsoft 2024
GCPPer-region hourly CFE % (9% – 97% by region, 2023)Google 2023
Cloudflare100% renewable matched (annual, global)Cloudflare

Honest caveat. An annual 100% REC match does not mean the data centre is running on 100% renewable power at any given hour — it means the provider purchased a matching quantity of renewable energy certificates over the year. Only GCP currently publishes hourly carbon-free-energy data per region. The GHG Protocol's 2026 Scope 2 consultation is moving toward hourly matching as a 2027 requirement for market-based claims; vendors will then need to disclose at the hourly grain.

7. Confidence intervals

v3 reports a +/-% confidence interval alongside the headline number. Every score document carries aconfidence_interval_pct field picked from the table below based on how the underlying data was obtained. CSRD reporting requires uncertainty disclosure; the interval is shown as 45.4 kg ± 15%on the registry profile.

Data sourceIntervalExample
provider_api_granular±10%AWS Carbon Footprint Tool, GCP CFP, Azure Carbon Optimization
provider_api_aggregate±20%AWS Cost Explorer per-service spend; provider APIs without per-resource attribution
spend_to_kg_fallback±35%AWS Cost Explorer with >40% uncategorized spend
self_reported_no_api±50%Cloudflare (no usage API), manual CSV entry

The legacy accuracy_level enum (high / medium / low / self-reported) is still emitted on every score document for back-compat with old consumers.

8. Per-scope provenance

Each score document includes adata_sources_by_scope field recording exactly which method produced each GHG scope. Auditors should not need to guess which input fed which output:

data_sources_by_scope: {
  scope_2_location: [
    { provider: "aws", source: "cost_explorer",
      method: "spend_to_kg_per_category",
      hash_of_response: "sha256:..." }
  ],
  scope_3_embodied: [
    { provider: "imasons_meta_lca", source: "embodied_kg_per_instance_hour",
      method: "absolute_per_unit" }
  ],
  scope_3_transport: [ ... ]
}

9. What this methodology does not include

For honesty with vendors and auditors, the following are explicitlyout of scope for the current methodology version:

  • Scope 1 — direct emissions from owned vehicles or fuel combustion.
  • Scope 3 categories other than Cat 11 (purchased goods, business travel, etc.).
  • Third-party auditor signature on the calculation. Verdex signs the proof JSON itself; an external attestation is on the roadmap and not present today.
  • The full calculation breakdown lives in the signed proof JSON. Verification is off-chain — via the certificate's Ed25519 signature and its Certificate Key.
  • Renewable Energy Certificates (RECs) or market-based Scope 2 — Verdex uses location-based grid intensity only. Market-based Scope 2 is planned (Pass 3 of the methodology roadmap) alongside hourly grid matching.
  • Hourly grid intensity matching — v3 still uses long-run regional averages; weighted hourly intensity × hourly usage is planned (Pass 2) ahead of the GHG Protocol's pending 2027 standard.

10. Reproducing a vendor's score

Each vendor's public profile exposes a signedproof.json containing the full per-service breakdown, themethodology_version, and a SHA-256 fingerprint of each upstream API response we used. To reproduce: fetch the proof, look up the constants on this page for the named version, multiply the usage by the cited factors, and verify your sum matches the proof's total.

Equivalences shown elsewhere in the product

"X kg CO₂e equals Y km driven" uses 158 g/km, the European Environment Agency 2022 fleet average. Tree- and flight-equivalents (when shown) use World Bank and ICAO public factors and are noted inline.