You are in the middle of a command and you need to look at something. A file you just changed, a page you just started serving. What happens next is almost a ritual. Command-Tab to another window, hunt for the right tab, look, find your way back, then spend two seconds remembering where you were.
Those two seconds are not expensive because they are long. They are expensive because they happen dozens of times a day. The real cost is rebuilding your train of thought every time you come back, not the switching itself.
Productize moved the two things we switched away for most often, looking at a web page and editing a markdown file, into the terminal itself. This is what each tool can actually do, which one is worth the install, and the line we use to decide what opens what.
Part 1One line decides it: edit, view, or browse
Most people enter this topic asking which tool is best, and leave using one tool for everything. Which means half the time they are using the wrong one.
The more useful question is what do you want to do with that file or page right now. There are only three answers, and each has its own tool.
- Edit change text and save. This wants fast in and out, not pretty rendering.
- View see something a terminal cannot draw: a diagram, a formatted table, a maths formula.
- Browse see a page that only exists after code runs, like the app you just started locally.
These do not compete. They are different jobs. A tool that is fast to enter and leave usually cannot draw pictures, and a tool that draws pictures is usually too heavy to open for a single typo.
Part 2What is a terminal browser, and why the new one is different
A terminal browser is a browser that displays inside a terminal window. But the phrase covers two things that work in completely different ways, and that difference is what disappoints people on their first try.
The old kind: the page becomes text
lynx and w3m have been around for decades. They read the HTML and redraw it as plain characters. Fast, tiny, and available anywhere you have a shell.
The limit is that most of today's web needs JavaScript to run before there is anything to read. A page assembled on the client usually arrives empty, not because the tool is broken, but because it never ran that code in the first place.
The new kind: real Chromium, streamed in as pixels
The one we use is terminal-browser from zenbu-labs, and it works the opposite way. It runs real Chromium with no window of its own, then sends the finished rendering into the terminal using the kitty graphics protocol, which is how a program puts actual images on a terminal screen.
So what shows up in the pane is the same page a normal browser would show. JavaScript, CSS, fonts, all of it, because Chromium itself drew it. Nothing was reinterpreted.
That capability is not cheap. Reading its source on 31 July we found it requires a patched Electron 43.1.1 from zenbu-labs' own fork, and refuses to start at all without shared-texture support. The browser's own interface is not HTML either: it is React rendered into a Rust drawing engine.
Know the limits before installing: macOS on Apple Silicon only, and if you use Ghostty as your terminal it must be 1.3.0 or newer.
| Head to head | lynx / w3m | terminal-browser |
|---|---|---|
| Pages needing JavaScript | usually empty | renders fully |
| What you see | characters, redrawn | pixels from real Chromium |
| Install | one command | needs a patched Electron |
| Where it runs | almost anywhere with a shell | macOS, Apple Silicon only |
| Splits the pane for you | no | yes, and you pick the direction |
It ships four commands: open, ls to see what is running, setup to configure your terminal, and action to drive the open page. Note that there is no close command, which turns out to matter enough that it gets its own section below.
terminal-browser open localhost:5173 --split right
terminal-browser ls
Part 3Editing markdown in the terminal with Helix
For editing we picked Helix in early August, after one condition eliminated most candidates: it has to live in the terminal. Everything that opens its own window was out in the first round.
It did not win on feature count. It won because it works the moment you install it. Search, multiple cursors, jumping between headings, all there on first launch, with none of the plugin assembly older terminal editors ask for.
Pair it with marksman, a language server for markdown, and it completes links and headings across files, which is what keeps you oriented in a large set of documents that link to each other.
Two settings worth changing on day one
Turn soft-wrap on for scripts without word spaces. Thai, for instance, has no space between words, so without automatic wrapping a single sentence runs off the right edge and you scroll sideways to read what you just typed.
Turn auto-format off for markdown. The formatter rewraps the entire file to its own rules, so a three-word edit produces a two-hundred-line diff and nobody can review what actually changed.
That second one is a good example of a default that is right for code and wrong for writing. Code benefits from consistent formatting. Prose benefits from lines staying where they were.
Part 4The decision table
This is the table we actually use. It is organised by what you want to do, not by what each tool can do.
| What you want | Open it with | Where it lives | How to exit |
|---|---|---|---|
| Edit text, fix a typo, keep writing | Helix | same pane, no app switch | Esc then :q |
| See a rendered diagram, table or formula | a separate app you can call from the shell | its own window | close the window |
| See a page you are serving locally | terminal-browser | a pane beside your work | Ctrl+C |
| Read a text-only page | lynx or w3m | same pane | q |
The second row is the one people get wrong. A terminal cannot draw a diagram or a maths formula. If the job is to see those, forcing it into the terminal was the wrong choice from the start. Step out to something that renders, but call it from the shell so you never take your hands off where you are working.
Ours is an app we build from source, wired so a shell command opens it directly. The mechanism is more interesting than the app: one binary serves two roles by checking the name it was invoked under. Called by the command name, it behaves as a CLI. Called directly, it opens as an app.
Part 5The part nobody writes down: how to get out
A program that draws its own full-screen interface takes over the whole pane. Your usual keys stop working, and if you do not know the way out it feels like being trapped inside. That feeling is why people abandon these tools on day one, when the fix is three lines long.
- Helix press Esc first, then type
:q. If typing does nothing, you are still in insert mode. - terminal-browser press Ctrl+C. It binds that signal to closing itself, because there is no close command to type.
- Still stuck close the whole pane with your terminal's close-pane key.
Killing the process from another window always works and always loses unsaved work. Keep it as the genuine last resort.
This looks too small to write down, which is why no tool's getting-started page has it. But it is what decides whether you keep using the tool at all, so we now write the exit next to the install instruction, at setup time rather than while trapped inside.
Part 6Where to start
If you only try one thing, start on whichever side hurts more often.
- If you switch away to edit files install Helix first. It is usable immediately. If you write a script without word spaces, turn soft-wrap on before anything else, and add marksman later.
- If you switch away to look at pages try a text browser first, since it is free and installs in seconds. When the pages you need keep arriving empty, that is your signal that the Chromium-backed kind is worth its weight.
- Whatever you install, write down the way out immediately, in the same place you wrote the way in. When you are stuck inside is exactly when you cannot search for it.
The reusable principle is wider than terminals. Do not ask which tool is best. Ask what you want to do right now, and pick the one that matches the answer. Three tools with clear jobs are lighter to carry than one tool you keep forcing.
- terminal-browser (zenbu-labs): github.com/zenbu-labs/terminal-browser
- kitty graphics protocol: sw.kovidgoyal.net/kitty/graphics-protocol
- Helix: helix-editor.com · marksman: github.com/artempyanykh/marksman
- Ghostty: ghostty.org
- The internals described here (patched Electron, the Rust drawing engine, the platform limits) come from reading the project's own source on 31 July 2026 at commit
4547875. The four commands were confirmed from--helpon the machine in use, 20 August 2026. - The Helix decision and the settings for word-space-free scripts come from our own working notes, 9 August 2026.
Same series: Ghostty vs iTerm2: I ran both, one got deleted · My Ghostty and Zsh setup, without the one-command installer · What Raycast actually does