Browse the web
from the sofa.
SofaNav turns any website into a console-style menu. Your D-pad and stick move between links and buttons by where they sit on screen, like an Xbox or TV app. No mouse cursor to drag around.
Try it right here
This page runs SofaNav. Pick up a controller (Xbox, PlayStation, Switch Pro, Steam Deck…), press any button, and use the D-pad. Press Y to see where each direction goes. No controller?
A store shelf
A feed: each post is one stop. X enters it, B leaves.
A live chat: the right stick scrolls it
Keyboard mode: ←↑→↓ D-pad · Enter A · Backspace B · X enter · Y graph view · PgUp/PgDn page · J/L scroll the chat. Click the button again to turn it off.
Feels like a console, works on any site
Websites weren't designed for controllers. SofaNav reads the page the way you see it and figures out what's left, right, up and down.
D-pad that makes sense
Moves to the nearest thing in that direction, keeping rows and columns lined up. Pressing back the opposite way returns where you came from.
Free-aim stick
Point the left stick at any angle and land on what's there. The graph view draws a pie of where every angle goes.
Cards and panels
Posts, cards and scrolling panels are single stops you can skim past. X steps inside, B steps back out.
Inside iframes too
Embedded chats, comment boxes and widgets navigate as if they were part of the page. Frames from other sites are reached over a channel other pages can't fake: extension messaging, or your userscript manager's private storage (Tampermonkey or Violentmonkey).
Survives page changes
When a site swaps content or hides the button you pressed, focus lands on whatever is nearest instead of getting lost.
Keyboard-like repeat
Move once, pause, then repeat. Stick bounce and drift are filtered, so a flick moves exactly one step.
Install
Pick one. They run the same code.
Userscript
- Install Tampermonkey or Violentmonkey.
- Open the script; your manager offers to install it.
- Updates arrive automatically.
Browser extension
- Download and unzip.
- Chrome / Edge:
chrome://extensions→ Developer mode → Load unpacked → pick the folder. - Firefox:
about:debugging→ Load Temporary Add-on →manifest.json.
The extension also switches browser tabs with LB / RB.
Just try it
- Open any page and its developer console (F12).
- Paste the script and press Enter.
- It lasts until the page reloads.
Controls
| Button | Does |
|---|---|
| D-pad | Move to the next link or button in that direction |
| Left stick | Aim at any angle |
| A | Click; on a text field, start typing |
| B | Back: leave a text field, leave a card or panel, close a dialog or menu, then go back a page |
| Hold B | Go back a page, even with a menu open |
| L3 (click the left stick) | Mouse mode: a cursor for anything the D-pad can't reach. Stick moves, D-pad nudges, A clicks, right stick scrolls. L3 again to go back |
| X | Enter a card or panel |
| Y | Graph view: off → arrows (or the stick pie) → whole page |
| Right stick | Scroll; on a focused panel, scrolls the panel |
| LT / RT | Page up / page down |
| LB / RB | Previous / next tab (extension only) |
| View | Turn SofaNav on or off |
| Menu ☰ | Debug report in the console (for bug reports) |
Found a page where it gets lost? Press ☰ and open an issue with the console output.