No Login Data Private Local Save

Web HID Explorer - Online List & Read HID Devices

6
0
0
0

Web HID Explorer

Online List & Read HID Devices — Inspect, Monitor & Debug

API Ready Not Supported
Browser Compatibility Notice
Web HID API requires Chromium-based browsers (Chrome 89+, Edge 89+, Opera 75+) and HTTPS or localhost. Mobile support is available on Android with Chrome 100+ and USB OTG. Firefox and Safari do not currently support Web HID.
My Devices

No devices connected

Click "Request HID Device" to connect
Device Details No Selection

Select a device to view details

Click on a connected device from the list
Basic Information
Collections & Reports
Collection Type Report ID Items Usage
Report Descriptor (Raw Hex)
Not available
Live Input Report Monitor
Live
Monitor not started. Click "Start Monitoring" to receive input reports.
Send Output / Feature Report
Frequently Asked Questions

The Web HID (Human Interface Device) API allows web applications to communicate with HID devices such as keyboards, gamepads, sensors, and custom hardware directly from the browser. It provides low-level access to input/output/feature reports, enabling advanced hardware interaction without native drivers or plugins. This API is part of the Web Capabilities project by Google.

Web HID is supported in Chromium-based browsers: Google Chrome 89+, Microsoft Edge 89+, Opera 75+, Brave, and Vivaldi. It requires HTTPS or localhost for security reasons. Firefox and Safari do not support Web HID and have no announced plans. On Android, Chrome 100+ supports Web HID with USB OTG adapters.

Click the "Request HID Device" button. A browser permission dialog will appear listing available HID devices. Select your device and click "Connect". Once authorized, the device appears in your device list. You can then open it, monitor input reports, and send output/feature reports. Previously authorized devices can be retrieved via navigator.hid.getDevices() without re-prompting.

Common reasons: (1) Not using a Chromium browser; (2) Not on HTTPS/localhost; (3) Device not physically connected or recognized by the OS; (4) Device is already claimed by another application or OS driver; (5) On Linux, udev rules may need configuration for user access; (6) The browser's HID blocklist may exclude certain device types (like keyboards/mice for security). Check chrome://device-log in Chrome for diagnostic info.

Input Reports are data sent from the device to the host (e.g., sensor readings, button states). Output Reports are sent from the host to the device (e.g., LED control, motor commands). Feature Reports are bidirectional configuration data (e.g., device settings, calibration). Each report is identified by a Report ID (0-255) and defined in the device's Report Descriptor. The structure includes usage pages and usages that describe the data semantics.

VID (Vendor ID) is a 16-bit identifier assigned by the USB-IF to identify the device manufacturer (e.g., 0x046D for Logitech). PID (Product ID) is a 16-bit identifier assigned by the manufacturer to identify a specific product model. Together, VID:PID uniquely identifies a USB HID device type. You can look up VID/PID combinations on databases like devicehunt.com or the-sz.com to identify unknown devices.

Web HID is designed with security in mind: (1) It requires HTTPS (except localhost); (2) User must explicitly grant permission via browser dialog; (3) Devices are isolated per-origin; (4) Certain sensitive devices (keyboards, mice, smart card readers) are blocked by default; (5) Users can revoke permissions at any time via browser settings. Always audit which sites you grant HID access to, as malicious sites could potentially read or inject HID data.

After opening a device with await device.open(), listen for input reports using:
device.addEventListener('inputreport', (event) => {
  const { data, device, reportId } = event;
  const bytes = new Uint8Array(data.buffer);
  console.log(\`Report \${reportId}:\`, bytes);
});

Each event delivers a DataView containing the report payload. The reportId identifies which report was triggered.

Common HID devices include: Game controllers (Xbox, PlayStation, Nintendo Switch Pro), Keyboards & mice (though often blocked by browsers), Barcode scanners, USB sensors (temperature, light, accelerometer), LED controllers, Custom Arduino/Teensy HID projects, POS peripherals, Flight sim controls (yokes, throttles), and Medical devices (glucose meters, pulse oximeters). Any device that follows the USB HID specification can potentially be accessed.

If your device connects but shows no input reports: (1) Ensure the device is actually sending data (some devices only send on state change); (2) Check that you've called device.open() successfully; (3) Verify the device isn't claimed by the OS kernel driver — on Linux you may need to detach it; (4) Some devices require an output or feature report to be sent first to initialize data streaming; (5) Check the report descriptor to confirm the correct report ID and format; (6) Try a different USB cable/port; (7) Test with a known-working HID tool like hidapitester or usbhid-dump.