This document shows the implementation status of Web Bluetooth on the different browsers.
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-features
flag 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.
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 | ✓ | ✓ |
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/.
- 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.
- 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
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
Supported but not working on latest versions on desktop:
Works on Android since version 46.
Supported but not working on desktop (same issue than Opera's).
Works on Android.
https://szeged.github.io/servo/
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
Supported as of version 79.
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 ports are available: