A small Chrome extension (Manifest V3) that lets you navigate and open Google search results entirely from the keyboard.
| Key | Action |
|---|---|
j / s / ↓ |
Move to next result |
k / a / ↑ |
Move to previous result |
Enter |
Open the selected result |
o |
Open the selected result in a new tab |
1–9 |
Jump straight to result N |
/ |
Focus the Google search box |
Esc |
Clear the current selection |
? |
Toggle a small help panel |
Shortcuts are automatically disabled while you're typing in a text field
(e.g. the search box) so they never interfere with normal typing — press
Esc to leave the search box if a shortcut key is needed while focused there.
- Install Bun and run
bun install. - Run
bun run build. - Open Chrome and go to
chrome://extensions. - Turn on Developer mode (top-right toggle).
- Click Load unpacked and select the generated
distfolder. - Run a search on Google — the extension activates automatically on
google.com/search(and several other Google country domains listed inmanifest.json).
bun run typecheckchecks the TypeScript source.bun run buildcompilessrc/content.tswithtsc, removes only comments, whitespace, and newlines with Terser (without compression or name mangling), then assembles a loadable extension indist.bun run packagebuilds the extension and creates a versioned Chrome Web Store upload atrelease/google-search-kbnav-v<version>.zip.
- If you search on a Google domain that isn't already listed in
manifest.json, add a line like"*://www.google.<tld>/search*"to thematchesarray and reload the extension. - Google occasionally changes the internal CSS class names of its result
blocks.
src/content.tschecks a handful of known selectors (.MjjYud,.g,.tF2Cxc, etc.) and validates each candidate by confirming it wraps a title and a link, which makes it fairly resilient — but if results ever stop highlighting, that selector list (near the top ofsrc/content.ts) is the first place to look. - No permissions beyond running on Google search pages are requested — the extension doesn't read or send any of your data anywhere.