Skip to content
AF

Bluetooth GATT characteristics for fitness and health devices

97 characteristics · 44 byte-layout pages · 13 services · read from the Bluetooth SIG’s repository on 2026-10-17 · commit 408f4a0 (2026-10-14)

The Bluetooth SIG publishes GATT characteristic structures as YAML files in its public repository — 278 files alongside the 512 characteristic UUIDs it lists. This reference reads that repository for 97 characteristics chosen for fitness and health devices: 90 have a published structure, the 44 with at least two fields or a flags field get a page laying out every field’s type and size, its offset where every earlier size is fixed, and its unit and the Flags bit that makes it present where the SIG’s text states them, and 7 have no structure file at all. The SIG’s files tie characteristics to a service only in permitted-characteristics lists, which here means the 39 User Data characteristics.

This is the wire-format companion to the connected-devices guides, which cover pairing, subscribing and testing: Connect a Bluetooth Heart Rate Monitor to Your App, Reading Cycling Power, Cadence, and Speed Sensors in an App, What Is FTMS? The Bluetooth Fitness Machine Service, Web Bluetooth for Fitness Apps in the Browser, Core Bluetooth for Fitness Devices on iOS and Testing Bluetooth Fitness Device Integrations.

What a GATT service and characteristic are

Google’s Android documentation (“Bluetooth Low Energy”, last updated 2026-02-26, read 2026-10-17) defines the terms this way:

Generic Attribute Profile (GATT)
“The GATT profile is a general specification for sending and receiving short pieces of data known as "attributes" over a BLE link. All current BLE application profiles are based on GATT.”
Service
“A service is a collection of characteristics. For example, you could have a service called "Heart Rate Monitor" that includes characteristics such as "heart rate measurement."”
Characteristic
“A characteristic contains a single value and 0-n descriptors that describe the characteristic's value. A characteristic can be thought of as a type, analogous to a class.”
Descriptor
“Descriptors are defined attributes that describe a characteristic value. For example, a descriptor might specify a human-readable description, an acceptable range for a characteristic's value, or a unit of measure that is specific to a characteristic's value.”

Source: developer.android.com. The Bluetooth SIG’s repository keeps the two kinds of identifier in separate lists — 76 service UUIDs in assigned_numbers/uuids/service_uuids.yaml and 512 characteristic UUIDs in assigned_numbers/uuids/characteristic_uuids.yaml — and publishes GATT Specification Supplement files, one per characteristic it describes: 278 of them in gss/, each listing the fields of that characteristic’s value. Those files are what the pages here are built from.

The services in scope (13)

Chosen for heart rate monitors, cycling power and speed-and-cadence sensors, running sensors, fitness machines (treadmills, cross trainers, step and stair climbers, rowers, indoor bikes), weight scales, body composition analysers, glucose meters and CGMs, blood pressure monitors, pulse oximeters and thermometers, plus User Data. Names and UUIDs as assigned_numbers/uuids/service_uuids.yaml lists them. Only a permitted-characteristics file says which characteristics belong to a service, and only User Data has one among these.

UUIDServiceIdentifierCharacteristics the SIG lists for it
0x1808Glucoseorg.bluetooth.service.glucoseNot listed in the repository
0x1809Health Thermometerorg.bluetooth.service.health_thermometerNot listed in the repository
0x180DHeart Rateorg.bluetooth.service.heart_rateNot listed in the repository
0x1810Blood Pressureorg.bluetooth.service.blood_pressureNot listed in the repository
0x1814Running Speed and Cadenceorg.bluetooth.service.running_speed_and_cadenceNot listed in the repository
0x1816Cycling Speed and Cadenceorg.bluetooth.service.cycling_speed_and_cadenceNot listed in the repository
0x1818Cycling Powerorg.bluetooth.service.cycling_powerNot listed in the repository
0x181BBody Compositionorg.bluetooth.service.body_compositionNot listed in the repository
0x181CUser Dataorg.bluetooth.service.user_data39, in uds_permitted_characteristics.yaml (marked below)
0x181DWeight Scaleorg.bluetooth.service.weight_scaleNot listed in the repository
0x181FContinuous Glucose Monitoringorg.bluetooth.service.continuous_glucose_monitoringNot listed in the repository
0x1822Pulse Oximeterorg.bluetooth.service.pulse_oximeterNot listed in the repository
0x1826Fitness Machineorg.bluetooth.service.fitness_machineNot listed in the repository

Every characteristic in scope (97)

In UUID order, the order of assigned_numbers/uuids/characteristic_uuids.yaml. A name links to its byte-layout page where the structure has at least two fields or a flags field; a structure with one field opens in place. The last column shows a service only where a permitted-characteristics file names one.

UUIDCharacteristicStructureService per the SIG’s lists
0x2A08Date Timeorg.bluetooth.characteristic.date_time6 fields—
0x2A0DDST Offsetorg.bluetooth.characteristic.dst_offset
Structure

The DST Offset characteristic is used to represent daylight saving time information associated with time.The structure of this characteristic is defined below.

DST Offset uint8 · 1

Present when: Always (fixed size)

0: Standard Time2: Half an hour Daylight Time (+ 0.5h)4: Daylight Time (+ 1h)8: Double Daylight Time (+ 2h)255: DST offset unknownAll other values: Reserved for Future Use

Source: gss/org.bluetooth.characteristic.dst_offset.yaml

1 field—
0x2A0ETime Zoneorg.bluetooth.characteristic.time_zone
Structure

The Time Zone characteristic is used to represent the time difference in 15-minute increments between local standard time and UTC.The structure of this characteristic is defined below.

Time Zone sint8 · 1

Present when: Always (fixed size)

This field represents the offset from UTC in number of 15-minute increments.Valid range from -48 to +56.A value of -128 means that the time zone offset is not known.All other values are Reserved for Future Use.The offset defined in this characteristic is constant regardless of whether daylight savings is in effect.

Source: gss/org.bluetooth.characteristic.time_zone.yaml

1 field—
0x2A18Glucose Measurementorg.bluetooth.characteristic.glucose_measurement7 fields · Flags—
0x2A1CTemperature Measurementorg.bluetooth.characteristic.temperature_measurement5 fields · Flags—
0x2A1DTemperature Typeorg.bluetooth.characteristic.temperature_type
Structure

The Temperature Type characteristic is used to represent the location of a temperature measurement. These values correspond to the Temperature Type descriptions used in IEEE 11073-10408-2008 [ieee_11073_10408].The structure of this characteristic is defined below.

Temperature Type Description uint8 · 1

Present when: Always (fixed size)

See § temperature_text_description.

Temperature Type Description

The values of this field are defined below.

ValueDescription
0Reserved for Future Use
1Armpit
2Body (general)
3Ear (usually earlobe)
4Finger
5Gastrointestinal Tract
6Mouth
7Rectum
8Toe
9Tympanum (ear drum)
10–255Reserved for Future Use

Source: gss/org.bluetooth.characteristic.temperature_type.yaml

1 field—
0x2A1EIntermediate Temperatureorg.bluetooth.characteristic.intermediate_temperature5 fields · Flags—
0x2A21Measurement Intervalorg.bluetooth.characteristic.measurement_interval
Structure

The Measurement Interval characteristic is used to represent the time between measurements.The structure of this characteristic is defined below.

Measurement Interval uint16 · 2

Present when: Always (fixed size)

See Measurement Interval.

Measurement Interval

The values of this field are defined below.

ValueDescription
0No periodic measurement
1–65535Duration of measurement interval. 65535 seconds is equal to 18 hours, 12 minutes, and 15 seconds.Unit: org.bluetooth.unit.time.second

Source: gss/org.bluetooth.characteristic.measurement_interval.yaml

1 field—
0x2A34Glucose Measurement Contextorg.bluetooth.characteristic.glucose_measurement_context12 fields · Flags—
0x2A35Blood Pressure Measurementorg.bluetooth.characteristic.blood_pressure_measurement11 fields · Flags—
0x2A36Intermediate Cuff Pressureorg.bluetooth.characteristic.intermediate_cuff_pressure9 fields · Flags—
0x2A37Heart Rate Measurementorg.bluetooth.characteristic.heart_rate_measurement5 fields · Flags—
0x2A38Body Sensor Locationorg.bluetooth.characteristic.body_sensor_location
Structure

The Body Sensor Location characteristic is used to represent the location of a sensor on a human body.The structure of this characteristic is defined below.

Body Sensor Location uint8 · 1

Present when: Always (fixed size)

See Body Sensor Location

Body Sensor Location

The values of this field are defined below.

ValueDescription
0x00Other
0x01Chest
0x02Wrist
0x03Finger
0x04Hand
0x05Ear Lobe
0x06Foot
0x07–0xFFReserved for Future Use

Source: gss/org.bluetooth.characteristic.body_sensor_location.yaml

1 field—
0x2A39Heart Rate Control Pointorg.bluetooth.characteristic.heart_rate_control_point
Structure

The Heart Rate Control Point characteristic is used to enable device-specific procedures related to a heart rate sensor.The structure of this characteristic is defined below.

Heart Rate Control Point uint8 · 1

Present when: Always (fixed size)

See Heart Rate Control Point

Heart Rate Control Point

The values of this field are defined below.

ValueDescription
0x00Reserved for Future Use
0x01Reset Energy ExpendedResets the value of the Energy Expended field in the Heart Rate Measurement characteristic to 0
0x02–0xFFReserved for Future Use

Source: gss/org.bluetooth.characteristic.heart_rate_control_point.yaml

1 field—
0x2A49Blood Pressure Featureorg.bluetooth.characteristic.blood_pressure_feature
Structure

The Blood Pressure Feature characteristic is used to represent the supported features of a blood pressure sensor.The structure of this characteristic is defined below.

Blood Pressure Feature boolean[16] · 2

Present when: Always (fixed size)

See Blood Pressure Feature.

Blood Pressure Feature

The bits of this field are defined below.

BitDescriptionFields its condition names
0Body Movement Detection Support0 = Body Movement Detection feature not supported1 = Body Movement Detection feature supported—
1Cuff Fit Detection Support0 = Cuff Fit Detection feature not supported1 = Cuff Fit Detection feature supported—
2Irregular Pulse Detection Support0 = Irregular Pulse Detection feature not supported1 = Irregular Pulse Detection feature supported—
3Pulse Rate Range Detection Support0 = Pulse Rate Range Detection feature not supported1 = Pulse Rate Range Detection feature supported—
4Measurement Position Detection Support0 = Measurement Position Detection feature not supported1 = Measurement Position Detection feature supported—
5Multiple Bond Support0 = Multiple Bonds not supported1 = Multiple Bonds supported—
6E2E-CRC Support0 = E2E-CRC not supported1 = E2E-CRC supported—
7User Data Service Support0 = User Data Service not supported1 = User Data Service supported—
8User Facing Time Support0 = User Facing Time not supported1 = User Facing Time supported—
9–15Reserved for Future Use—

Source: gss/org.bluetooth.characteristic.blood_pressure_feature.yaml

1 field—
0x2A51Glucose Featureorg.bluetooth.characteristic.glucose_feature
Structure

The Glucose Feature characteristic is used to represent the supported features of a glucose sensor.The structure of this characteristic is defined below.

Glucose Feature boolean[16] · 2

Present when: Always (fixed size)

See Glucose Feature

Glucose Feature

The bits of this field are defined below.

BitDescriptionFields its condition names
0Low Battery Detection During Measurement support bit:0 = Low Battery Detection During Measurement feature not supported1 = Low Battery Detection During Measurement feature supported—
1Sensor Malfunction Detection support bit:0 = Sensor Malfunction Detection feature not supported1 = Sensor Malfunction Detection feature supported—
2Sensor Sample Size support bit:0 = Sensor Sample Size feature not supported1 = Sensor Sample Size feature supported—
3Sensor Strip Insertion Error Detection support bit:0 = Sensor Strip Insertion Error Detection feature not supported1 = Sensor Strip Insertion Error Detection feature supported—
4Sensor Strip Type Error Detection support bit:0 = Sensor Strip Type Error Detection not supported1 = Sensor Strip Type Error Detection supported—
5Sensor Result High-Low Detection support bit:0 = Sensor Result High-Low Detection not supported1 = Sensor Result High-Low Detection supported—
6Sensor Temperature High-Low Detection support bit:0 = Sensor Temperature High-Low Detection not supported1 = Sensor Temperature High-Low Detection supported—
7Sensor Read Interrupt Detection support bit:0 = Sensor Read Interrupt Detection not supported1 = Sensor Read Interrupt Detection supported—
8General Device Fault support bit:0 = General Device Fault not supported1 = General Device Fault supported—
9Time Fault support bit:0 = Time Fault not supported1 = Time Fault supported—
10Multiple Bond support bit:0 = Multiple Bonds not supported1 = Multiple Bonds supported—
11–15Reserved for Future Use—

Source: gss/org.bluetooth.characteristic.glucose_feature.yaml

1 field—
0x2A52Record Access Control Pointorg.bluetooth.characteristic.record_access_control_point3 fields—
0x2A53RSC Measurementorg.bluetooth.characteristic.rsc_measurement5 fields · Flags—
0x2A54RSC Featureorg.bluetooth.characteristic.rsc_feature
Structure

The RSC Feature characteristic is used to represent the supported features of a running speed and cadence (RSC) sensor.The structure of this characteristic is defined below.

RSC Feature boolean[16] · 2

Present when: Always (fixed size)

See RSC Feature

RSC Feature

The bits of this field are defined below.

BitDescriptionFields its condition names
0Instantaneous Stride Length Measurement Supported—
1Total Distance Measurement Supported—
2Walking or Running Status Supported—
3Calibration Procedure Supported—
4Multiple Sensor Locations Supported—
5–15Reserved for Future Use—

Source: gss/org.bluetooth.characteristic.rsc_feature.yaml

1 field—
0x2A55SC Control Pointorg.bluetooth.characteristic.sc_control_point2 fields—
0x2A5BCSC Measurementorg.bluetooth.characteristic.csc_measurement3 fields · Flags—
0x2A5CCSC Featureorg.bluetooth.characteristic.csc_feature
Structure

The CSC Feature characteristic is used to represent the supported features of a cycling speed and cadence (CSC) sensor.The structure of this characteristic is defined below.

CSC Feature boolean[16] · 2

Present when: Always (fixed size)

See CSC Feature

CSC Feature

The bits of this field are defined below.

BitDescriptionFields its condition names
0Wheel Revolution Data Supported—
1Crank Revolution Data Supported—
2Multiple Sensor Locations Supported—
3–15Reserved for Future Use—

Source: gss/org.bluetooth.characteristic.csc_feature.yaml

1 field—
0x2A5DSensor Locationorg.bluetooth.characteristic.sensor_location
Structure

The Sensor Location characteristic is used to represent the location of the sensor.The structure of this characteristic is defined below.

Sensor Location uint8 · 1

Present when: Always (fixed size)

See Sensor Location

Sensor Location

The values of this field are defined below.

ValueDescription
0Other
1Top of shoe
2In shoe
3Hip
4Front Wheel
5Left Crank
6Right Crank
7Left Pedal
8Right Pedal
9Front Hub
10Rear Dropout
11Chainstay
12Rear Wheel
13Rear Hub
14Chest
15Spider
16Chain Ring
17–255Reserved for Future Use

Source: gss/org.bluetooth.characteristic.sensor_location.yaml

1 field—
0x2A5EPLX Spot-Check Measurementorg.bluetooth.characteristic.plx_spot_check_measurementNo gss file—
0x2A5FPLX Continuous Measurementorg.bluetooth.characteristic.plx_continuous_measurementNo gss file—
0x2A60PLX Featuresorg.bluetooth.characteristic.plx_featuresNo gss file—
0x2A63Cycling Power Measurementorg.bluetooth.characteristic.cycling_power_measurement12 fields · Flags—
0x2A64Cycling Power Vectororg.bluetooth.characteristic.cycling_power_vector5 fields · Flags—
0x2A65Cycling Power Featureorg.bluetooth.characteristic.cycling_power_feature
Structure

The Cycling Power Feature characteristic is used to represent the supported features of a cycling power sensor.The structure of this characteristic is defined below.

Cycling Power Feature boolean[32] · 4

Present when: Always (fixed size)

See Cycling Power Feature

Cycling Power Feature

The bits of this field are defined below.

BitDescriptionFields its condition names
0Pedal Power Balance Supported—
1Accumulated Torque Supported—
2Wheel Revolution Data Supported—
3Crank Revolution Data Supported—
4Extreme Magnitudes Supported—
5Extreme Angles Supported—
6Top and Bottom Dead Spot Angles Supported—
7Accumulated Energy Supported—
8Offset Compensation Indicator Supported—
9Offset Compensation Supported—
10Cycling Power Measurement Characteristic Content Masking Supported—
11Multiple Sensor Locations Supported—
12Crank Length Adjustment Supported—
13Chain Length Adjustment Supported—
14Chain Weight Adjustment Supported—
15Span Length Adjustment Supported—
16Sensor Measurement Context0 = Force based1 = Torque based—
17Instantaneous Measurement Direction Supported—
18Factory Calibration Date Supported—
19Enhanced Offset Compensation Procedure Supported—
20–21Distributed System Support0b00 = Unspecified (Legacy Sensor)0b01 = Not for use in a distributed system0b10 = For use in a distributed system0b11 = Reserved for Future Use—
22–31Reserved for Future Use—

Source: gss/org.bluetooth.characteristic.cycling_power_feature.yaml

1 field—
0x2A66Cycling Power Control Pointorg.bluetooth.characteristic.cycling_power_control_point2 fields—
0x2A7EAerobic Heart Rate Lower Limitorg.bluetooth.characteristic.aerobic_heart_rate_lower_limit
Structure

The Aerobic Heart Rate Lower Limit characteristic is used to represent the desired lower limit of the heart rate, where a user enhances his or her endurance while exercising.The structure of this characteristic is defined below.

Aerobic Heart Rate Lower Limit uint8 · 1

Present when: Always (fixed size)

Unit: period (beats per minute) org.bluetooth.unit.period.beats_per_minute

Unit: org.bluetooth.unit.period.beats_per_minute

Source: gss/org.bluetooth.characteristic.aerobic_heart_rate_lower_limit.yaml

1 fieldUser Data (0x181C)
0x2A7FAerobic Thresholdorg.bluetooth.characteristic.aerobic_threshold
Structure

The Aerobic Threshold characteristic is used to represent the aerobic threshold of a user. Aerobic Threshold and Anaerobic Threshold characteristics together with the Sport Type For Aerobic And Anaerobic Thresholds characteristic describe the metabolic thresholds of the user. The Sport Type For Aerobic And Anaerobic Thresholds characteristic value identifies how the measurement was performed.The structure of this characteristic is defined below.

Aerobic Threshold uint8 · 1

Present when: Always (fixed size)

Unit: period (beats per minute) org.bluetooth.unit.period.beats_per_minute

Unit: org.bluetooth.unit.period.beats_per_minute

Source: gss/org.bluetooth.characteristic.aerobic_threshold.yaml

1 fieldUser Data (0x181C)
0x2A80Ageorg.bluetooth.characteristic.age
Structure

The Age characteristic is used to represent the age of a user.The structure of this characteristic is defined below.

Age uint8 · 1

Present when: Always (fixed size)

Unit: time (year) org.bluetooth.unit.time.year

Unit: org.bluetooth.unit.time.year

Source: gss/org.bluetooth.characteristic.age.yaml

1 fieldUser Data (0x181C)
0x2A81Anaerobic Heart Rate Lower Limitorg.bluetooth.characteristic.anaerobic_heart_rate_lower_limit
Structure

The Anaerobic Heart Rate Lower Limit characteristic is used to represent the desired lower limit of the heart rate, where a user enhances his or her anaerobic tolerance while exercising.The structure of this characteristic is defined below.

Anaerobic Heart Rate Lower Limit uint8 · 1

Present when: Always (fixed size)

Unit: period (beats per minute) org.bluetooth.unit.period.beats_per_minute

Unit: org.bluetooth.unit.period.beats_per_minute

Source: gss/org.bluetooth.characteristic.anaerobic_heart_rate_lower_limit.yaml

1 fieldUser Data (0x181C)
0x2A82Anaerobic Heart Rate Upper Limitorg.bluetooth.characteristic.anaerobic_heart_rate_upper_limit
Structure

The Anaerobic Heart Rate Upper Limit characteristic is used to represent the desired upper limit of the heart rate, where a user enhances his or her anaerobic tolerance while exercising.The structure of this characteristic is defined below.

Anaerobic Heart Rate Upper Limit uint8 · 1

Present when: Always (fixed size)

Unit: period (beats per minute) org.bluetooth.unit.period.beats_per_minute

Unit: org.bluetooth.unit.period.beats_per_minute

Source: gss/org.bluetooth.characteristic.anaerobic_heart_rate_upper_limit.yaml

1 fieldUser Data (0x181C)
0x2A83Anaerobic Thresholdorg.bluetooth.characteristic.anaerobic_threshold
Structure

The Anaerobic Threshold characteristic is used to represent the anaerobic threshold of a user. The Aerobic Threshold and Anaerobic Threshold characteristics together with the Sport Type For Aerobic And Anaerobic Thresholds characteristic describe the metabolic thresholds of the user. The Sport Type For Aerobic And Anaerobic Thresholds characteristic value identifies how the measurement was performed.The structure of this characteristic is defined below.

Anaerobic Threshold uint8 · 1

Present when: Always (fixed size)

Unit: period (beats per minute) org.bluetooth.unit.period.beats_per_minute

Unit: org.bluetooth.unit.period.beats_per_minute

Source: gss/org.bluetooth.characteristic.anaerobic_threshold.yaml

1 fieldUser Data (0x181C)
0x2A84Aerobic Heart Rate Upper Limitorg.bluetooth.characteristic.aerobic_heart_rate_upper_limit
Structure

The Aerobic Heart Rate Upper Limit characteristic is used to represent the desired upper limit of the heart rate, where a user enhances his or her endurance while exercising.The structure of this characteristic is defined below.

Aerobic Heart Rate Upper Limit uint8 · 1

Present when: Always (fixed size)

Unit: period (beats per minute) org.bluetooth.unit.period.beats_per_minute

Unit: org.bluetooth.unit.period.beats_per_minute

Source: gss/org.bluetooth.characteristic.aerobic_heart_rate_upper_limit.yaml

1 fieldUser Data (0x181C)
0x2A85Date of Birthorg.bluetooth.characteristic.date_of_birth3 fieldsUser Data (0x181C)
0x2A86Date of Threshold Assessmentorg.bluetooth.characteristic.date_of_threshold_assessment3 fieldsUser Data (0x181C)
0x2A87Email Addressorg.bluetooth.characteristic.email_address
Structure

The Email Address characteristic is used to represent the email address of a user.The structure of this characteristic is defined below.

Email Address utf8s · variable

Present when: Not stated in the field's text

UTF-8 string

Source: gss/org.bluetooth.characteristic.email_address.yaml

1 fieldUser Data (0x181C)
0x2A88Fat Burn Heart Rate Lower Limitorg.bluetooth.characteristic.fat_burn_heart_rate_lower_limit
Structure

The Fat Burn Heart Rate Lower Limit characteristic is used to represent the desired lower limit of the heart rate, where a user maximizes the fat burn while exercising.The structure of this characteristic is defined below.

Fat Burn Heart Rate Lower Limit uint8 · 1

Present when: Always (fixed size)

Unit: period (beats per minute) org.bluetooth.unit.period.beats_per_minute

Unit: org.bluetooth.unit.period.beats_per_minute

Source: gss/org.bluetooth.characteristic.fat_burn_heart_rate_lower_limit.yaml

1 fieldUser Data (0x181C)
0x2A89Fat Burn Heart Rate Upper Limitorg.bluetooth.characteristic.fat_burn_heart_rate_upper_limit
Structure

The Fat Burn Heart Rate Upper Limit characteristic is used to represent the desired upper limit of the heart rate, where a user maximizes the fat burn while exercising.The structure of this characteristic is defined below.

Fat Burn Heart Rate Upper Limit uint8 · 1

Present when: Always (fixed size)

Unit: period (beats per minute) org.bluetooth.unit.period.beats_per_minute

Unit: org.bluetooth.unit.period.beats_per_minute

Source: gss/org.bluetooth.characteristic.fat_burn_heart_rate_upper_limit.yaml

1 fieldUser Data (0x181C)
0x2A8AFirst Nameorg.bluetooth.characteristic.first_name
Structure

The First Name characteristic is used to represent the first name of a user.The structure of this characteristic is defined below.

First Name utf8s · variable

Present when: Not stated in the field's text

UTF-8 string

Source: gss/org.bluetooth.characteristic.first_name.yaml

1 fieldUser Data (0x181C)
0x2A8BFive Zone Heart Rate Limitsorg.bluetooth.characteristic.five_zone_heart_rate_limits4 fieldsUser Data (0x181C)
0x2A8CGenderorg.bluetooth.characteristic.gender
Structure

The Gender characteristic is used to represent the gender of a user.The structure of this characteristic is defined below.

Gender uint8 · 1

Present when: Always (fixed size)

0: Male1: Female2: Unspecified3–255: Reserved for Future Use

Source: gss/org.bluetooth.characteristic.gender.yaml

1 fieldUser Data (0x181C)
0x2A8DHeart Rate Maxorg.bluetooth.characteristic.heart_rate_max
Structure

The Heart Rate Max characteristic is used to represent the maximum heart rate of a user which the user intends not to exceed.The structure of this characteristic is defined below.

Heart Rate Max uint8 · 1

Present when: Always (fixed size)

Unit: period (beats per minute) org.bluetooth.unit.period.beats_per_minute

Unit: org.bluetooth.unit.period.beats_per_minute

Source: gss/org.bluetooth.characteristic.heart_rate_max.yaml

1 fieldUser Data (0x181C)
0x2A8EHeightorg.bluetooth.characteristic.height
Structure

The Height characteristic is used to represent the height of a user.The structure of this characteristic is defined below.

Height uint16 · 2

Present when: Always (fixed size)

Unit: not an id in units.yaml org.bluetooth.unit.length.meter

Base Unit: org.bluetooth.unit.length.meterRepresented values: M = 1, d = -2, b = 0Unit is 0.01 meter.

Source: gss/org.bluetooth.characteristic.height.yaml

1 fieldUser Data (0x181C)
0x2A8FHip Circumferenceorg.bluetooth.characteristic.hip_circumference
Structure

The Hip Circumference characteristic is used to represent the hip circumference measurement of a user.The structure of this characteristic is defined below.

Hip Circumference uint16 · 2

Present when: Always (fixed size)

Unit: not an id in units.yaml org.bluetooth.unit.length.meter

Base Unit: org.bluetooth.unit.length.meterRepresented values: M = 1, d = -2, b = 0Unit is 0.01 meter.

Source: gss/org.bluetooth.characteristic.hip_circumference.yaml

1 fieldUser Data (0x181C)
0x2A90Last Nameorg.bluetooth.characteristic.last_name
Structure

The Last Name characteristic is used to represent the last name of a user.The structure of this characteristic is defined below.

Last Name utf8s · variable

Present when: Not stated in the field's text

UTF-8 string

Source: gss/org.bluetooth.characteristic.last_name.yaml

1 fieldUser Data (0x181C)
0x2A92Resting Heart Rateorg.bluetooth.characteristic.resting_heart_rate
Structure

The Resting Heart Rate characteristic is used to represent the resting heart rate of a user.The structure of this characteristic is defined below.

Resting Heart Rate uint8 · 1

Present when: Always (fixed size)

Unit: period (beats per minute) org.bluetooth.unit.period.beats_per_minute

Unit: org.bluetooth.unit.period.beats_per_minute

Source: gss/org.bluetooth.characteristic.resting_heart_rate.yaml

1 fieldUser Data (0x181C)
0x2A93Sport Type for Aerobic and Anaerobic Thresholdsorg.bluetooth.characteristic.sport_type_for_aerobic_and_anaerobic_thresholds
Structure

The Sport Type for Aerobic and Anaerobic Thresholds characteristic is used to represent the sport type applicable to aerobic and anaerobic thresholds for a user. The value identifies how the measurement(s) were performed. The Aerobic Threshold and Anaerobic Threshold characteristics together with the Sport Type For Aerobic And Anaerobic Thresholds characteristic describe the metabolic thresholds of the user.The structure of this characteristic is defined below.

Sport Type for Aerobic and Anaerobic Thresholds uint8 · 1

Present when: Always (fixed size)

See Sport Type for Aerobic and Anaerobic Thresholds.

Sport Type for Aerobic and Anaerobic Thresholds

The values of this field are defined below.

ValueDescription
0Unspecified
1Running (Treadmill)
2Cycling (Ergometer)
3Rowing (Ergometer)
4Cross Training (Elliptical)
5Climbing
6Skiing
7Skating
8Arm exercising
9Lower body exercising
10Upper body exercising
11Whole body exercising
12–255Reserved for Future Use

Source: gss/org.bluetooth.characteristic.sport_type_for_aerobic_and_anaerobic_thresholds.yaml

1 fieldUser Data (0x181C)
0x2A94Three Zone Heart Rate Limitsorg.bluetooth.characteristic.three_zone_heart_rate_limits2 fieldsUser Data (0x181C)
0x2A95Two Zone Heart Rate Limitsorg.bluetooth.characteristic.two_zone_heart_rate_limits
Structure

The Two Zone Heart Rate Limits characteristic is used to represent the heart rate limit between the heart rate zones for the two-zone heart rate definition (Fitness and Fat Burn) of a user.The structure of this characteristic is defined below.

Two Zone Heart Rate Limit - Fat Burn / Fitness Limit uint8 · 1

Present when: Always (fixed size)

Unit: period (beats per minute) org.bluetooth.unit.period.beats_per_minute

Unit: org.bluetooth.unit.period.beats_per_minute

Source: gss/org.bluetooth.characteristic.two_zone_heart_rate_limits.yaml

1 fieldUser Data (0x181C)
0x2A96VO2 Maxorg.bluetooth.characteristic.vo2_max
Structure

The VO2 Max characteristic is used to represent the maximal oxygen uptake of a user.The structure of this characteristic is defined below.

VO2 Max uint8 · 1

Present when: Always (fixed size)

Unit: milliliter (per kilogram per minute) org.bluetooth.unit.transfer_rate.milliliter_per_kilogram_per_minute

Unit: org.bluetooth.unit.transfer_rate.milliliter_per_kilogram_per_minute

Source: gss/org.bluetooth.characteristic.vo2_max.yaml

1 fieldUser Data (0x181C)
0x2A97Waist Circumferenceorg.bluetooth.characteristic.waist_circumference
Structure

The Waist Circumference characteristic is used to represent the waist measurement of a user.The structure of this characteristic is defined below.

Waist Circumference uint16 · 2

Present when: Always (fixed size)

Unit: not an id in units.yaml org.bluetooth.unit.length.meter

Base Unit: org.bluetooth.unit.length.meterRepresented values: M = 1, d = -2, b = 0Unit is 0.01 meter.

Source: gss/org.bluetooth.characteristic.waist_circumference.yaml

1 fieldUser Data (0x181C)
0x2A98Weightorg.bluetooth.characteristic.weight
Structure

The Weight characteristic is used to represent the weight of a user.The structure of this characteristic is defined below.

Weight uint16 · 2

Present when: Always (fixed size)

Unit: mass (kilogram) org.bluetooth.unit.mass.kilogram

Base Unit: org.bluetooth.unit.mass.kilogramRepresented values: M = 5, d = -3, b = 0Unit is 0.005 kilogram.

Source: gss/org.bluetooth.characteristic.weight.yaml

1 fieldUser Data (0x181C)
0x2A9BBody Composition Featureorg.bluetooth.characteristic.body_composition_feature
Structure

The Body Composition Feature characteristic is used to represent the supported features of a body composition sensor.The structure of this characteristic is defined below.

Body Composition Feature boolean[32] · 4

Present when: Always (fixed size)

See Body Composition Feature

Body Composition Feature

The bits of this field are defined below.

BitDescriptionFields its condition names
0Time Stamp Supported—
1Multiple Users Supported—
2Basal Metabolism Supported—
3Muscle Percentage Supported—
4Muscle Mass Supported—
5Fat Free Mass Supported—
6Soft Lean Mass Supported—
7Body Water Mass Supported—
8Impedance Supported—
9Weight Supported—
10Height Supported—
11–14Weight Measurement Resolution0b0000 = Not specified0b0001 = Resolution of 0.5 kg or 1 lb.0b0010 = Resolution of 0.2 kg or 0.5 lb.0b0011 = Resolution of 0.1 kg or 0.2 lb.0b0100 = Resolution of 0.05 kg or 0.1 lb.0b0101 = Resolution of 0.02 kg or 0.05 lb.0b0110 = Resolution of 0.01 kg or 0.02 lb.0b0111 = Resolution of 0.005 kg or 0.01 lb.All other values = Reserved for Future Use—
15–17Height Measurement Resolution0b000 = Not specified0b001 = Resolution of 0.01 meter or 1 inch0b010 = Resolution of 0.005 meter or 0.5 inch0b011 = Resolution of 0.001 meter or 0.1 inchAll other values = Reserved for Future Use—
18–31Reserved for Future Use—

Source: gss/org.bluetooth.characteristic.body_composition_feature.yaml

1 field—
0x2A9CBody Composition Measurementorg.bluetooth.characteristic.body_composition_measurement13 fields · Flags—
0x2A9DWeight Measurementorg.bluetooth.characteristic.weight_measurement6 fields · Flags—
0x2A9EWeight Scale Featureorg.bluetooth.characteristic.weight_scale_feature
Structure

The Weight Scale Feature characteristic is used to represent the supported features of a weight scale.The structure of this characteristic is defined below.

Weight Scale Feature boolean[32] · 4

Present when: Always (fixed size)

See Weight Scale Feature

Weight Scale Feature

The bits of this field are defined below.

BitDescriptionFields its condition names
0Time Stamp Supported—
1Multiple Users Supported—
2BMI Supported—
3–6Weight Measurement Resolution0b0000 = Not specified0b0001 = Resolution of 0.5 kg or 1 lb0b0010 = Resolution of 0.2 kg or 0.5 lb0b0011 = Resolution of 0.1 kg or 0.2 lb0b0100 = Resolution of 0.05 kg or 0.1 lb0b0101 = Resolution of 0.02 kg or 0.05 lb0b0110 = Resolution of 0.01 kg or 0.02 lb0b0111 = Resolution of 0.005 kg or 0.01 lb0b1000–0b1111 = Reserved for Future Use—
7–9Height Measurement Resolution0b000 = Not specified0b001 = Resolution of 0.01 meter or 1 inch0b010 = Resolution of 0.005 meter or 0.5 inch0b011 = Resolution of 0.001 meter or 0.1 inch0b100–0b111 = Reserved for Future Use—
10–31Reserved for Future Use—

Source: gss/org.bluetooth.characteristic.weight_scale_feature.yaml

1 field—
0x2AA2Languageorg.bluetooth.characteristic.language
Structure

The Language characteristic is used to represent the preferred language of a user.The Language definition is based on ISO 639-1 [iso_639_1].The structure of this characteristic is defined below.

Language utf8s · variable

Present when: Not stated in the field's text

UTF-8 string

Source: gss/org.bluetooth.characteristic.language.yaml

1 fieldUser Data (0x181C)
0x2AA7CGM Measurementorg.bluetooth.characteristic.cgm_measurement1 field · Flags—
0x2AA8CGM Featureorg.bluetooth.characteristic.cgm_feature3 fields—
0x2AA9CGM Statusorg.bluetooth.characteristic.cgm_status3 fields—
0x2AAACGM Session Start Timeorg.bluetooth.characteristic.cgm_session_start_time4 fields—
0x2AABCGM Session Run Timeorg.bluetooth.characteristic.cgm_session_run_time2 fields—
0x2AACCGM Specific Ops Control Pointorg.bluetooth.characteristic.cgm_specific_ops_control_point3 fields—
0x2ACCFitness Machine Featureorg.bluetooth.characteristic.fitness_machine_featureNo gss file—
0x2ACDTreadmill Dataorg.bluetooth.characteristic.treadmill_data19 fields · Flags—
0x2ACECross Trainer Dataorg.bluetooth.characteristic.cross_trainer_data21 fields · Flags—
0x2ACFStep Climber Dataorg.bluetooth.characteristic.step_climber_data13 fields · Flags—
0x2AD0Stair Climber Dataorg.bluetooth.characteristic.stair_climber_data13 fields · Flags—
0x2AD1Rower Dataorg.bluetooth.characteristic.rower_data17 fields · Flags—
0x2AD2Indoor Bike Dataorg.bluetooth.characteristic.indoor_bike_data16 fields · Flags—
0x2AD3Training Statusorg.bluetooth.characteristic.training_statusNo gss file—
0x2AD4Supported Speed Rangeorg.bluetooth.characteristic.supported_speed_range3 fields—
0x2AD5Supported Inclination Rangeorg.bluetooth.characteristic.supported_inclination_range3 fields—
0x2AD6Supported Resistance Level Rangeorg.bluetooth.characteristic.supported_resistance_level_range3 fields—
0x2AD7Supported Heart Rate Rangeorg.bluetooth.characteristic.supported_heart_rate_range3 fields—
0x2AD8Supported Power Rangeorg.bluetooth.characteristic.supported_power_range3 fields—
0x2AD9Fitness Machine Control Pointorg.bluetooth.characteristic.fitness_machine_control_pointNo gss file—
0x2ADAFitness Machine Statusorg.bluetooth.characteristic.fitness_machine_statusNo gss file—
0x2B34Enhanced Blood Pressure Measurementorg.bluetooth.characteristic.enhanced_blood_pressure_measurement8 fields · Flags—
0x2B35Enhanced Intermediate Cuff Pressureorg.bluetooth.characteristic.enhanced_intermediate_cuff_pressure7 fields · Flags—
0x2B36Blood Pressure Recordorg.bluetooth.characteristic.blood_pressure_record5 fields—
0x2B46Preferred Unitsorg.bluetooth.characteristic.preferred_units
Structure

The Preferred Units characteristic is the list of units the user prefers.The structure of this characteristic is defined below.

Units uint16 [1-256] · 2–512

Present when: Not stated in the field's text

See Units.

Units

This field is an array of 16-bit UUIDs from the available units defined in the Bluetooth SIG Assigned Numbers [assigned_numbers].If there are multiple entries for the same physical quantity in the array, the order of the units defines the preference (the first unit is the most preferred; the last unit is the least preferred).

Source: gss/org.bluetooth.characteristic.preferred_units.yaml

1 fieldUser Data (0x181C)
0x2B47High Resolution Heightorg.bluetooth.characteristic.high_resolution_height
Structure

The High Resolution Height characteristic is used to represent the height of a user and is used when a resolution of 0.1 mm is required.The structure of this characteristic is defined below.

Height uint16 · 2

Present when: Always (fixed size)

Unit: not an id in units.yaml org.bluetooth.unit.length.meter

Base Unit: org.bluetooth.unit.length.meterRepresented values: M = 1, d = -4, b = 0Unit is meter with 0.0001 m (e.g., 0.1 mm)

Source: gss/org.bluetooth.characteristic.high_resolution_height.yaml

1 fieldUser Data (0x181C)
0x2B48Middle Nameorg.bluetooth.characteristic.middle_name
Structure

The Middle Name characteristic is used to represent the middle name of a user.The structure of this characteristic is defined below.

Middle Name utf8s · variable

Present when: Not stated in the field's text

UTF-8 string

Source: gss/org.bluetooth.characteristic.middle_name.yaml

1 fieldUser Data (0x181C)
0x2B49Stride Lengthorg.bluetooth.characteristic.stride_length
Structure

The Stride Length characteristic is used to represent the stride length of a user.The structure of this characteristic is defined below.

Stride Length uint16 · 2

Present when: Always (fixed size)

Unit: length (metre) org.bluetooth.unit.length.metre

Base Unit: org.bluetooth.unit.length.metreRepresented values: M = 1, d = -3, b = 0Unit is meter with a resolution of 0.001 m (e.g., 1 mm)

Source: gss/org.bluetooth.characteristic.stride_length.yaml

1 fieldUser Data (0x181C)
0x2B4AHandednessorg.bluetooth.characteristic.handedness
Structure

The Handedness characteristic is used to represent the handedness of a user.The structure of this characteristic is defined below.

Handedness uint8 · 1

Present when: Always (fixed size)

See Handedness.

Handedness

The values of this field are defined below.

ValueDescription
0x00Left handed
0x01Right handed
0x02Ambidextrous
0x03Unspecified
0x04–0xFFReserved for Future Use

Source: gss/org.bluetooth.characteristic.handedness.yaml

1 fieldUser Data (0x181C)
0x2B4BDevice Wearing Positionorg.bluetooth.characteristic.device_wearing_position
Structure

The Device Wearing Position characteristic is used to represent the position where a user is wearing the device.The structure of this characteristic is defined below.

Device Wearing Position uint8 · 1

Present when: Always (fixed size)

See Device Wearing Position

Device Wearing Position

The values of this field are defined below.

ValueDescription
0x00Other
0x01Head
0x02Head_Ear
0x03Head_Ear_Right
0x04Head_Ear_Left
0x05Head_Neck
0x06Trunk
0x07Trunk_Pelvis
0x08Trunk_Pelvis_Right
0x09Trunk_Pelvis_Left
0x0ATrunk_Thorax
0x0BTrunk_Thorax_Right
0x0CTrunk_Thorax_Left
0x0DTrunk_Back
0x0EUpperExtremity
0x0FUpperExtremity_Right
0x10UpperExtremity_Left
0x11UpperExtremity_Wrist
0x12UpperExtremity_Wrist_Right
0x13UpperExtremity_Wrist_Left
0x14UpperExtremity_Finger
0x15UpperExtremity_Finger_Right
0x16UpperExtremity_Finger_Left
0x17UpperExtremity_Hand
0x18UpperExtremity_Hand_Right
0x19UpperExtremity_Hand_Left
0x1ALowerExtremity
0x1BLowerExtremity_Right
0x1CLowerExtremity_Left
0x1DLowerExtremity_Ankle
0x1ELowerExtremity_Ankle_Right
0x1FLowerExtremity_Ankle_Left
0x20LowerExtremity_Foot
0x21LowerExtremity_Foot_Right
0x22LowerExtremity_Foot_Left
0x23Pants_Pocket
0x24Pants_Pocket_Right
0x25Pants_Pocket_Left
0x26Chest_Pocket
0x27Chest_Pocket_Right
0x28Chest_Pocket_Left
0x29–0xFFReserved for Future Use

Source: gss/org.bluetooth.characteristic.device_wearing_position.yaml

1 fieldUser Data (0x181C)
0x2B4CFour Zone Heart Rate Limitsorg.bluetooth.characteristic.four_zone_heart_rate_limits3 fieldsUser Data (0x181C)
0x2B4DHigh Intensity Exercise Thresholdorg.bluetooth.characteristic.high_intensity_exercise_threshold5 fieldsUser Data (0x181C)
0x2B4EActivity Goalorg.bluetooth.characteristic.activity_goal8 fields · FlagsUser Data (0x181C)
0x2B4FSedentary Interval Notificationorg.bluetooth.characteristic.sedentary_interval_notification
Structure

The Sedentary Interval Notification characteristic is used to represent the sedentary interval notification of a user. The sedentary interval notification is the sedentary time interval after which a user wants to be notified.The structure of this characteristic is defined below.

Sedentary Interval Notification uint16 · 2

Present when: Always (fixed size)

Unit: time (second) org.bluetooth.unit.time.second

Unit: org.bluetooth.unit.time.secondSee Sedentary Interval Notification

Sedentary Interval Notification

A value of 0x0000 in the Sedentary Interval Notification field represents that the user does not want to be notified about sedentary intervals.

Source: gss/org.bluetooth.characteristic.sedentary_interval_notification.yaml

1 fieldUser Data (0x181C)
0x2B50Caloric Intakeorg.bluetooth.characteristic.caloric_intake
Structure

The Caloric Intake characteristic is used to represent the calorie intake per day of a user.The structure of this characteristic is defined below.

Caloric Intake uint16 · 2

Present when: Always (fixed size)

Unit: energy (kilogram calorie) org.bluetooth.unit.energy.kilogram_calorie

Unit: org.bluetooth.unit.energy.kilogram_calorie

Source: gss/org.bluetooth.characteristic.caloric_intake.yaml

1 fieldUser Data (0x181C)

How a Flags field makes fields optional

In the SIG’s files a field that is not always there is published with a size such as “0 or 2” and a line that says when it is present. Heart Rate Measurement (0x2A37) shows the pattern. Its first field is Flags, a boolean[8] of size 1, whose bits the file defines (“The bits of this field are defined below.”), and each later field states its own condition:

FieldSizeThe SIG’s line
Flags1—
Heart Rate Measurement Value (8 bit resolution)0 or 1Present if bit 0 of Flags field is set to 0
Heart Rate Measurement Value (16 bit resolution)0 or 2Present if bit 0 of Flags field is set to 1
Energy Expended0 or 2Present if bit 3 of Flags field is set to 1
RR-interval0 or n*2Present if bit 4 of Flags field is set to 1

Bit 0 of that Flags field is defined in the file as:

Heart Rate Value Format:0 = Heart Rate Value Format is set to uint81 = Heart Rate Value Format is set to uint16

So Heart Rate Measurement Value (8 bit resolution) is present when bit 0 is 0, and Heart Rate Measurement Value (16 bit resolution) when it is 1. The same shape runs through the scope: of the 335 structure fields, 193 have a “0 or N” size and 184 of those carry a “Present if bit N of … field is set to …” line. 16 of the conditions are met by a bit that is 0 rather than 1, among them Temperature Measurement’s Temperature Measurement Value (Celsius), Intermediate Temperature’s Intermediate Temperature (Celsius), Blood Pressure Measurement’s Blood Pressure Measurement Compound Value - Systolic (mmHg) and Blood Pressure Measurement’s Blood Pressure Measurement Compound Value - Diastolic (mmHg) and 12 more. Because any of these may be absent, a field’s position depends on the fields before it, which is why the layout tables print an offset only where every earlier field has a fixed size.

In scope, with no structure in the repository (7)

These have a UUID in assigned_numbers/uuids/characteristic_uuids.yaml but no file in gss/ at commit 408f4a0, so this reference prints no byte layout for them:

Reading these pages

  • Names, types, sizes and text are copied from the SIG’s files. Sizes count octets, except in a struct the file marks as sized in bits: Cycling Power Measurement’s Extreme Angles, whose two 12-bit values, its text says, “are concatenated into a uint24 value (3 octets)”.
  • An offset is a sum of the sizes before a field and is printed only where all of them are plain numbers. “Present when” is the field’s own “Present if bit N of … field is set to …” line, parsed; any other wording is shown as written.
  • A unit is every org.bluetooth.unit… id in a field’s text, named from assigned_numbers/uuids/units.yaml where that file has exactly that id. Where it does not (the text writes org.bluetooth.unit.mass_density.kilogram_per_liter, for instance), the id is shown as written and flagged.
  • Cross-references in the SIG’s text become links where they point at a characteristic or definition here. One to a section the YAML files do not include is shown as “§ label”, and a bibliography key as “[key]”.
  • The 97 were chosen by this site: 55 for the device categories above, the 39 on the SIG’s User Data list, and the 3 those structures refer to. The list is in scripts/fetch-bluetooth-gatt.mjs.

Questions

Which Bluetooth GATT characteristics does this fitness device reference cover?

97: 55 chosen for heart rate monitors, cycling power and speed-and-cadence sensors, running sensors, fitness machines (treadmills, cross trainers, step and stair climbers, rowers, indoor bikes), weight scales, body composition analysers, glucose meters and CGMs, blood pressure monitors, pulse oximeters and thermometers; the 39 on the Bluetooth SIG's User Data list; and the 3 characteristics those structures refer to (Date Time, DST Offset and Time Zone). 90 have a structure in the SIG's GATT Specification Supplement files, and the 44 with at least two fields or a flags field have a page of their own.

Does the Bluetooth SIG publish which characteristics belong to each GATT service?

Not in its public repository, apart from 4 permitted-characteristics lists: Cookware (0x185D, 3 characteristics), Environmental Sensing (0x181A, 31 characteristics), Industrial Measurement Device (0x185A, 7 characteristics) and User Data (0x181C, 39 characteristics). Every other file assigns UUIDs to services and to characteristics in separate lists, so this reference ties a characteristic to a service only where one of those lists does, which here means the 39 User Data characteristics.

Why do some characteristics in this Bluetooth reference have no byte layout?

Because the SIG's repository at commit 408f4a0 (branch main, committed 2026-10-14) has no GATT Specification Supplement file for them: PLX Spot-Check Measurement (0x2A5E), PLX Continuous Measurement (0x2A5F), PLX Features (0x2A60), Fitness Machine Feature (0x2ACC), Training Status (0x2AD3), Fitness Machine Control Point (0x2AD9) and Fitness Machine Status (0x2ADA). Their UUIDs and names come from characteristic_uuids.yaml; no structure is printed for a characteristic whose structure was not read.

What does a size of “0 or 2” mean in the Bluetooth SIG's GATT structures?

That the field is either absent or 2 octets long. Of the 335 structure fields in scope, 193 have a size of that “0 or N” form, and 184 of those carry a line such as “Present if bit 3 of Flags field is set to 1” saying when the field is there; 16 conditions are met when the bit is 0, not 1. Because a field may be absent, this reference prints an offset only where every earlier field has a fixed size.

Where does this Bluetooth GATT data come from, and under what terms?

From the Bluetooth SIG's public repository on Bitbucket (bitbucket.org/bluetooth-SIG/public), branch main at commit 408f4a0, committed 2026-10-14 and read 2026-10-17. The repository has no README or licence file; every file carries the same notice, which says “This document is proprietary to Bluetooth SIG.” and “The furnishing of this document does not grant any license to any intellectual property of Bluetooth SIG or its members.” The SIG's text is quoted here with that attribution; this site is not affiliated with Bluetooth SIG.

Source and terms

Read on 2026-10-17 from the Bluetooth SIG’s public repository, bitbucket.org/bluetooth-SIG/public (“Public YAML files for Bluetooth SIG Assigned Numbers, GATT Specification Supplement, and Device Properties”), branch main at commit 408f4a0, committed 2026-10-14, as one archive of that commit, by scripts/fetch-bluetooth-gatt.mjs. 285 files were read. The repository has no README or licence file; every one of those files opens with the same notice, reproduced below. The SIG’s text is quoted on these pages with that attribution and is not relicensed by this site, and the open dataset built from this reference carries the structural facts, not the SIG’s descriptions. AIFitnessAPI is not affiliated with Bluetooth SIG, Inc., which owns the Bluetooth word mark and logos; the SIG’s files remain the authority.

The notice in every file, verbatim

This document, regardless of its title or content, is not a Bluetooth Specification as defined in the Bluetooth Patent/Copyright License Agreement (“PCLA”) and Bluetooth Trademark License Agreement. Use of this document by members of Bluetooth SIG is governed by the membership and other related agreements between Bluetooth SIG Inc. (“Bluetooth SIG”) and its members, including the PCLA and other agreements posted on Bluetooth SIG’s website located at www.bluetooth.com.

THIS DOCUMENT IS PROVIDED “AS IS” AND BLUETOOTH SIG, ITS MEMBERS, AND THEIR AFFILIATES MAKE NO REPRESENTATIONS OR WARRANTIES AND DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING ANY WARRANTY OF MERCHANTABILITY, TITLE, NON-INFRINGEMENT, FITNESS FOR ANY PARTICULAR PURPOSE, THAT THE CONTENT OF THIS DOCUMENT IS FREE OF ERRORS.

TO THE EXTENT NOT PROHIBITED BY LAW, BLUETOOTH SIG, ITS MEMBERS, AND THEIR AFFILIATES DISCLAIM ALL LIABILITY ARISING OUT OF OR RELATING TO USE OF THIS DOCUMENT AND ANY INFORMATION CONTAINED IN THIS DOCUMENT, INCLUDING LOST REVENUE, PROFITS, DATA OR PROGRAMS, OR BUSINESS INTERRUPTION, OR FOR SPECIAL, INDIRECT, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, AND EVEN IF BLUETOOTH SIG, ITS MEMBERS, OR THEIR AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

This document is proprietary to Bluetooth SIG. This document may contain or cover subject matter that is intellectual property of Bluetooth SIG and its members. The furnishing of this document does not grant any license to any intellectual property of Bluetooth SIG or its members.

This document is subject to change without notice.

Copyright © 2020–2026 by Bluetooth SIG, Inc. The Bluetooth word mark and logos are owned by Bluetooth SIG, Inc. Other third-party brands and names are the property of their respective owners.

The structural facts are also published as an open dataset: Bluetooth fitness GATT characteristics.