This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The Bluetooth.requestDevice() method of the Bluetooth interface returns a Promise to a BluetoothDevice object with the specified options. If there is no chooser UI, this method returns the first device matching the criteria.


  .then(function(bluetoothDevice) { ... })


A Promise to a BluetoothDevice object.


options Optional
An object that sets options for the device request. The available options are:
  • filters[]: An array of BluetoothScanFilters. This filter consists of an array of  BluetoothServiceUUIDs, a name parameter, and a namePrefix parameter.
  • optionalServices[]: An array of BluetoothServiceUUIDs.
  • acceptAllDevices: A Boolean indicating that the requesting script can accept all Bluetooth devices. The default is false.


// Discovery options match any devices advertising:
// . The standard heart rate service.
// . Both 16-bit service IDs 0x1802 and 0x1803.
// . A proprietary 128-bit UUID service c48e6067-5295-48d3-8d5c-0395f61792b1.
// . Devices with name "ExampleName".
// . Devices with name starting with "Prefix".
// And enables access to the battery service if devices
// include it, even if devices do not advertise that service.
let options = {
  filters: [
    {services: ['heart_rate']},
    {services: [0x1802, 0x1803]},
    {services: ['c48e6067-5295-48d3-8d5c-0395f61792b1']},
    {name: 'ExampleName'},
    {namePrefix: 'Prefix'}
  optionalServices: ['battery_service']

navigator.bluetooth.requestDevice(options).then(function(device) {
  console.log('Name: ' +;
  // Do something with the device.
.catch(function(error) {
  console.log("Something went wrong. " + error);

Detailed examples are in the specification.


Specification Status Comment
Web Bluetooth
The definition of 'requestDevice()' in that specification.
Draft Initial definition.

Browser compatibility

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support56 ? ? ?43 ?
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support No56 ? ?43 ? ?

Document Tags and Contributors

Contributors to this page: fscholz, jpmedley, styfle, scheib, rolfedh
Last updated by: fscholz,