Bluetooth device access

navigator.bluetooth.requestDevice()

Limited availability
  • Chrome70
  • Edge79
  • Firefox-
  • Safari-

Features it needs

Talking to a Bluetooth peripheral from a web app used to mean wrapping the page in a native shell such as Cordova or Capacitor and reaching for a plugin that called into the operating system's own Bluetooth stack. A page running directly in a supporting browser can request a device, connect to its GATT services, and read or write characteristics with no native wrapper at all. This is a narrower case than most of this catalog. It replaces the native-app packaging step these plugins exist for, rather than a JavaScript library doing work the browser could already do.

When this applies

Connecting to a Bluetooth Low Energy device directly from a web page.

The native approach

const device = await navigator.bluetooth.requestDevice({
  acceptAllDevices: true,
});
const server = await device.gatt.connect();

MDN reference

When the dependency is still right

An answer that always says "the platform covers it" is worse than no answer. These are the cases where this one does not hold.

  • You need to support iOS in any browser. Apple has stated it has no plans to implement Web Bluetooth. That gap is permanent for iPhone and iPad users.
  • You need background scanning or a connection that survives the tab closing. The API only works while the page is open.
  • You are already shipping a native app shell for other reasons. The plugin ecosystem is more mature for background operation and OS-level pairing UI.

Packages this covers