Browser Support for Web Bluetooth

Web Bluetooth is an API that enables websites to communicate with nearby Bluetooth devices via the Generic Attribute Profile (GATT). Its support varies significantly across browsers and platforms with Apple support particularly non-existent.

Supported Browsers

BrowserSupported Versions/PlatformsNotes
Google Chrome56+ (Desktop, Android, Chrome OS)Fully supported on Chrome for Android; requires Android 6.0+ and Windows 10 1703+.
Microsoft Edge79+Fully supported.
Opera43+ (Desktop, Android)Not working on latest desktop versions; works on Android since version 46.
Android Browser97+Fully supported.
Samsung Internet6.2+Fully supported.
Opera Mobile64+Fully supported.

Not Supported

BrowserNotes
Mozilla FirefoxNo supported on any version, including Firefox for Android.
Apple SafariNo supported on any version, including iOS and macOS.
Internet ExplorerNo supported on any version.

iOS Workarounds

  • Bluefy Web BLE Browser: A third-party app for iOS that enables Web Bluetooth functionality by acting as a browser supporting the API.

Learning about Web Bluetooth

Web Bluetooth allows you to view and control Bluetooth devices from a web page.

There’s a great introduction by Niels Leenheer at Smashing Magazine. Niels is heavily into browser based solutions and has also presented about Web Bluetooth at many conferences. Visit his talks page, scroll down to ‘Fun with Bluetooth’ and click on the presentation or video icons.

Web Bluetooth only works with some browsers:

While Niels concentrates on communicating with consumer goods such as lightbulbs, robots and drones, Web Bluetooth also has uses for businesses and organisations. Web interfaces can be used to control beacons or any Bluetooth LE devices.

On Android, when created as a Progressive Web App (PWA) it behaves like an app but is created using web technologies. There’s no app packaging or signing and it can work offline. It can be optionally installed in the mobile operating system where it will look and act like any other app.

Apple’s PWA implementation doesn’t (yet) work with Bluetooth. Indeed, Apple is behind when it comes to PWA.

Web Bluetooth Updates

Web Bluetooth, the mechanism by which web sites can access Bluetooth devices, has been updated to make it easier for end users.

The main changes are two new experimental function calls getDevices() and watchAdvertisements(). Previously, permission prompts have been a pain point using the Web Bluetooth API with users having to ok the permission prompt on every visit to the site. This is especially troublesome when there are many Bluetooth devices as each permission has to be granted one device at a time. Bluetooth.getDevices() method returns a list of Bluetooth device that have already been granted by the user. The Bluetooth.watchAdvertisements() function allows observing when device is in range and broadcasting advertisement packets.

Being experimental, these new features are currently hidden behind Chrome flags:

The APIs are behind the
chrome://flags/#enable-experimental-web-platform-features
chrome flag and persistent device permissions are behind the chrome://flags/#enable-web-bluetooth-new-permissions-backend
flag that exposes the Bluetooth devices a device is allowed to access.

There is more information on the getDevices() Chrome flag and documentation.