// BLUETOOTH SURVEILLANCE SCANNER v1.0
Click [ START SCAN ] to begin scanning — on Windows, first start the local bridge (see # SCAN MODES below).
Or use [ + ADD DEVICE ] to manually select a specific device.
(Meta Ray-Ban, Snap Spectacles, Amazon Echo Frames, Vuzix, Epson Moverio…)
(Apple AirTag, Tile, Samsung SmartTag, Chipolo…)
Detection uses Bluetooth manufacturer company IDs from the
Bluetooth SIG assigned numbers
embedded in BLE advertisement packets, combined with device name pattern matching.
Manufacturer names are resolved against the full SIG registry (~4,300 companies) loaded from
company_identifiers.yaml.
Surveillance devices are identified by manufacturer IDs for Meta, Luxottica (Ray-Ban), Snap Inc., Amazon,
and others known to produce smart glasses or covert cameras. Trackers are identified by
Apple FindMy, Tile, Samsung, and Chipolo manufacturer IDs or known service UUIDs.
BUNDLE ROTATING MACS merges nameless devices that share a manufacturer ID and
reappear at a similar signal level right after another vanishes — the signature of privacy
MAC rotation (phones, AirTags). It is a heuristic: treat bundles as educated guesses.
⚠ False positives are expected. A Meta company ID may indicate a Quest VR headset
rather than Ray-Ban smart glasses. An Apple company ID may indicate an iPhone. Always use visual
confirmation before drawing conclusions.
⚠ Do not harass anyone based on detections from this tool.
Why a local bridge? A webpage cannot access the Bluetooth radio directly —
browsers only expose the experimental Web Bluetooth API, and on Windows its
passive scanning never starts radio discovery (a known Chromium limitation, in Chrome, Edge
and Brave alike). The bridge is a small Python script that runs on your own machine, performs
the native BLE scan, and feeds live results to this page over 127.0.0.1:8437.
Nothing leaves your computer: the bridge only listens on localhost and this page reads from it locally.
Local bridge mode (recommended, required on Windows):
1. ⬇ Download bt-bridge.py
2. Install the scanner library (once): pip install bleak
3. Start the bridge: python bt-bridge.py
4. Click [ START SCAN ] — the page connects automatically and shows every
advertising BLE device your radio can see. Stop the bridge with Ctrl+C when done.
Requires Python 3.9+ (python.org).
Full scan mode (browser-only, Android/ChromeOS): Requires Chrome or Edge with the experimental Web Bluetooth scanning flag:
chrome://flags/#enable-experimental-web-platform-features
⚠ On Windows, Chromium's Web Bluetooth scanning does not start radio discovery — use the local bridge instead.
Single device mode (+ ADD DEVICE): Works in any Chromium browser with Web Bluetooth support over HTTPS.
Does not work in: Firefox, Safari, or HTTP (non-secure) connections (bridge mode excepted).
⚠ Seeing no devices? Only BLE devices that are actively advertising are visible.
Classic Bluetooth devices (many speakers, mice, older headphones) never advertise over BLE, and devices
already connected to a phone or laptop usually stop advertising. Trackers like AirTags advertise
roughly every 2 seconds only when away from their owner. To verify your adapter sees packets at all,
open chrome://bluetooth-internals → Adapter → Start Discovery.