What is the Footprint Protocol?
The Footprint Protocol is an open metadata standard that lets any product webpage
declare its carbon footprint using HTML <meta> tags.
It works like the OpenGraph Protocol:
add a few lines to your page's <head> and any tool,
scraper, or search engine can read your product's environmental data without any API contract.
The fp: namespace
covers the essentials (CO2e value, unit, scope, and lifecycle breakdown)
while staying minimal enough to embed in five lines. No special server, no registry,
no vendor lock-in. Just HTML.
Whether you're a manufacturer publishing an LCA, a retailer adding sustainability data to product pages, or a browser extension surfacing carbon info to shoppers, the Footprint Protocol gives you a single, unambiguous format to read and write.
Basic Metadata
Three properties are required. Every Footprint Protocol implementation must include all three.
fp:product string The name of the product whose footprint is described. fp:co2e float CO₂ equivalent value. Must be a valid decimal number. fp:co2e:unit enum Unit of the CO₂e value. One of: kg, g, t. <html> <head> <!-- Footprint Protocol: Required --> <meta property="fp:product" content="Fairphone 5" /> <meta property="fp:co2e" content="23.6" /> <meta property="fp:co2e:unit" content="kg" /> </head> </html>
Recommended Metadata
These properties are optional but strongly encouraged. They provide the context tools need to compare footprints fairly and trace claims back to their source.
fp:scope enum Lifecycle scope. One of: lifecycle, production, use, disposal. fp:per string Functional unit. e.g. unit, year, km, kWh. fp:methodology string Standard used. e.g. ISO 14067, GHG Protocol. fp:certifier url URL of the certifying or auditing body. fp:verified:date date ISO 8601 date of the last verification. <!-- Recommended metadata --> <meta property="fp:scope" content="lifecycle" /> <meta property="fp:per" content="unit" /> <meta property="fp:methodology" content="ISO 14067" /> <meta property="fp:certifier" content="https://certifier.example.org/cert/12345" /> <meta property="fp:verified:date" content="2025-01-15" />
Lifecycle Breakdown
When you have granular lifecycle assessment data, publish the individual phase
contributions. All values are in the same unit as fp:co2e:unit.
fp:materials float Raw material extraction and processing. fp:manufacturing float Manufacturing and assembly. fp:transport float Transport and distribution. fp:use float Use phase (energy consumption, consumables). fp:disposal float End-of-life treatment and disposal. <!-- Optional lifecycle breakdown (GHG Protocol phases) --> <meta property="fp:materials" content="8.2" /> <meta property="fp:manufacturing" content="4.1" /> <meta property="fp:transport" content="2.8" /> <meta property="fp:use" content="6.9" /> <meta property="fp:disposal" content="1.6" />
Complete Example
A full-page implementation with all recommended and optional properties. Based on the Fairphone 5 lifecycle assessment.
<html> <head> <title>Fairphone 5: Sustainable Smartphone</title> <!-- Footprint Protocol v0.1 --> <!-- Required --> <meta property="fp:product" content="Fairphone 5" /> <meta property="fp:co2e" content="23.6" /> <meta property="fp:co2e:unit" content="kg" /> <!-- Recommended --> <meta property="fp:scope" content="lifecycle" /> <meta property="fp:per" content="unit" /> <meta property="fp:methodology" content="ISO 14067" /> <meta property="fp:certifier" content="https://tco-certified.org/cert/fp5-2025" /> <meta property="fp:verified:date" content="2025-03-01" /> <!-- Lifecycle breakdown --> <meta property="fp:materials" content="8.2" /> <meta property="fp:manufacturing" content="4.1" /> <meta property="fp:transport" content="2.8" /> <meta property="fp:use" content="6.9" /> <meta property="fp:disposal" content="1.6" /> </head> <body> <!-- product page content --> </body> </html>
Parse it in your language
Official and community parsers for reading fp: metadata from HTML.
footprint-parser
Parse Footprint Protocol meta tags from any HTML string. Returns a typed
FootprintData struct
with validation. Available as a library and a CLI tool.
use footprint_parser::parse;
let html = r#"
<meta property="fp:product" content="Fairphone 5" />
<meta property="fp:co2e" content="23.6" />
<meta property="fp:co2e:unit" content="kg" />
"#;
let data = parse(html)?;
println!("{}: {} {:?}", data.product, data.co2e, data.co2e_unit);
// Fairphone 5: 23.6 Kg cargo add footprint-parser footprint product.html Built a parser in another language?
Open a GitHub issue to get listed here