OPC UA status codes: structure and the codes you meet most

How a 32-bit StatusCode is built (severity, sub-code, info bits), what Good, Uncertain and Bad mean for values, and a table of frequent codes.

Bit layout

A StatusCode is a UInt32 (OPC 10000-4, StatusCode):

BitsFieldMeaning
31–30Severity00 Good, 01 Uncertain, 10 Bad
27–16SubCodeThe specific condition (e.g. NodeIdUnknown)
15StructureChangedStructure of the value changed — re-read metadata
14SemanticsChangedMeaning (units, range) changed
11–10InfoType01 = the low bits describe a data value
9–8LimitBits00 none, 01 low, 10 high, 11 constant
7OverflowQueue overflow in a monitored item — values were lost
4–0Historian bitsRaw / calculated / interpolated, partial, extra data, multi-value

So 0x80340000 = Bad + SubCode 0x034 (NodeIdUnknown). Codes in the official list have the low 16 bits zero; a server may add info bits on top, e.g. a Good value at the high limit.

Status of a value

Every value read or received in a subscription carries a status:

  • Good — the value can be used.
  • Uncertain — usable with care (UncertainLastUsableValue: the source stopped updating; UncertainSensorNotAccurate).
  • Bad — not a measurement (BadWaitingForInitialData, BadNoCommunication, BadSensorFailure). Do not use it in control or calculations.

Frequent codes

CodeHexUsual cause
BadNodeIdUnknown0x80340000Wrong NodeId or namespace index
BadNotReadable / BadNotWritable0x803A0000 / 0x803B0000AccessLevel forbids the operation
BadUserAccessDenied0x801F0000The user lacks permission
BadTypeMismatch0x80740000Written value has a different data type (Int16 vs Int32, Float vs Double)
BadOutOfRange0x803C0000Value outside the allowed range
BadTimeout0x800A0000Request took too long
BadCommunicationError0x80050000Low-level transport problem
BadCertificateUntrusted0x801A0000Certificate not trusted
BadTooManySessions0x80560000Server session limit reached
UncertainLastUsableValue0x40900000Source stopped updating

Use the status code decoder to look up any value.

Loading the map…

Sources

  1. OPC 10000-4 Part 4: Services (v1.05) — OPC Foundation
  2. UA-Nodeset: StatusCode.csv (official list of status codes) — OPC Foundation
  3. OPC 10000-6 Part 6: Mappings (v1.05) — OPC Foundation

Updated 2026-10-02