The GAP Appearance value is a 2-byte field carried as AD Type 0x19 in Bluetooth advertising packets. It gives scanning devices an immediate, standardized way to identify what kind of device is advertising — a heart rate monitor, a keyboard, a smartwatch — without needing to connect and inspect GATT services. The same value is also exposed as theDocumentation 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.
Appearance characteristic (UUID 2A01) within the Generic Access Service (1800) so that connected centrals can query it at any time. The 16-bit appearance value encodes two sub-fields: bits 15–6 (10 bits) carry the category, and bits 5–0 (6 bits) carry the sub-category within that category. This structure allows up to 1,024 distinct device categories each with up to 64 sub-types.
Data Structure
Each entry ingap_appearance.json conforms to the following schema:
Decimal value identifying the appearance category, corresponding to bits 15–6 of the 2-byte Appearance field. For example, category
2 represents “Computer” and category 13 represents “Heart Rate Sensor”.Human-readable category name as defined in the Bluetooth Assigned Numbers document (e.g.,
"Computer", "Phone", "Heart Rate Sensor").Optional array of sub-category objects that further refine the device type within a category. Not all categories have sub-categories — for example, “Phone” (category 1) has no subcategories, while “Computer” (category 2) has 15.
Example: Computer Category
Decoding Appearance Values
The raw 2-byte Appearance value encodes both the category and the sub-category in a single unsigned 16-bit integer. To decode it:- Category =
appearanceValue >> 6(shift right by 6 bits, isolating bits 15–6) - Sub-category =
appearanceValue & 0x3F(mask with 0b00111111, isolating bits 5–0)
Lookup by Category
Common Appearances
The following table lists commonly encountered GAP Appearance categories. Devices that do not fit any defined category should use0 (Unknown).
| Category Code | Name | Has Sub-categories? |
|---|---|---|
| 0 | Unknown | No |
| 1 | Phone | No |
| 2 | Computer | Yes (Desktop, Laptop, Tablet, etc.) |
| 3 | Watch | Yes (Sports Watch, Smartwatch) |
| 4 | Clock | No |
| 5 | Display | No |
| 6 | Remote Control | No |
| 7 | Eye-glasses | No |
| 8 | Tag | No |
| 9 | Keyring | No |
| 10 | Media Player | No |
| 11 | Barcode Scanner | No |
| 12 | Thermometer | Yes (Ear Thermometer) |
| 13 | Heart Rate Sensor | Yes (Heart Rate Belt) |
| 14 | Blood Pressure | Yes (Arm, Wrist) |
| 15 | Human Interface Device | Yes (Keyboard, Mouse, Gamepad, etc.) |
The GAP Appearance value is defined in two complementary Bluetooth specification documents: the Bluetooth Core Specification Supplement (CSS) specifies the AD Type 0x19 data structure and the bit-field encoding, while the Bluetooth Assigned Numbers document provides the authoritative list of assigned category and sub-category values. The
gap_appearance.json file in this database mirrors the Assigned Numbers listing.