Most terminal browsers make you remember commands. termbrowser gives you the parts of a normal browser you actually use — the address bar, the buttons, history and bookmarks — and keeps the page itself as plain, fast text.
It is a single Python script built on ncurses. Pages are fetched and converted to text by lynx, so the rendering is the same text you get from a mature terminal browser. What changes is everything around the page: you can see where you are, click Back, add a bookmark and jump to any link without memorising a key sequence.
Six conveniences you normally lose in a terminal
The address bar is always there
The top line shows the current URL. Press Tab, type a new address and hit Enter. Without a scheme, https:// is assumed.
A toolbar you can click
Back, Forward, Reload, Home, Links, Bookmarks and Quit sit on one row. Use Tab and the arrow keys, or the mouse where the terminal supports it.
History that behaves
Back and Forward move through the pages of this session. No guessing whether a page is still in a stack, no retyping an address you just left.
Bookmarks that survive restarts
Press B, choose “add current page”, and it is written to ~/.termbrowser_bookmarks.json — readable, portable, yours.
Every link on one screen
Press l to list every link on the page with a number. Pick one with the arrow keys and press Enter. No tab-hopping through a wall of text.
Starts instantly, stays tiny
About 20 KB of Python. No Electron, no Chromium, no background service and no config file. If Python and lynx are installed, it runs.
What it is — and what it deliberately is not
It is
- A text browser with a normal-browser interface
- A single, readable Python script under the MIT license
- Comfortable over SSH, in tmux, on a console or an old laptop
- Happy with the lynx you already have installed
- Useful when you want to read, not to be rendered at
It is not
- A CSS or JavaScript engine
- A replacement for Firefox on a modern web app
- A browser that displays images
- A cloud service or an account you have to create
- A 200 MB dependency hiding in a terminal window
Pages are rendered as text by lynx: no CSS, no JavaScript and no images. Sites that depend on JavaScript will not work, and that is an honest limitation rather than a bug. For reading documentation, wikis, news, mail archives and man-page-style content, the trade is a very good one.
Built for the places a GUI browser cannot go
- Servers and SSH sessions. Read documentation or check a status page without forwarding X11 or opening a second machine.
- Old hardware and small VMs. A 20 KB script and a text renderer use a fraction of the memory of a modern browser.
- Slow or metered connections. Text arrives quickly; images and scripts never do.
- Focus. One page, one column, no autoplay and no notification badges.
- Terminal-first workflows. Stay in tmux, keep your shell, and still have Back, Forward and bookmarks.
Install in three lines
sudo apt install python3 lynx
mkdir termbrowser-0.1 && tar xzf termbrowser-0.1.tar.gz -C termbrowser-0.1
cd termbrowser-0.1 && sudo ./install.sh
Then run termbrowser, or termbrowser https://example.org. The full requirements, checksum and uninstall steps are on the download page; the keys and bookmarks are covered in the guide.
Quick answers
Is termbrowser a full browser?
It is a text browser with a normal-browser interface. It renders pages through lynx, so HTML is supported but CSS, JavaScript and images are not.
Does it work over SSH and in tmux?
Yes. It is an ncurses program, which is exactly the environment it was built for. Mouse support depends on the terminal and, on a plain Linux console, on gpm.
Where does it store bookmarks?
In a plain JSON file at ~/.termbrowser_bookmarks.json. You can copy it, edit it or keep it in your dotfiles.
What does it cost?
Nothing. termbrowser is MIT-licensed free software. lynx is a separate program under the GPL and is installed by your package manager.