LED Matrix Vocab (also titled "LED Matrix Word Randomizer") is a web-based Japanese vocabulary study tool for the Framework Laptop 16 LED Matrix modules, developed by community member Jacob Padgett (GitHub: jpadgett314). It periodically displays a random Japanese word on the LED Matrix modules, turning idle screen real estate into a passive language-learning aid1. The app is available as a live demo and can be installed as a Progressive Web App (PWA) for offline desktop use1.
How It Works
The app uses the Web Serial API to communicate with up to two LED Matrix modules installed in the Framework Laptop 16. A random Japanese word is selected from built-in JLPT word lists (or user-created custom lists) and rendered as scrolling text on the connected LED Matrix display1. The browser tab shows the current word with a link to Jisho.org for full definitions2.
Word Rendering Pipeline
- Word selection — a random word is drawn from the active word source (JLPT level or custom list)
- Font rendering — the word is rendered to an
OffscreenCanvas using the jiskan16 bitmap font (converted to WOFF2), with pixels below 75% brightness discarded to handle anti-aliasing artifacts3
- Frame encoding — the rendered image is encoded as a 9x34 brightness map suitable for the LED Matrix
- Serial transmission — frames are sent to the module via Web Serial through a dedicated Web Worker to avoid throttling when the browser tab is inactive1
Dual Module Support
The app supports both the left and right LED Matrix module slots independently. A swap button exchanges the port assignments without reconnection2.
Features
| Feature | Details |
|---|
| Language | JavaScript (no bundler, no build step) |
| Interface | Web Serial API (Chromium-based browsers required) |
| Firmware support | Default firmware (auto-detected) and FW_LED_Matrix_Firmware (auto-detected)1 |
| Word sources | JLPT N5, N4, N3, N2, N1 (separate lists), Wikipedia word frequency, custom word lists13 |
| Auto mode | Configurable interval (5–300 seconds, default 60) with countdown display2 |
| Custom word lists | Create, edit, delete custom vocabulary collections stored in localStorage1 |
| Offline / PWA | Installable to desktop; service worker enables offline use1 |
| Theme | Light, dark, and auto modes2 |
| Dual module | Independent left/right connections with port swap2 |
| Jisho.org integration | Direct link to full word definition on the Japanese dictionary site2 |
Third-Party Assets
Version History
| Version | Date | Changes |
|---|
| 0.1.0 | 2025-11-09 | Initial release with JLPT word lists and auto mode1 |
| 0.2.0 | 2025-11-21 | Added support for sigroot firmware (auto-detected)3 |
| 0.3.0 | 2025-11-24 | Custom word lists panel with create/edit/delete controls3 |
| 0.3.2 | 2025-12-16 | Separate JLPT-level word sources; service worker activation fix; firmware detection fix3 |
CJK Font Rendering
Rendering CJK characters on the 9-pixel-tall LED Matrix presents significant challenges. The browser's font engine applies anti-aliasing to the jiskan16 bitmap font, which produces poor results at small pixel sizes. The app works around this by rendering to an OffscreenCanvas and discarding pixels below 75% brightness, producing clean monochrome output. The font was converted from TrueType to WOFF2 (dropping unused embedded bitmap tables) with no change in final appearance3.
| Project | Description |
|---|
| led-matrix-controllers | Cross-firmware abstraction library by the same author, extracted from this project. Supports default, sigroot, and sparkle firmware via Web Serial and WebHID4 |
| FW_LED_Matrix_Firmware | Alternative Arduino-based firmware with direct PWM/scale control and higher grayscale fidelity5 |
| inputmodule-rs | Official Framework firmware, CLI, and Python tools for the LED Matrix6 |
| dotmatrixtool | Framework's official LED Matrix drawing tool; the original inspiration for this project1 |
Technical Details
| Detail | Value |
|---|
| License | MIT1 |
| Stars | 61 |
| Contributors | 1 (jpadgett314)1 |
| Created | November 9, 20251 |
| Source | Served directly from public/ directory — no bundler or build step1 |