Last updated: May 16, 2026
Interpret Span Colors
Span colors throughout the UI derive from OpenTelemetry semantic conventions, not raw attribute values.
Interpret HTTP Status Codes
The most common source of confusion involves HTTP status codes. The same status code can produce different colors depending on whether the span represents the server side or the client side of the request.
| Status code | Span perspective | Color | Reason |
|---|---|---|---|
| 4xx | Server-side | Not red | The server handled the request correctly — the client sent a bad request |
| 4xx | Client-side | Red | The client attempted something and was rejected |
| 5xx | Server-side | Red | The server failed to handle the request |
This asymmetry follows the OpenTelemetry HTTP semantic conventions. A 4xx on the server is not the server's fault. A 4xx on the client is the client's problem.
Understand Why Spans Turn Red
-
Spans are colored red based on the OpenTelemetry span status code attribute (
otel.span.status.code = ERROR), not HTTP response codes or any other semantic convention attribute. -
If you see unexpected red spans, verify that your instrumentation sets span status codes correctly per OpenTelemetry conventions.
-
If you see spans you expect to be red but aren't, check whether your instrumentation sets the span status code at all — many libraries do not set it automatically.