Tracestate

The HTTP Tracestate request header carries vendor-specific distributed tracing data as a companion to the Traceparent header, defined by the W3C Trace Context specification.

Usage

The Tracestate header extends the trace context established by Traceparent with additional data specific to individual tracing systems. While Traceparent provides the interoperable trace ID, span ID, and sampling flag, Tracestate holds supplementary information each vendor needs to maintain its own trace continuity.

The header value is a list of key-value pairs separated by commas. Each key identifies a tracing system or vendor, and the associated value contains opaque data meaningful to the corresponding system. When multiple tracing systems participate in the same request path, each appends its own entry without removing entries from other vendors. This allows heterogeneous tracing infrastructure to coexist on a single request.

Services propagating trace context forward the Tracestate header alongside Traceparent. A service updating its own vendor entry moves the entry to the front of the list. Entries from unknown vendors pass through unmodified. The specification limits the header to a maximum of 32 list members.

Values

key=value pairs

Each entry follows the key=value format. The key is a string identifying the tracing vendor or system. Simple keys contain only lowercase letters and digits. Multi-tenant keys use the format tenant@system. The value is an opaque string meaningful to the corresponding vendor. Common vendor keys include:

  • dd for Datadog APM trace metadata
  • sw8 for Apache SkyWalking trace propagation
  • rojo and congo as example vendors from the W3C specification
  • az for Azure Monitor distributed tracing

Multiple entries are separated by commas with optional whitespace.

Example

A single vendor entry from a Datadog-instrumented service. The dd key identifies Datadog, and the value carries Datadog-specific sampling and trace metadata.

Tracestate: dd=s:1;t.dm:-4;t.tid:672a542800000000

Multiple tracing vendors participate in the same request path. Each vendor maintains its own entry. The first entry belongs to the last vendor to update the trace context.

Tracestate: dd=s:1;t.dm:-4,congo=t61rcWkgMzE,rojo=00f067aa0ba902b7

A complete trace context includes both Traceparent and Tracestate headers together. The Traceparent header establishes the trace and span identity, while Tracestate carries supplementary vendor data.

Traceparent: 00-4d502c03384abc99124806be91afdfe7-a7e7f36238457189-01
Tracestate: dd=s:1;t.dm:-4,congo=t61rcWkgMzE

Takeaway

The Tracestate header carries vendor-specific trace metadata alongside the standardized Traceparent header, allowing multiple tracing systems to coexist on the same distributed request path.

See also

Last updated: March 6, 2026