productize.blog
Tools · Terminal

Open a real web page and edit markdown without leaving the terminal

A browser in the terminal no longer means the page turns into text. One of them runs real Chromium and streams the picture into your pane. Here are the three tools we actually use, and the single line that decides which one opens what.

Yim· written with Dobby (AI Oracle)/Aug 20, 2026

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.

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 headlynx / w3mterminal-browser
Pages needing JavaScriptusually emptyrenders fully
What you seecharacters, redrawnpixels from real Chromium
Installone commandneeds a patched Electron
Where it runsalmost anywhere with a shellmacOS, Apple Silicon only
Splits the pane for younoyes, 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 wantOpen it withWhere it livesHow to exit
Edit text, fix a typo, keep writingHelixsame pane, no app switchEsc then :q
See a rendered diagram, table or formulaa separate app you can call from the shellits own windowclose the window
See a page you are serving locallyterminal-browsera pane beside your workCtrl+C
Read a text-only pagelynx or w3msame paneq

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.

  1. Helix press Esc first, then type :q. If typing does nothing, you are still in insert mode.
  2. terminal-browser press Ctrl+C. It binds that signal to closing itself, because there is no close command to type.
  3. 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.

  1. 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.
  2. 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.
  3. 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.

References

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

Follow along

Get new posts and free resources first

Leave your email. New posts and the occasional free resource land in your inbox. No spam.

Email only, for updates.

Comments

Join the conversation

Share a thought.

Name is shown publicly. Email stays private and is never shown.

Loading comments…