Implementation Status

February 8, 2025 ยท View on GitHub

This document shows the implementation status of Web Bluetooth on the different browsers.

Chrome browser logoSamsung Internet browser logoOpera browser logoServo browser logoFirefox browser logoMicrosoft Edge browser logoSafari browser logo

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-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() and watchAdvertisements() APIs are behind the chrome://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/PlatformChrome OSAndroidMacLinuxWindows
getAvailability()โœ“โœ“โœ“โœ“โœ“
Referring Device (Physical Web)
Discoveryโœ“โœ“โœ“โœ“โœ“
โ”” Service listโœ“โœ“โœ“โœ“โœ“
โ”” Name or prefixโœ“โœ“โœ“โœ“โœ“
โ”” Manufacturer Data9292929292
โ”” Service Data
โ”” acceptAllDevicesโœ“โœ“โœ“โœ“โœ“
โ”” Exclusion filters114114114114114
Chooser UIโœ“โœ“โœ“โœ“โœ“
permissions.request()
permissions.query()
permissions.revoke()
getDevices()83 ๐Ÿšฉ83 ๐Ÿšฉ83 ๐Ÿšฉ83 ๐Ÿšฉ83 ๐Ÿšฉ
watchAdvertisements()85 ๐Ÿšฉ85 ๐Ÿšฉ85 ๐Ÿšฉ
Persistent Device Permissions83 ๐Ÿšฉ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 Response8585858585
โ”” Without Response8585858585
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/PlatformChrome OSAndroidMacLinuxWindows
Advertisements Scanning๐Ÿšฉ๐Ÿšฉ

Implementation issue

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
  • 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.

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:

Microsoft Edge

Supported as of version 79.

Safari

Not supported and no plan to support it in the near future:

Node.js

Node.js ports are available: