# @opentelemetry/propagator-ot-trace

> The OpenTelemetry OTTracepropagator implements the propagation format used by the "basic tracer" implementations from the OpenTracing project

Latest version **0.30.0** (published 2026-10-20) · Apache-2.0 license · 0 weekly downloads

## Install

```sh
npm install @opentelemetry/propagator-ot-trace
pnpm add @opentelemetry/propagator-ot-trace
yarn add @opentelemetry/propagator-ot-trace
bun add @opentelemetry/propagator-ot-trace
```

## Health

**Score 75/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; has provenance; recently updated; high maintenance score; high quality score.

Warnings: low downloads; pre 1.0.

## Facts

| | |
|---|---|
| Version | 0.30.0 |
| Published | 2026-10-20 |
| First published | 2021-02-01 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=22.15.0 |
| Dependencies | 0 |
| Unpacked size | 36.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 942 |
| Author | OpenTelemetry Authors |
| Maintainers | dyladan, pichlermarc, overbalance, npmjs-account, trentm, martinkuba |
| Keywords | opentelemetry, nodejs, tracing, profiling, monitoring, opentracing, propagator |

## Links

- npm: https://www.npmjs.com/package/@opentelemetry/propagator-ot-trace
- Repository: https://github.com/open-telemetry/opentelemetry-js-contrib
- Homepage: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/propagator-ot-trace#readme
- Issues: https://github.com/open-telemetry/opentelemetry-js-contrib/issues
- npm.io page: https://npm.io/package/@opentelemetry/propagator-ot-trace

## Recent versions

- 0.30.0 (latest) — 2026-10-20
- 0.29.0 — 2025-12-17
- 0.28.3 — 2025-09-29
- 0.28.2 — 2025-09-29
- 0.28.1 — 2025-09-01
- 0.28.0 — 2025-03-18
- 0.27.3 — 2025-02-19
- 0.27.2 — 2024-04-25
- 0.27.1 — 2023-08-14
- 0.27.0 — 2023-07-12
- 0.26.3 — 2023-05-16
- 0.26.2 — 2022-11-02
- 0.26.1 — 2022-08-09
- 0.26.0 — 2022-05-24
- 0.25.1 — 2022-01-24
- … 11 more at https://npm.io/package/@opentelemetry/propagator-ot-trace/versions

## README

# OpenTelemetry OTTracePropagator

[![NPM Published Version][npm-img]][npm-url]
[![Apache License][license-image]][license-image]

## OT Trace Format

| Header Name         | Description                                                                                                                            | Required              |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | --------------------- |
| `ot-tracer-traceid` | uint64 encoded as a string of 16 hex characters                                                                                        | yes                   |
| `ot-tracer-spanid`  | uint64 encoded as a string of 16 hex characters                                                                                        | yes                   |
| `ot-tracer-sampled` | boolean encoded as a string with the values `'true'` or `'false'`                                                                      | no                    |
| `ot-baggage-*`      | repeated string to string key-value baggage items; keys are prefixed with `ot-baggage-` and the corresponding value is the raw string. | if baggage is present |

### Interop and trace ids

The OT trace propagation format expects trace ids to be 64 bits. In order to
interop with OpenTelemetry, trace ids need to be truncated to 64 bits before
sending them on the wire. When truncating, the least significant (right-most)
bits MUST be retained. For example, a trace id of
`3c3039f4d78d5c02ee8e3e41b17ce105` would be truncated to `ee8e3e41b17ce105`.

### Baggage Notes

Baggage keys and values are validated according to [rfc7230][rfc7230-url]. Any
keys or values that would result in invalid HTTP headers will be silently
dropped during inject.

OT Baggage is represented as multiple headers where the
names are carrier dependent. For this reason, they are omitted from the `fields`
method. This behavior should be taken into account if your application relies
on the `fields` functionality. See the [specification][fields-spec-url] for
more details.

## Example Usage

```javascript
const api = require('@opentelemetry/api');
const { OTTracePropagator } = require('@opentelemetry/propagator-ot-trace');

api.propagation.setGlobalPropagator(new OTTracePropagator());
```

## Useful links

- For more information on OpenTelemetry, visit: <https://opentelemetry.io/>
- For more about OpenTelemetry JavaScript: <https://github.com/open-telemetry/opentelemetry-js>
- For help or feedback on this project, join us in [GitHub Discussions][discussions-url]

## License

Apache 2.0 - See [LICENSE][license-url] for more information.

[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions
[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/master/LICENSE
[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat
[npm-url]: https://www.npmjs.com/package/@opentelemetry/propagator-ot-trace
[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fpropagator-ot-trace.svg
[rfc7230-url]: https://tools.ietf.org/html/rfc7230#section-3.2
[fields-spec-url]: https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/context/api-propagators.md#fields

---
_Source: https://npm.io/package/@opentelemetry/propagator-ot-trace · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
