Intent to Implement & Ship: Web Bluetooth exclusionFilters option in requestDevice()

Skip to first unread message

François Beaufort

Mar 29, 2023, 2:00:24 AM3/29/23
to blink-dev

Contact emails




The "exclusionFilters" option in navigator.bluetooth.requestDevice() allows web developers to exclude some devices from the browser picker. It can be used to exclude devices that match a broader filter but are unsupported.

Blink component



Allowing web developers, through the "exclusionFilters" option, to exclude from the browser picker some devices that are not supported by the site will improve user experience. Without it, web developers let users pick a device, then have to check using a custom JavaScript helper function and alert the user after they’ve already selected a device, resulting in a poor user experience.

// Request access to a bluetooth device whose name starts with "Created by".

// The device named "Created by Francois" has been reported as unsupported.

const device = await navigator.bluetooth.requestDevice({

  filters: [{ namePrefix: "Created by" }],

  exclusionFilters: [{ name: "Created by Francois" }],


TAG review

This small addition to the Web Bluetooth API doesn’t seem to qualify for a TAG review. I’m happy to file one if desired though.

TAG review status

Not Applicable


Interoperability and Compatibility

Older browsers will ignore exclusionFilters and all devices matching the provided filter will be displayed (the current behavior).

Signals from other implementations (Gecko, WebKit): 

Gecko: No Signal [1]

WebKit: No Signal [1]

Web / Framework developers: Positive

[1] Both Gecko and WebKit are unlikely to object to this feature specifically, but object to the overall Web Bluetooth API as a whole, hence it doesn't make sense to bug them with specific questions on this.


This feature can't be polyfilled. It should be fairly trivial for developers to adopt this new feature.


No specific DevTools changes are required. This feature is treated like any other JS method.

Note that exposing DevTools debugging support for device-access APIs (Web Bluetooth included) is discussed at

Is this feature fully tested by web-platform-tests?

No, because browser picker implementation is implemented outside of Blink and so isn’t testable fully by web-platform-tests. 

Requires code in //chrome?


Tracking bug

Estimated milestones


Link to entry on the Chrome Platform Status

Alex Russell

Mar 29, 2023, 11:36:15 AM3/29/23
to blink-dev,
LGTM1, but please let the TAG know about this change w/ an FYI.

François Beaufort

Mar 30, 2023, 6:27:16 AM3/30/23
to Alex Russell, blink-dev

Yoav Weiss

Mar 30, 2023, 8:35:02 AM3/30/23
to François Beaufort, Alex Russell, blink-dev

You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
To view this discussion on the web visit

Mike Taylor

Mar 30, 2023, 8:58:29 AM3/30/23
to Yoav Weiss, François Beaufort, Alex Russell, blink-dev

LGTM3, seems like a useful addition.

Reply all
Reply to author
0 new messages