rdrview runs a browser style reader extraction from the terminal
Firefox Reader View as a command line tool
At a glance
- What is it?
- rdrview is a small C program that pulls the main article out of a webpage and hands it to a character mode browser, aimed at people who read RSS in a terminal. The interesting part is the sandbox it puts the HTML parser in.
- Who is it for?
- Use rdrview when you read RSS in a terminal browser and want articles stripped of navigation and ads before lynx sees them, and expect to install it from source on Linux, OpenBSD or FreeBSD where the seccomp, Pledge and Capsicum sandboxes exist. Skip it on macOS if you cannot accept a parser running without a sandbox, and skip it if your reading already happens in a browser that ships its own reader mode.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 52 days ago.
- What is it written in?
- Mainly C, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 21, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A reader mode that ends in a text browser
Terminal RSS readers show you a wall of markup stripped of images and scripts, and long articles arrive with navigation, share buttons and subscription prompts still in the text. rdrview is a command line tool that extracts the main content from a webpage, the same job the Reader View feature does in a modern browser, and it was written to sit in front of a character mode browser so the article reads cleanly. The stated audience is people using terminal RSS readers, and the output is expected to be mostly equivalent to what Firefox produces. That last point matters for how you judge the tool: it is a port of an existing algorithm rather than a new heuristic, so the extraction quality on a given page should track Firefox closely.
A hand transpilation of Mozilla's Readability.js
The code is closely adapted from the Firefox implementation of Readability.js, and the credits section goes further, describing the project as a transpilation done by hand of Mozilla's Readability.js, which was itself heavily based on Arc90's readability.js. The upstream licence notice is reproduced in the project, including the Arc90 copyright line and the Apache 2.0 text. In the source layout this shows up as a src/ directory of C files with a src/rdrview.h header shared by them, and the build records the current commit in a generated header:
src/version.h: COMMIT
@printf '#define GIT_COMMIT\t"%s"\n' $(GIT_COMMIT) > src/version.hThat means a binary carries the short commit hash it was built from, which is a useful detail when you are running several copies on different machines and want to know which one you have.
HTML parsing happens inside a sandboxed subprocess
The project is young and written in C, and the author says outright that it is reasonable to worry about memory issues. The answer is architectural rather than a promise: all HTML parsing happens inside a sandboxed subprocess, with the sandbox mechanism chosen per operating system. Seccomp on Linux restricts the system calls the parser can make, Pledge on OpenBSD confines it further, and Capsicum does the equivalent job on FreeBSD. The point of running the parser in a separate, confined process is that a bug in the HTML handling, which in a browser would be handled by the browser's own sandbox, does not inherit the privileges of the shell that invoked the tool. This is the part of the design worth copying, and it is also the part most constrained by the operating system underneath.
Building on Debian, Fedora and the BSDs
The Linux build has three direct dependencies: libxml2, libseccomp and libcurl. On Debian and Ubuntu the first two come from:
apt install libxml2-dev libseccomp-devThe libcurl package comes in different flavours depending on which backend provides the SSL support, and any of them will do, so the GnuTLS variant is the one named:
apt install libcurl4-gnutls-devA character mode browser is needed for the tool to be useful, and lynx is the one given:
apt install lynxPackage names differ by distribution, so on Fedora the equivalent single line is:
dnf install libcurl-devel libxml2-devel libseccomp-devel lynxThe build itself is a plain make in the source directory, and the first thing to try is pointing it at a page:
make
./rdrview 'https://github.com/eafer/rdrview'The man page ships with the source and installs alongside the binary.
Where the BSDs need an extra flag and macOS needs a warning
On the BSDs you also need GNU make, and the package installs differ. OpenBSD:
pkg_add gmake gcc libxml curl lynxFreeBSD:
pkg install gmake gcc libxml2 curl lynxAfter that, gmake builds it and gmake install puts it in place. The BSDs ship no mailcap file by default, so rdrview has no idea which browser to hand the text to, and you have to name it explicitly:
./rdrview -B lynx 'https://github.com/eafer/rdrview'macOS is the weak spot. The author does not own Apple computers, so the build is reported rather than confirmed by the person who wrote it, and no sandbox is implemented there. The tool still runs with the --disable-sandbox flag, as long as you accept the risk. That is the clearest statement in the project about where its safety argument does not hold.
A two stage Docker image that ships lynx with the binary
The repository carries a Dockerfile that packages the tool for containers. The builder stage installs the compiler and the three development libraries, copies the tree in, and builds and installs:
FROM debian AS builder
RUN apt update && apt install build-essential libxml2-dev libseccomp-dev libcurl4-gnutls-dev -y
COPY . .
RUN make && make installThe runtime stage is a plain Debian with the runtime libraries and a browser, and only the binary crosses over from the builder:
FROM debian
RUN apt update && apt install -y libcurl3-gnutls libxml2 lynx
COPY --from=builder /usr/local/bin/rdrview /usr/local/bin/rdrview
CMD ["/usr/local/bin/rdrview"]Because the runtime image includes lynx, a container that runs rdrview can render the extracted article without a browser on the host, which is the arrangement that makes sense for a script that feeds a feed reader.
Small versions, a recent push and an Apache 2.0 licence
The version numbers here are small and the cadence is regular. The tagged releases are v0.1.3 on 2024-10-28, v0.1.4 on 2025-05-11 and v0.1.5 on 2025-10-04, and the last push to the master branch was on 2026-08-31. That is recent activity on a small codebase, and the tool itself is described as young, so an upgrade is a rebuild rather than a migration. The licence field on the repository says Apache-2.0, and since the algorithm comes from Mozilla's Readability.js, which is under the same licence, and that in turn derives from Arc90's readability.js, the notices are reproduced in the project rather than stripped out. Anyone redistributing the binary keeps those attribution obligations, which is a mild cost compared with the code being freely usable in a pipeline.
Editorial conclusion
Use rdrview when you read RSS in a terminal browser and want articles stripped of navigation and ads before lynx sees them, and expect to install it from source on Linux, OpenBSD or FreeBSD where the seccomp, Pledge and Capsicum sandboxes exist. Skip it on macOS if you cannot accept a parser running without a sandbox, and skip it if your reading already happens in a browser that ships its own reader mode. Verify first that the version you pick has the sandbox you rely on, that a default profile-less browser is configured for the BSDs with the -B flag, and that the output you get matches what Firefox would show for the same page.
Frequently asked questions
What is rdrview used for?
It extracts the main content from a webpage, the way the Reader View feature of a modern browser does, so the result can be handed to a character mode browser. It is intended to be used with terminal RSS readers, and the output is expected to be mostly equivalent to the Firefox version.
How does rdrview protect itself when parsing untrusted HTML?
All HTML parsing happens inside a sandboxed subprocess. Seccomp is used on Linux, Pledge on OpenBSD and Capsicum on FreeBSD, so a fault in the HTML handling is contained in a confined process.
How do I build and install rdrview on Linux?
Install libxml2-dev, libseccomp-dev and a libcurl development package such as libcurl4-gnutls-dev, plus lynx if you want a browser to render the output. Then run make in the source directory, and make install to place the binary and its man page.
Why does rdrview fail on OpenBSD and FreeBSD without a browser flag?
The BSDs do not provide a mailcap file by default, so rdrview has no default browser to hand the extracted text to. Name one explicitly with the -B option, for example ./rdrview -B lynx with the URL as the argument.
Does rdrview work on macOS?
The project reports that it builds on macOS, but no sandbox is implemented there. It can be run with the --disable-sandbox flag, and the author states that the user has to accept the risk.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/eafer-rdrview)Was this useful?