The problem
Long articles are rarely just articles. They arrive wrapped in a sticky header, a newsletter popover, a cookie banner, two ads that reflow the text as they load, and a sidebar of things you should read next. Safari’s Reader fixes all of that, but only in Safari, and only after the page has already loaded and jumped around a bit.
I wanted the reader view to be the destination, not a thing I remember to turn on afterwards. So I made WebReader: a small Mac app whose entire job is to take a URL and show you the text.
What it does
Send it a link and it opens in a clean 1200×800 window, no toolbar, no chrome — just the article. It registers as an http/https handler, so it shows up under Open with in Safari, Mail, Slack, or anywhere else a link lives. Set it as your default browser and every link lands in reader view; keep it alongside a real browser and use it deliberately for the long reads.
A few things that make it pleasant day to day:
- Any site, not one site. It has no home page of its own — it exists to receive links from elsewhere.
- ⇧⌘R toggles back to the full page when the reader view guesses wrong, which happens on pages that aren’t really articles.
- It remembers its window, so it opens where you left it.
- Aa sets type, column width and theme; the list button next to it reopens recent articles.
Install
brew install --cask yepzdk/tools/webreader
Or download WebReader directly — universal (Apple Silicon and Intel), macOS 13 or later. Every release is signed with my Developer ID and notarized by Apple, so it opens normally with no Gatekeeper detour. Versioned builds and checksums are on the releases page.
Where it came from
WebReader started as webwrap, the Mac app wrapper I built earlier, pointed at nothing in particular:
webwrap create --no-url --name "WebReader" --reader
--no-url builds a handler-only app with no home site that accepts links to anywhere, and --reader makes the distraction-free view the default. That’s still a fine way to get a bare-bones version — the docs are at github.com/yepzdk/webwrap, and I wrote more about it in my post about webwrap.
But the things I kept wanting — appearance controls, a recents list, and what’s next (read-aloud, a feed of related articles, an iPad version that syncs) — have nothing to do with wrapping a website. So WebReader is now its own project at github.com/yepzdk/webreader, and webwrap’s reader mode stays as it is. To build it yourself:
git clone https://github.com/yepzdk/webreader.git
cd webreader
Scripts/build-app.sh --install