All developer tools

Bluetooth Address & OUI Lookup

Classify public and random Bluetooth device addresses, identify privacy subtypes, and resolve eligible IEEE MA-L, MA-M, MA-S, and IAB assignments.

Turn device identity into a working integration

Scan, connect, and work with GATT services through one consistent SimpleBLE API across supported platforms.

Open the SimpleBLE tutorial
Address type

Interpret the address type correctly

A Bluetooth device address is a 48-bit value, but the value alone does not establish whether it is public or random. Bluetooth transports and controller APIs report the address type separately, and that context determines how the address should be interpreted.

Select Public only when the scanner, HCI event, or packet capture identifies it as a public device address. If that information is unavailable, keep the type unknown: a prefix match can then be treated only as a possible IEEE assignment.

The Bluetooth Core Specification defines public and random device addresses in the Generic Access Profile.

Random addresses

Classify random address subtypes

When the address type is random, the two most significant bits of the address identify the subtype:

  • 00 — non-resolvable private address
  • 01 — resolvable private address (RPA)
  • 10 — reserved
  • 11 — static random address

An RPA can be associated with a bonded identity only by resolving it with the corresponding Identity Resolving Key. Its visible prefix is not an organization identifier. The same is true for static and non-resolvable random addresses: running an OUI lookup against them can produce a plausible but incorrect vendor attribution.

IEEE registry

Resolve IEEE address assignments

IEEE Registration Authority address blocks identify the organization that received an assignment. MA-L assignments use a 24-bit OUI, while MA-M uses 28 bits and MA-S uses 36 bits. Legacy IAB assignments are also 36 bits. A correct lookup therefore selects the longest matching prefix instead of stopping after the first three bytes.

The result identifies the assignment holder, which may be a chipset, module, or contract manufacturer rather than the consumer brand printed on the product. It does not establish the current owner or user of a device.

When a public address has no match, verify it against the IEEE Registration Authority public listing. Registry records evolve, and the assignment holder may differ from the product brand.

Assigned numbers

IEEE assignments are not Bluetooth Company Identifiers

An IEEE address assignment and a Bluetooth SIG Company Identifier are separate namespaces. IEEE assignments apply to eligible public device addresses. Bluetooth Company Identifiers are 16-bit values used by protocol fields such as Manufacturer Specific Data.

A company can have both identifiers, and the numeric values do not need to match. Use the address lookup for a public device address. Use the BLE Advertisement Decoder for the Company Identifier inside advertising data. The Bluetooth SIG publishes the authoritative Company Identifiers table.

Workflow

Apply a reliable lookup workflow

  1. Normalize the address into six bytes.
  2. Record the public or random address type from the same observation.
  3. For random addresses, classify the subtype and avoid vendor attribution from the visible prefix.
  4. For eligible public addresses, use the longest matching IEEE prefix.
  5. Treat the result as the address-block assignee, then confirm product identity with GATT services, advertising data, and authenticated application context.