Features and advantages over lynx, w3m, elinks and Browsh
termbrowser is not trying to be a new rendering engine. It is the interface a terminal browser should have had: an address bar that stays visible, buttons you can press, history, bookmarks and a link list — around lynx’s proven text renderer.
The interface a terminal browser usually makes you build yourself
Terminal browsers are powerful, but most of them expose their power as commands and menus. You learn that g goes to a URL, that bookmarks live behind a certain key, and that the list of links is somewhere else again. That is fine for experts and tiring for everyone else.
termbrowser makes the common actions visible. The address bar occupies the top line at all times, the toolbar lists Back, Forward, Reload, Home, Links, Bookmarks and Quit, and the status line tells you which area has focus. Nothing essential is hidden behind a command you have to remember.
Address bar
The current URL is always on screen. Press Tab to focus it, type a new address and press Enter. A missing scheme is filled in as https://, so example.org works. Esc leaves the bar without navigating and Ctrl-U clears it.
Clickable toolbar
Every common action is one press away. Use Tab to reach the toolbar, the arrow keys to choose a button and Enter to activate it. Where the terminal reports mouse events, you can click the buttons and the address bar directly.
History, bookmarks and links
Back and Forward behave like a normal browser’s session history. Bookmarks are stored as plain JSON in ~/.termbrowser_bookmarks.json and survive restarts. The link list gives every link on the page a number, so opening the fourth reference is a two-key operation instead of a scroll-and-hunt exercise.
How termbrowser compares
The table compares the interface and the footprint, not the quality of the rendering engines. lynx, w3m and elinks are mature programs with their own strengths; termbrowser uses lynx for rendering and adds a familiar layer on top.
| Feature | termbrowser | lynx | w3m | elinks | Browsh |
|---|---|---|---|---|---|
| Always-visible address bar | Yes | No | No | No | Yes |
| Clickable toolbar | Yes | No | No | Menu-driven | Limited |
| Persistent bookmarks with a UI | Yes | Yes | Yes | Yes | Yes |
| Numbered link list | Yes | Yes | Yes | Yes | No |
| Mouse support | Where available | Optional | Yes | Yes | Yes |
| Renders CSS, JavaScript and images | No | No | No | No | Yes |
| Install footprint | ~20 KB + lynx | Small | Small | Small | Firefox required |
| Configuration needed | None | Optional rc file | Optional rc file | Menus and rc file | Install + config |
| Readable source, one language | Python, one file | C | C | C | Go + Firefox |
Advantages in daily use
Against lynx: the same pages, better controls
termbrowser calls lynx -dump, so it inherits lynx’s parsing and its compatibility with text-first sites. What it adds is the part lynx leaves to you: a persistent address bar, a visible toolbar and a link picker that does not require memorising navigation commands. If you like how lynx renders but not how it makes you drive, this is the gap termbrowser fills.
Against w3m and elinks: zero configuration
w3m and elinks are full applications with their own configuration systems, menus and key maps. That is the right choice if you want to tune every detail. termbrowser deliberately has no configuration file: install it, run it, and the six actions you need are on screen. Bookmarks are a JSON file you can read in any editor.
Against Browsh and Carbonyl: tiny instead of heavy
Browsh and Carbonyl take a different route: they run a real browser engine and paint the result into a terminal. That is impressive, and it is the right tool when a page truly needs JavaScript. It also means downloading and running Firefox or Chromium-class software. termbrowser is a 20 KB Python script on top of lynx — the opposite trade. On a small VPS, an old laptop or a metered connection, the small option is often the only pleasant one.
Against all of them: you can read the whole program
termbrowser is one Python file under the MIT license. You can read it in a sitting, check what it does with your URL, change the toolbar, or vendor it into your own tools. There is no build system, no bundled runtime and no update service. That kind of auditability is rare in browser software.
Where termbrowser is the wrong tool
Be clear about the limits: termbrowser does not execute JavaScript, does not apply CSS and does not show images. A modern single-page application, a video site or a map will not work. If you need those, use a graphical browser or a terminal browser that embeds a real engine. termbrowser is for text-first reading, documentation, wikis, news, status pages and the long tail of the web that still works without a script.