{"id":39759,"url":"https://github.com/robatwilliams/awesome-webhid","name":"awesome-webhid","description":"Curated list of resources relating to the WebHID (Human Interface Device) API","projects_count":55,"last_synced_at":"2026-09-07T21:00:21.974Z","repository":{"id":38355584,"uuid":"178205468","full_name":"robatwilliams/awesome-webhid","owner":"robatwilliams","description":"Curated list of resources relating to the WebHID (Human Interface Device) API","archived":false,"fork":false,"pushed_at":"2022-12-20T21:05:24.000Z","size":54,"stargazers_count":202,"open_issues_count":3,"forks_count":18,"subscribers_count":10,"default_branch":"master","last_synced_at":"2026-08-19T03:07:57.848Z","etag":null,"topics":["awesome","awesome-list","bluetooth","bluetooth-hid","javascript","usb","usb-hid","web-api","webhid"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/robatwilliams.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"contributing.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-03-28T13:06:42.000Z","updated_at":"2026-07-06T13:03:15.000Z","dependencies_parsed_at":"2023-01-30T02:01:05.717Z","dependency_job_id":null,"html_url":"https://github.com/robatwilliams/awesome-webhid","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/robatwilliams/awesome-webhid","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robatwilliams%2Fawesome-webhid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robatwilliams%2Fawesome-webhid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robatwilliams%2Fawesome-webhid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robatwilliams%2Fawesome-webhid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robatwilliams","download_url":"https://codeload.github.com/robatwilliams/awesome-webhid/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robatwilliams%2Fawesome-webhid/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":341189360,"owners_count":37139984,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-22T15:14:58.755Z","status":"online","status_checked_at":"2026-09-07T02:00:07.396Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"created_at":"2024-01-13T17:22:27.861Z","updated_at":"2026-09-07T21:00:21.975Z","primary_language":null,"list_of_lists":false,"displayable":true,"categories":["Good to know","Specification \u0026 documentation","Blogs \u0026 articles","Devices","Tools","Bluetooth, USB, \u0026 HID reference","Demos, experiments \u0026 hacks","Real-world applications","Inspiration from elsewhere","Ideas","Forums \u0026 discussion","Related","Libraries","License"],"sub_categories":["Candidates"],"readme":"# Awesome WebHID [![Awesome](https://awesome.re/badge-flat.svg)](https://awesome.re)\n\n\u003e Curated list of resources relating to the WebHID (Human Interface Device) API\n\nWebHID is a browser API (`navigator.hid`) that provides access to HID input/output devices. It's a higher level of abstraction than the WebUSB and Web Bluetooth APIs, but lower than the Gamepad API and basic input (pointer/keyboard).\n\nContributions welcome. Add links through pull requests or create an issue to start a discussion. See [contribution guidelines](contributing.md).\n\n\n## Contents\n- [Status](#status)\n- [Good to know](#good-to-know)\n- [Specification \u0026 documentation](#specification--documentation)\n- [Blogs \u0026 articles](#blogs--articles)\n- [Talks \u0026 videos](#talks--videos)\n- [Devices](#devices)\n- [Tools](#tools)\n- [Bluetooth, USB, \u0026 HID reference](#bluetooth-usb--hid-reference)\n- [Libraries](#libraries)\n- [Demos, experiments \u0026 hacks](#demos-experiments--hacks)\n- [Real-world applications](#real-world-applications)\n- [Inspiration from elsewhere](#inspiration-from-elsewhere)\n- [Ideas](#ideas)\n- [Forums \u0026 discussion](#forums--discussion)\n- [Miscellaneous](#miscellaneous)\n- [Related](#related)\n\n\n## Status\nEnabled by default since Chrome 89 (March 2021).\n\n## Good to know\n* WebHID is not a W3C Standard nor is it on the W3C Standards Track\u003csup\u003e[(ref)](https://wicg.github.io/webhid)\u003c/sup\u003e.\n* Devices that generate trusted input (e.g. keyboards, mice, security keys) will not be accessible. Such devices define their reports in [top-level HID collections](https://docs.microsoft.com/en-us/windows-hardware/drivers/hid/top-level-collections) that will be considered protected usages\u003csup\u003e[(ref1)](https://groups.google.com/a/chromium.org/d/msg/blink-dev/OaDCpCaEe_4/uZ0z7frlAAAJ]), [(ref2)](https://discourse.wicg.io/t/human-interface-device-hid-api/3070/6])\u003c/sup\u003e.\n* Access to a device must be granted by the user via a chooser dialog provided by the browser, similarly to WebUSB and Web Bluetooth. Launching the chooser must be done from the context of a user gesture (e.g. a mouse click).\n* Neither the WebUSB\u003csup\u003e[(ref)](https://github.com/WICG/webusb/issues/29)\u003c/sup\u003e or Web Bluetooth\u003csup\u003e[(ref)](https://github.com/WebBluetoothCG/web-bluetooth/issues/393)\u003c/sup\u003e APIs allow access to HID-class devices.\n\n\n## Specification \u0026 documentation\n* [WebHID API Specification](https://wicg.github.io/webhid) (Web Platform Incubator Community Group (WICG)) - Including introduction, motivating applications, and security/privacy.\n* [WebHID Explainer](https://github.com/WICG/webhid/blob/master/EXPLAINER.md) - The what \u0026 why in a nutshell, including basic terminology and an example. Some API details outdated.\n* [WebHID (Human Interface Device) - Chrome Platform Status](https://www.chromestatus.com/feature/5172464636133376)\n* [Chromium implementation tracking bug: WebHID API](https://bugs.chromium.org/p/chromium/issues/detail?id=890096) - Labelled with targeted \u0026 stable release versions; see the [development/release calendar](https://www.chromium.org/developers/calendar).\n\n\n## Blogs \u0026 articles\n* [Upcoming WebHID API - access Bluetooth/USB HID devices in web applications](https://blog.scottlogic.com/2019/04/03/upcoming-webhid-api.html) - An introduction to WebHID with an example showing how to open, listen for input and send output to a device. \n\n\n## Talks \u0026 videos\nNone yet.\n\n\n## Devices\n*Devices that work well with WebHID, and device-specific abstraction libraries. Do also file an issue to inform others of devices that don't. Not all devices in the USB HID device class will communicate using the high-level abstractions.*\n\n* [Blink(1)](https://blink1.thingm.com) - notification light (see demos section, and prior art [node-blink1](https://github.com/sandeepmistry/node-blink1)).\n* [BlinkStick](https://www.blinkstick.com) - light devices and controllers (see demos section, and prior art [blinkstick](https://github.com/arvydas/blinkstick-node))\n* [Elgato Stream Deck](https://www.elgato.com/en/gaming/stream-deck) - programmable button panel (see demos, and libraries)\n* [Razer Kraken Kitty Edition Headset](https://www.razer.com/gaming-headsets/razer-kraken-kitty) - headset with customizable LED lighting\n* [Sony DualShock 4](https://www.playstation.com/en-us/explore/accessories/gaming-controllers/dualshock-4/) - controller for PlayStation 4 (see libraries section)\n* [Nintendo Joy-Cons](https://www.nintendo.com/store/hardware/joy-con-and-controllers/) (see demos, and libraries)\n\n### Candidates\n* [Cleware](http://www.cleware-shop.de/en_US) - sensors, switches, and lights (see [clewarecontrol](https://www.vanheusden.com/clewarecontrol/), [sniner/cleware](https://github.com/sniner/cleware))\n* [Espruino Pico](https://www.espruino.com/Pico) board - has an [USB HID mode](https://www.espruino.com/USB), might also be useful as an emulator?\n* Jabra headsets (see [Standard USB HID Specification](https://developer.jabra.com/site/global/sdks/web/index.gsp))\n* Nintendo Switch Pro Controller\u003csup\u003e[(ref)](https://chromium.googlesource.com/chromium/src.git/+/05ac99d21920fec606ac1e360a2534921938cc85)\u003c/sup\u003e\n* Sony DualShock 3\u003csup\u003e[(ref)](https://chromium.googlesource.com/chromium/src.git/+/05ac99d21920fec606ac1e360a2534921938cc85)\u003c/sup\u003e\n* [X-keys](https://xkeys.com/xkeys.html) - keyboards, switches, analog controls, and pedals (see [HID Data Reports](https://xkeys.com/software/developer/developerhiddatareports.html), [Integration](https://xkeys.com/software/developer/developerintegration.html), [xkeys](https://github.com/SuperFlyTV/xkeys), [node-xkeys](https://github.com/macoss/node-xkeys))\n* Xbox Wireless Controller\u003csup\u003e[(ref)](https://chromium.googlesource.com/chromium/src.git/+/05ac99d21920fec606ac1e360a2534921938cc85)\u003c/sup\u003e\n\n\n## Tools\n*Software that aids working with devices.*\n\n* [USBDeview](https://www.nirsoft.net/utils/usb_devices_view.html) - View device information.\n* [USB Device Tree Viewer](https://www.uwe-sieber.de/usbtreeview_e.html) - View device information including interface and HID descriptors.\n* [node-hid](https://github.com/node-hid/node-hid) - Cross-platform library for accessing USB HID devices from Node.js or Electron.\n\n\n## Bluetooth, USB, \u0026 HID reference\n*Information about the underlying technologies, including specifications and explanations.*\n\n* [Human Interface Devices (HID) Information](https://www.usb.org/hid) (USB Implementers Forum (USB-IF)) - Including the device class definition, and usage tables.\n* [Human Interface Device Profile specification](https://www.bluetooth.com/specifications/profiles-overview) (Bluetooth Special Interest Group (SIG)) - \"An adaptation of the USB HID Specification to operate over a Bluetooth wireless link.\"\n* [A Closer Look at HID Class](https://www.tracesystemsinc.com/USB_Tutorials_web/USB/B1_USB_Classes/Books/A3_A_Closer_Look_at_HID_Class/slide01.htm) - Explanation of USB HID, with enough detail yet easy to follow.\n* [Understanding HID report descriptors](https://who-t.blogspot.com/2018/12/understanding-hid-report-descriptors.html) - Understanding devices' descriptions of themselves.\n\n\n## Libraries\n* [TheBITLINK/WebHID-DS4](https://thebitlink.github.io/WebHID-DS4/) - using a DualShock 4 controller.\n* [@elgato-stream-deck/webhid](https://github.com/julusian/node-elgato-stream-deck) - using the Elgato Stream Deck (see demos).\n* [tomayac/joy-con-webhid](https://github.com/tomayac/joy-con-webhid) - using Nintendo Joy-Cons.\n\n\n## Demos, experiments \u0026 hacks\n* [todbot/blink1-webhid](https://todbot.github.io/blink1-webhid/) - using the blink(1).\n* [Elgato StreamDeck](https://julusian.github.io/node-elgato-stream-deck/) - using the Elgato Stream Deck (via [@elgato-stream-deck/webhid](https://github.com/julusian/node-elgato-stream-deck)).\n* [robatwilliams/webhid-demos](https://github.com/robatwilliams/webhid-demos) - using the BlinkStick Strip.\n* [tomayac/chrome-dino-webhid](https://github.com/tomayac/chrome-dino-webhid) - using Nintendo Joy-Cons.\n* [tomayac/joy-con-webhid/demo/](https://tomayac.github.io/joy-con-webhid/demo/) - using Nintendo Joy-Cons.\n\n\n## Real-world applications\n* [Ergometer Space](https://ergometer-space.org) - Track your indoor rowing exercise, alone or with other online users.\n* [Kraken Kitty Edition Controller](https://sarahemm.github.io/razerkitty-webhid/) - Control the LED lighting on your Razer Kraken Kitty Edition headset.\n* [Remap](https://remap-keys.app) - Customize a keyboard's keymap (see [remap-keys/remap](https://github.com/remap-keys/remap)).\n\n\n## Inspiration from elsewhere\n*Transferrable inspiration from related areas such as general Bluetooth/USB HID, Web Bluetooth, and WebUSB.*\n\n* [chrome.hid API sample](https://github.com/GoogleChrome/chrome-app-samples/tree/master/samples/hid) - Generic input/output Chrome App sample.\n* [blink(1) using the chrome.hid API](https://github.com/GoogleChrome/chrome-app-samples/tree/master/samples/blink1) - Chrome App sample that controls a [Blink(1)](https://blink1.thingm.com) notification LED.\n* [Interacting with USB HID devices from web apps](https://keetrax.com/blog/2015/01/interacting-usb-hid-devices-web-apps/) - Using a Chrome App as a go-between between a dictation foot pedal and a web application (2015).\n* [Web Bluetooth Demos](https://github.com/WebBluetoothCG/demos) (Web Bluetooth Community Group) - Various, plus links to others.\n* [Griffin Powermate Playground](https://github.com/beaufortfrancois/sandbox/blob/gh-pages/webusb/griffin-powermate.html) - Using WebUSB.\n* [node-hid examples](https://github.com/node-hid/node-hid#examples) - Despite the name, most directly use low-level read/write operations rather than HID abstractions.\n\n\n## Ideas\n*Great idea, no time or no device? File an issue to share.*\n\n* Device explorer tool - Web tool for conveniently viewing device info, monitoring input reports, and sending output/feature reports; something in the style of [this one for Web Bluetooth](https://googlechrome.github.io/samples/web-bluetooth/device-info.html).\n\n\n## Forums \u0026 discussion\n* [Human Interface Device (HID) API](https://discourse.wicg.io/t/human-interface-device-hid-api/3070) (WICG Discourse) - Introduction by the editor of the specification, and answers to questions.\n* [Intent to Implement: WebHID (Human Interface Device)](https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/OaDCpCaEe_4/3taK3m75DAAJ) (chromium.org blink-dev) - Introduction by the editor of the specification, and answers to questions.\n\n\n## Miscellaneous\nNone yet.\n\n\n## Related\n* [Web Bluetooth API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Bluetooth_API) (MDN)\n* [WebUSB API](https://developer.mozilla.org/en-US/docs/Web/API/USB) (MDN)\n* [chrome.hid API](https://developers.chrome.com/apps/hid) - For Chrome Apps.\n* Web Serial API\n  * [Specification](https://wicg.github.io/serial) (WICG)\n  * [Discussion](https://discourse.wicg.io/t/serial-api-moving-from-web-of-sensors-cg-to-web-incubator-cg/2940) (WICG Discourse)\n  * [Chromium implementation tracking bug: Web Serial API](https://bugs.chromium.org/p/chromium/issues/detail?id=884928)\n\n\n## License\n[![CC0](http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg)](https://creativecommons.org/publicdomain/zero/1.0/)\n","projects_url":"https://awesome.ecosyste.ms/api/v1/lists/robatwilliams%2Fawesome-webhid/projects"}