This feature is not Baseline because it does not work in some of the most widely-used browsers.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
The BluetoothCharacteristicProperties interface of the Web Bluetooth API provides the operations that are valid on the given BluetoothRemoteGATTCharacteristic.
This interface is returned by calling BluetoothRemoteGATTCharacteristic.properties.
authenticatedSignedWrites Read only Experimental
Returns a boolean that is true if signed writing to the characteristic value is permitted.
broadcast Read only Experimental
Returns a boolean that is true if the broadcast of the characteristic value is permitted using the Server Characteristic Configuration Descriptor.
indicate Read only Experimental
Returns a boolean that is true if indications of the characteristic value with acknowledgement is permitted.
notify Read only Experimental
Returns a boolean that is true if notifications of the characteristic value without acknowledgement is permitted.
read Read only Experimental
Returns a boolean that is true if the reading of the characteristic value is permitted.
reliableWrite Read only Experimental
Returns a boolean that is true if reliable writes to the characteristic is permitted.
writableAuxiliaries Read only Experimental
Returns a boolean that is true if reliable writes to the characteristic descriptor is permitted.
write Read only Experimental
Returns a boolean that is true if the writing to the characteristic with response is permitted.
writeWithoutResponse Read only Experimental
Returns a boolean that is true if the writing to the characteristic without response is permitted.
The following example shows how tell if a GATT characteristic supports value change notifications.
let device = await navigator.bluetooth.requestDevice({
filters: [{ services: ["heart_rate"] }],
});
let gatt = await device.gatt.connect();
let service = await gatt.getPrimaryService("heart_rate");
let characteristic = await service.getCharacteristic("heart_rate_measurement");
if (characteristic.properties.notify) {
characteristic.addEventListener(
"characteristicvaluechanged",
async (event) => {
console.log(`Received heart rate measurement: ${event.target.value}`);
},
);
await characteristic.startNotifications();
}
| Specification |
|---|
| Web Bluetooth> # characteristicproperties-interface> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
BluetoothCharacteristicProperties |
70Linux support is not enabled by default.56–70Only supported on macOS. |
79Linux support is not enabled by default. |
No |
57Linux support is not enabled by default.43–57Only supported on macOS. |
No | 56 | No | 43 | No | 6.0 | No | No |
authenticatedSignedWrites |
56 | 79 | No | 43 | No | 56 | No | 43 | No | 6.0 | No | No |
broadcast |
56 | 79 | No | 43 | No | 56 | No | 43 | No | 6.0 | No | No |
indicate |
56 | 79 | No | 43 | No | 56 | No | 43 | No | 6.0 | No | No |
notify |
56 | 79 | No | 43 | No | 56 | No | 43 | No | 6.0 | No | No |
read |
56 | 79 | No | 43 | No | 56 | No | 43 | No | 6.0 | No | No |
reliableWrite |
56 | 79 | No | 43 | No | 56 | No | 43 | No | 6.0 | No | No |
writableAuxiliaries |
56 | 79 | No | 43 | No | 56 | No | 43 | No | 6.0 | No | No |
write |
56 | 79 | No | 43 | No | 56 | No | 43 | No | 6.0 | No | No |
writeWithoutResponse |
56 | 79 | No | 43 | No | 56 | No | 43 | No | 6.0 | No | No |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/BluetoothCharacteristicProperties