Inspect keyboard event details
All computation runs locally in your browser

Keycode info is a small inspector for KeyboardEvent properties. Press any key and it shows the values you typically need when building shortcuts: key, keyCode, code, location, and modifiers.
What problems does it solve?
Developers
Implementing hotkeys, editors, or web apps with shortcuts.
QA / Support
Reproducing keyboard issues reported by users.
Security teams
Auditing keyboard-driven flows (e.g., OTP entry, admin panels).
If you’re working on authentication flows, you might also like our OTP code generator or Basic auth generator to sanity-check your client/server implementation.
Worked example 1: press Shift
On most keyboards, pressing Shift yields values similar to these:
When implementing a shortcut like “Shift + K”, you typically check and the actual key using or .
Worked example 2: Enter vs NumpadEnter
Some keys have different physical locations. For example, the main Enter key and the numpad Enter key often differ by and :
If you want the shortcut to work for both, prefer checking or handle both codes.
A code editor shortcut (Cmd/Ctrl + K)
You are implementing a shortcut to open a command palette in a web editor.
Inputs
Result
How to apply it: Use the tool to confirm the key is lowercase/uppercase on your layout, then normalize in code.
A shortcut works on US layout but fails elsewhere
A teammate reports that your “Alt + /” shortcut does nothing on a different keyboard layout.
Inputs
Result
How to apply it: If you want the physical key, bind by code; if you want the character, bind by key.
Different behavior for left vs right Shift
You are building an accessibility feature where Right Shift toggles a mode.
Inputs
Result
How to apply it: Use location as a fallback if code is missing in an embedded environment.
Laptop function keys and media keys
F-keys may trigger brightness/volume unless the user holds Fn (hardware-dependent).
Inputs
Result
How to apply it: Document alternate bindings or allow user-custom shortcuts.
Defining shortcuts
Choose whether to bind by character (key) or physical key (code).
Debugging mismatch reports
Compare values from different OS/browsers to find the difference.
Left/right modifiers
Use location and code to distinguish Shift/Ctrl/Alt variants.
Laptop function keys
Understand why media keys trigger instead of F-keys.
Mobile keyboards
See whether mobile browsers emit the same keys as desktop.
Security reviews
Validate that keyboard-only flows are reachable and consistent.
If you’re implementing shortcuts for a global audience, it’s often best to provide a settings screen where users can rebind keys instead of hard-coding a single layout.
Prefer modern fields
Use and in new code. is legacy and can be inconsistent.
Normalize when you mean “character”
If you bind a shortcut by , consider normalizing case:.
Make shortcuts configurable
Layouts differ. A configurable shortcut system reduces support tickets and helps international users.
Copy just what you need
When filing a bug report, pasting , and modifier state is usually enough to reproduce.
This tool doesn’t “compute” a numeric answer the way a math calculator does. It simply displays the browser’s KeyboardEvent fields. Still, it helps to think of a key press as a bundle of values:
Each field answers a different question about the same key press.
How to interpret the fields
Modifiers can be treated as a set of booleans: . In this tool we display them as a human-readable string.
Key vs Code
answers “what character/action did the user intend?” while answers “which physical key did they press?”.
If you bind by character, it may move on non‑US layouts. If you bind by physical key, it stays on the same key but may produce a different character.
Why keyCode still shows up
is deprecated in modern specs, but it’s still present for compatibility. If you’re maintaining older code, this tool helps you map old numbers to modern fields.
Location (left/right/numpad)
is especially useful for modifiers and numpad keys. For example, left Shift and right Shift can be distinguished.
Need to test copy/paste friendly outputs while building auth tools? Pair this with the OTP code generator when verifying keyboard-driven OTP input flows.
Use when you want the physical key (layout-independent), and when you want the typed character (layout-dependent).
is legacy and historically inconsistent across browsers. Prefer modern fields in new code.
On macOS, check for Command. On Windows/Linux, check for Control.
Yes. Use or.
Not always. Some mobile browsers omit certain keys or emit composition events. Use this tool to verify what you actually receive.
These values are typically not sensitive, but be cautious if you’re testing in a context where key presses could reveal secrets (for example, passwords). Avoid sharing any private data.
Different browsers and operating systems can emit slightly different keyboard values. Hardware (like laptop Fn keys) and input methods (IME, accessibility tools) can also change what events you receive.
This tool is for inspection and debugging only. It does not replace cross-device testing for critical shortcuts.
Use a simple chronometer (stopwatch) to track elapsed time down to milliseconds. Runs locally in your browser.
Normalize email addresses to a standard format for easier comparison. Useful for deduplication and data cleaning. Runs locally in your browser.
Estimate the time needed to consume a total amount at a constant rate, and get an expected end time. Runs locally in your browser.
Parse and decode your JSON Web Token (JWT) and display its content. All computation runs locally in your browser.
Know which file extensions are associated to a MIME type, and which MIME type is associated to a file extension. Includes a full MIME types table.
Generate random Lorem Ipsum placeholder text with customizable paragraphs, sentences, and word counts. Runs locally in your browser.