Web MIDI Keyboard Tester - Online Visual Note Display
Connect your MIDI keyboard and see pressed notes visually on a piano roll. Check velocity, channel, and aftertouch. No DAW needed.
UD5 Toolkit
View raw MIDI messages in real-time from your connected MIDI devices.
Waiting for MIDI messages...
Connect a MIDI device and start playing to see raw messages here.
Each MIDI message starts with a status byte (value 0x80–0xFF), followed by 0–2 data bytes (0x00–0x7F):
The high nibble (first hex digit) of the status byte indicates message type; the low nibble (0–F) is the MIDI channel (displayed as 1–16).
| Type | Status Byte Range | Data Bytes | Description |
|---|---|---|---|
| Note On | 0x90–0x9F | 2 | Note number (0–127), Velocity (1–127; 0 = Note Off) |
| Note Off | 0x80–0x8F | 2 | Note number, Release velocity |
| Control Change | 0xB0–0xBF | 2 | Controller number (0–127), Value (0–127) |
| Program Change | 0xC0–0xCF | 1 | Program/patch number (0–127) |
| Pitch Bend | 0xE0–0xEF | 2 | LSB + MSB → 14-bit value (0–16383, center=8192) |
| Channel Aftertouch | 0xD0–0xDF | 1 | Pressure value (0–127) |
| Poly Aftertouch | 0xA0–0xAF | 2 | Note number, Pressure value |
| System Messages | 0xF0–0xFF | Varies | Clock, Start/Stop, SysEx, Active Sensing, etc. |
Common reasons your MIDI device may not appear:
http://localhost..txt file. The export includes timestamps, message types, MIDI channels, raw hexadecimal bytes, and human-readable descriptions—perfect for debugging, documentation, or sharing with collaborators. The log captures up to 500 messages in the browser; older messages are automatically trimmed.
MIDI Channels: A single MIDI cable can carry 16 independent channels (1–16). Each channel can control a different instrument or sound. The channel is encoded in the low nibble of the status byte (bits 0–3). For example, 0x90 = Note On Channel 1, 0x91 = Note On Channel 2, etc.
Running Status: To reduce data overhead, MIDI allows omitting the status byte when consecutive messages share the same type and channel. The Web MIDI API typically reconstructs full messages, so you'll always see complete status bytes in this monitor—no need to track running status manually.
Connect your MIDI keyboard and see pressed notes visually on a piano roll. Check velocity, channel, and aftertouch. No DAW needed.
Select a piano key to see its frequency in Hz and MIDI note number. Great for tuning, synthesis, or music theory exploration with interactive keyboard.
Enter a URL and click to check if it's reachable from your browser (CORS-limited, uses no-cors fetch). Quick manual test. Local only.
Send a test CSP violation report and see the ReportingObserver in action. Understand how monitoring works.
Watch for updates to aria‑live regions and log what a screen reader would announce. Debug live regions.
See a live readout of window scrollX and scrollY. Visualize scroll direction. For debugging sticky navs.
Select any element on the test page and monitor its size changes with ResizeObserver. See log of all entries.
Analyze a monophonic audio recording and convert the pitch into a MIDI file. Perfect for capturing musical ideas. Client-side.
Request permission and detect when the user is idle (away from keyboard). See screen lock state. For native‑like apps.
Enter a MIDI note number (0–127) or a musical note name and get the exact frequency in Hz. Piano keyboard picker.