The Web Bluetooth API provides the ability to connect and interact with Bluetooth Low Energy peripherals.
The Bluetooth API extends the following APIs, adding the listed features.
The Web Bluetooth API can only be used in a secure context.
Access to the API is controlled by the Permissions Policy directive bluetooth
. The default allowlist for the bluetooth
policy is self
, which enables Bluetooth usage in same-origin nested frames but prevents access by third-party content by default. Cross-origin access is enabled by specifying the allowed origins in both the Permissions-Policy: bluetooth
HTTP header and the desired <iframe>
.
In order to use the feature the user must first grant explicit permission (they will not be prompted for access if it is not allowed for other reasons, such as being blocked by a Permissions Policy). The permission prompt is displayed when calling Bluetooth.requestDevice()
to request access to a new Bluetooth device for which permission is not granted (the owning global object must also have transient activation). You can use Bluetooth.getDevices()
to retrieve any devices that have previously been granted permission for the site.
The Permissions API navigator.permissions.query()
method can be used with the bluetooth
permission to test whether a site has permission to use Bluetooth devices. The permission state will be granted
, denied
or prompt
(requires user acknowledgement of a prompt):
const btPermission = await navigator.permissions.query({ name: "bluetooth" });
if (btPermission.state !== "denied") {
}