Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/nordicsemi/bluetooth-numbers-database/llms.txt

Use this file to discover all available pages before exploring further.

GATT Characteristics are the fundamental data-bearing elements of Bluetooth Low Energy. Where a GATT Service acts as a container, a characteristic holds the actual value — for example, the Heart Rate Measurement characteristic (UUID 2A37) inside the Heart Rate Service carries the live BPM reading from the sensor. Each characteristic has a UUID that identifies what kind of data it carries, a set of properties (read, write, notify, indicate), and optionally one or more descriptors that further describe the value. The Bluetooth Numbers Database includes 700+ characteristic entries: all SIG-standardized characteristics from the GATT Specification Supplement, plus proprietary 128-bit characteristics contributed by Nordic Semiconductor and other vendors.

Data Structure

Each entry in characteristic_uuids.json conforms to the following schema:
uuid
string
required
The UUID identifying the characteristic. SIG-assigned characteristics use a 4-character hexadecimal string in the range 2A002BFF (e.g., "2A37" for Heart Rate Measurement). Proprietary characteristics use a 36-character 128-bit UUID string (e.g., "EF680201-9B35-4933-9B10-52FFA9740042"). All characters are uppercase hex.
name
string
required
Human-readable characteristic name as defined in the GATT Specification Supplement or the originating vendor’s documentation (e.g., "Heart Rate Measurement", "Battery Level").
identifier
string
required
Uniform Type Identifier in reverse-dot notation that provides a globally scoped, machine-readable label. SIG-defined characteristics use the org.bluetooth.characteristic.* prefix (e.g., org.bluetooth.characteristic.heart_rate_measurement). Vendor-defined characteristics use the vendor’s reverse domain.
source
string
required
Identifies the organization that defined the characteristic UUID. Common values include:
  • gss — GATT Specification Supplement (Bluetooth SIG-defined)
  • nordic — Nordic Semiconductor
  • apple — Apple Inc.
  • microbit — Micro:bit Educational Foundation
  • adafruit — Adafruit Industries

Example Entries

[
  {
    "name": "Battery Level",
    "identifier": "org.bluetooth.characteristic.battery_level",
    "uuid": "2A19",
    "source": "gss"
  },
  {
    "name": "Heart Rate Measurement",
    "identifier": "org.bluetooth.characteristic.heart_rate_measurement",
    "uuid": "2A37",
    "source": "gss"
  },
  {
    "name": "Temperature Measurement",
    "identifier": "org.bluetooth.characteristic.temperature_measurement",
    "uuid": "2A1C",
    "source": "gss"
  },
  {
    "name": "Body Sensor Location",
    "identifier": "org.bluetooth.characteristic.body_sensor_location",
    "uuid": "2A38",
    "source": "gss"
  }
]

Common Lookups

import characteristics from './v1/characteristic_uuids.json';

// Look up Heart Rate Measurement by UUID
const heartRateMeas = characteristics.find(c => c.uuid === '2A37');
console.log(heartRateMeas.name);
// "Heart Rate Measurement"

// Look up Battery Level
const batteryLevel = characteristics.find(c => c.uuid === '2A19');
console.log(batteryLevel.identifier);
// "org.bluetooth.characteristic.battery_level"

// Look up Temperature Measurement
const tempMeas = characteristics.find(c => c.uuid === '2A1C');
console.log(tempMeas.name);
// "Temperature Measurement"

// Search by partial name
const deviceNameChar = characteristics.find(c =>
  c.name.toLowerCase().includes('device name')
);
console.log(deviceNameChar.uuid);
// "2A00"

Characteristics vs. Services

Understanding the relationship between services and characteristics is key to working with GATT:
  • A service (e.g., Heart Rate Service, UUID 180D) is a logical grouping that declares a device capability.
  • Characteristics (e.g., Heart Rate Measurement 2A37, Body Sensor Location 2A38) live inside the service and carry the actual data values.
  • A characteristic has properties that govern access: READ for polling a value, WRITE or WRITE WITHOUT RESPONSE for sending commands, NOTIFY or INDICATE for server-initiated updates.
  • The relationship is hierarchical: one service → zero or more characteristics → zero or more descriptors per characteristic.
When you discover services and characteristics on a connected peripheral, you match the discovered UUIDs against this database to display meaningful names rather than raw hex strings.

Source Values

SourceMeaning
gssDefined in the Bluetooth GATT Specification Supplement (official SIG standard)
nordicDefined by Nordic Semiconductor for Thingy, nRF Connect SDK, or DFU profiles
appleDefined by Apple for ANCS or AMS profiles
microbitDefined by the Micro:bit Educational Foundation
adafruitDefined by Adafruit Industries for CircuitPython BLE libraries
16-bit characteristic UUIDs with values in the range 0x2900–0x29FF are reserved by Bluetooth SIG for GATT Descriptors — not characteristics. SIG-assigned characteristic UUIDs begin at 0x2A00. Any proprietary or vendor-specific characteristic that is not registered with Bluetooth SIG must use a 128-bit UUID to avoid collisions with the SIG-reserved space.

Build docs developers (and LLMs) love