/* after a click + user pick: */
picked: Heart Rate Monitor
/* or: cancelled or failed: NotFoundError */
How It Works
User gesture. Call from a click handler, not on load.
Pass options. Filters or acceptAllDevices: true.
Await the device. Resolves to BluetoothDevice.
Catch cancel. Dismissing the chooser rejects the Promise.
Compatibility
Browser Support
navigator.bluetooth is marked Experimental on MDN with limited availability — not Baseline. Support is incomplete; Chromium-based browsers are the usual targets.
✓ Experimental · Limited
Navigator.bluetooth
Returns a Bluetooth object for Web Bluetooth (availability + device requests). Secure context required. Feature-detect always.
LimitedNot Baseline
Google ChromeAll versions · Desktop & Mobile
Full support
Mozilla FirefoxAll versions · Desktop & Mobile
Full support
Apple SafariAll versions · macOS & iOS
Full support
Microsoft EdgeAll versions · Chromium & Legacy
Full support
Internet ExplorerIE 6+ · Legacy environments
Full support
OperaAll modern versions
Full support
bluetoothCheck MDN
Bottom line: Treat Web Bluetooth as progressive enhancement behind feature checks. Provide a clear fallback when the API or hardware is unavailable.
Frequently Asked Questions
It is a read-only Navigator property that returns a Bluetooth object for the current document — the entry point to the Web Bluetooth API (availability checks and device requests).
Yes. MDN marks it Experimental and not Baseline (limited availability). Always feature-detect and check compatibility before production.
Yes. It is available only in secure contexts (HTTPS or localhost) in supporting browsers.
If navigator.bluetooth exists, call await navigator.bluetooth.getAvailability(), which resolves to a boolean. Some browsers let users configure what that method returns.
Call navigator.bluetooth.requestDevice(options) from a user gesture (for example a button click). It opens a chooser and resolves to a BluetoothDevice when the user picks a device.
No. The property is read-only. You use methods on the returned Bluetooth object such as getAvailability() and requestDevice().