GATT Characteristic
A data value within a GATT service, with properties (read, write, notify, indicate) and optional descriptors.
What Is a GATT Characteristic?
A ATT">gatt-characteristic/" class="glossary-term-link" data-term="GATT Characteristic" data-definition="Data value within a BLE service with R/W/N properties." data-category="GATT & ATT">GATT Characteristic is the fundamental data unit inside a BLE service. It represents a single value -- such as a temperature reading, device name, or control point command -- together with metadata that describes how the value can be accessed and observed.
Characteristic Structure
Each characteristic is composed of three or more attributes in the ATT database:
- Characteristic Declaration (UUID 0x2803) -- contains the properties bitmask, the value handle, and the characteristic UUID.
- Characteristic Value -- the actual data payload, addressed by the value handle.
- Descriptors (optional) -- additional metadata such as the CCCD, Characteristic User Description, or Characteristic Presentation Format.
Properties Bitmask
The declaration includes an 8-bit properties field that advertises what operations the characteristic supports:
| Bit | Property | Description |
|---|---|---|
| 0 | Broadcast | Value included in advertising data |
| 1 | Read | Client can read the value |
| 2 | Write Without Response | Client can write without acknowledgment |
| 3 | Write | Client can write with acknowledgment |
| 4 | Notify | Server can push updates without acknowledgment |
| 5 | Indicate | Server can push updates with acknowledgment |
| 6 | Authenticated Signed Writes | Write with data signing |
| 7 | Extended Properties | Additional properties in descriptor |
SIG-Defined vs. Custom Characteristics
The Bluetooth SIG maintains a registry of standardized 16-bit characteristic UUIDs. Heart Rate Measurement (0x2A37), Battery Level (0x2A19), and Temperature Measurement (0x2A1C) are common examples. Custom characteristics use full 128-bit UUIDs and can carry arbitrary payloads up to the negotiated MTU minus the ATT header.
Data Flow
For read-heavy use cases (e.g., configuration values), the client issues ATT Read Requests. For streaming sensor data, the server typically uses notifications or indications, which requires the client to first enable them by writing to the CCCD. Write operations can be acknowledged (Write Request) or fire-and-forget (Write Command), depending on reliability requirements.
Design Tips
Keep characteristic payloads compact. If a sensor produces multiple related values (X, Y, Z axes), consider packing them into a single characteristic rather than creating three separate ones, because each additional characteristic adds service-discovery overhead and consumes ATT handles. Document the byte layout clearly so that client developers can parse the raw payload without ambiguity.
Related Terms
Related Content
Understanding BLE Architecture: Protocol Stack Overview
Getting Started…Host Business logic, user data GATT Host Service/characteristic data model ATT Host Attribute read/write protocol SMP Host…
BLE GATT Server Implementation Guide
Development…existing standard definitions before creating custom ones. Characteristic Properties Property Bit Meaning Read 0x02 Client can read…
Web Bluetooth API: BLE from the Browser
Development…}); The GATT hierarchy — server → service → characteristic → descriptor — mirrors the native BLE stack exactly. MTU…
Python BLE with Bleak: Cross-Platform BLE Scripting
Development…returns a BleakGATTServiceCollection with full service/ characteristic / descriptor hierarchy. Reading, Writing, and…
BLE OTA DFU: Over-the-Air Firmware Updates
Development…bootloader partition) receives images via a dedicated GATT characteristic and validates them using GBL (Gecko Bootloader) image…
flutter_blue_plus: Read, Write & Notify in Flutter
Development…${c.uuid} props: ${c.properties}'); } } GATT service and characteristic UUIDs can be matched against the UUID Generator for…
GATT UUID & Descriptors (0x2902) Explained — BLE
Protocols & Profiles…Characteristics , which hold the actual data values. A characteristic declaration attribute (always the first handle in the…
BLE in Healthcare: Medical Devices and Patient Monitoring
Industry Applications…scales These profiles use SIG-assigned UUIDs and defined characteristic formats, ensuring app interoperability without custom…
Frequently Asked Questions
Our glossary covers 90+ BLE technical terms organized by category. Each term includes a definition, related terms, and links to relevant chips and guides.