Implementation Status
February 8, 2025 ยท View on GitHub
This document shows the implementation status of Web Bluetooth on the different browsers.
Chrome
Work is in progress:
- Know How to file Web Bluetooth Bugs.
- In Android, Chrome OS, Mac and Windows, the GATT Communication API is shipped without any flag.
- Linux is partially implemented and not supported. The
chrome://flags/#enable-experimental-web-platform-featuresflag must be enabled. - The Windows implementation is available in Chrome 70.0.3526.0 and requires Windows 10 version 1703 (Creators Update).
- Root Issue 419413: Web Bluetooth and blocking issues are most authorative on status.
- Some Bluetooth GATT operations can't be run in parallel yet. See #188 (comment)
- The
getDevices()andwatchAdvertisements()APIs are behind thechrome://flags/#enable-experimental-web-platform-features๐ฉ flag. - The Persistent Device Permissions feature is behind the
chrome://flags/#enable-web-bluetooth-new-permissions-backend๐ฉ flag.
GATT Communication API
| Feature/Platform | Chrome OS | Android | Mac | Linux | Windows |
|---|---|---|---|---|---|
| getAvailability() | โ | โ | โ | โ | โ |
| Referring Device (Physical Web) | |||||
| Discovery | โ | โ | โ | โ | โ |
| โ Service list | โ | โ | โ | โ | โ |
| โ Name or prefix | โ | โ | โ | โ | โ |
| โ Manufacturer Data | 92 | 92 | 92 | 92 | 92 |
| โ Service Data | |||||
| โ acceptAllDevices | โ | โ | โ | โ | โ |
| โ Exclusion filters | 114 | 114 | 114 | 114 | 114 |
| Chooser UI | โ | โ | โ | โ | โ |
| permissions.request() | |||||
| permissions.query() | |||||
| permissions.revoke() | |||||
| getDevices() | 83 ๐ฉ | 83 ๐ฉ | 83 ๐ฉ | 83 ๐ฉ | 83 ๐ฉ |
| watchAdvertisements() | 85 ๐ฉ | 85 ๐ฉ | 85 ๐ฉ | ||
| Persistent Device Permissions | 83 ๐ฉ | 83 ๐ฉ | 83 ๐ฉ | 83 ๐ฉ | 83 ๐ฉ |
| GATT Server Connect | โ | โ | โ | โ | โ |
| GATT Server Disconnect | โ | โ | โ | โ | โ |
| Hanging connect() abortable by disconnect() | |||||
| getPrimaryService*() | โ | โ | โ | โ | โ |
| getIncludedService*() | |||||
| getCharacteristic*() | โ | โ | โ | โ | โ |
| Characteristic Properties | โ | โ | โ | โ | 70 |
| Read Characteristic | โ | โ | โ | โ | โ |
| Write Characteristic | โ | โ | โ | โ | โ |
| โ With Response | 85 | 85 | 85 | 85 | 85 |
| โ Without Response | 85 | 85 | 85 | 85 | 85 |
| Start/Stop Notifications | โ | โ | โ | โ | 70 |
| Descriptors | โ | โ | โ | โ | 70 |
| Event bubbling | |||||
| Device Disconnected Event | โ | โ | โ | โ | 70 |
| Service Changed Event | |||||
| BluetoothUUID | โ | โ | โ | โ | โ |
| TypeError for bad UUIDs | โ | โ | โ | โ | โ |
| Invalidate GATT attributes upon disconnect | โ | โ | โ | โ | โ |
| GATT Blocklist | โ | โ | โ | โ | โ |
| Low-latency Blocklist Updates | โ | โ | โ | โ | โ |
| On-demand device pairing | โ | โ |
Scanning API
Partial development. chrome://flags/#enable-experimental-web-platform-features ๐ฉ flag required.
| Feature/Platform | Chrome OS | Android | Mac | Linux | Windows |
|---|---|---|---|---|---|
| Advertisements Scanning | ๐ฉ | ๐ฉ |
Tip: Chrome channel releases are tracked at https://googlechromelabs.github.io/current-versions/.
Notes
- Android: Requires Android 6.0 Marshmallow or later.
- Mac: Requires OS X Yosemite or later.
- Some MacBooks may not work: Check "About this Mac" / "System Report" / "Bluetooth" and verify that Low Energy is supported.
- Linux: Requires Kernel 3.19+ and BlueZ 5.41+ installed. Read How to get Chrome Web Bluetooth working on Linux.
- Note that Bluetooth daemon needs to run with experimental interfaces if BlueZ version is lower than 5.43:
sudo /usr/sbin/bluetoothd -E
- Note that Bluetooth daemon needs to run with experimental interfaces if BlueZ version is lower than 5.43:
- Windows: Requires Windows 10 version 1706 (Creators Update) or later.
Unsupported platforms
- Android WebView: Will be supported in the future.
- iOS: Uses the web exposed APIs as provided by the WKWebView, no implementation planned in the Chromium codebase.
Note: WebBLE is an app for iOS that supports the GATT Communication API. It was created initially for the Puck.js project.
Bluefy is a free alternative to WebBLE created by PNNSoft
Samsung Internet
In Samsung Internet v6.4, the GATT Communication API is shipped without any flag.
- https://medium.com/samsung-internet-dev/lets-connect-with-samsung-internet-v6-4-stable-1f197d43a812
- https://samsunginter.net/docs/web-bluetooth
Opera
Supported but not working on latest versions on desktop:
Works on Android since version 46.
Vivaldi
Supported but not working on desktop (same issue than Opera's).
Works on Android.
Servo
https://szeged.github.io/servo/
Firefox
Not supported and no plan to support it in the near future:
- https://mozilla.github.io/standards-positions/#web-bluetooth
- https://bugzilla.mozilla.org/show_bug.cgi?id=1204396
Microsoft Edge
Supported as of version 79.
Safari
Not supported and no plan to support it in the near future:
- https://webkit.org/tracking-prevention/#anti-fingerprinting
- https://bugs.webkit.org/show_bug.cgi?id=101034
Node.js
Node.js ports are available:






