Open-source project
newsboat/newsboat avatar
newsboat/newsboat

Newsboat: A Terminal RSS Reader That Keeps Feeds Out of the Browser

An RSS/Atom feed reader for text terminals

3,917 stars251 forksC++MIT

At a glance

What is it?
Newsboat is a C++ and Rust RSS/Atom reader for the text console, forked from Newsbeuter. It is small, configurable through a plain text file, and last pushed on 2026-09-20.
Who is it for?
Adopt Newsboat if you already live in a terminal, want feeds in a plain text file, and are willing to install a C++17 toolchain plus Rust and a stack of libraries. Skip it if you need a graphical reader, a hosted sync service, or a Windows build, since the README lists no Windows install path.
Can I use it commercially?
Yes. MIT 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 4 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 September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What Newsboat Is For, and Who It Is Not For

Newsboat pulls RSS and Atom updates directly from sites and shows them in one terminal interface. The README frames the appeal plainly: many feeds carry the full text of a post, so you never start a browser. That single constraint explains most of the design. There is no web view, no account, and no server. The program is a local client that fetches over libcurl, stores articles in SQLite, and renders the text itself with a built-in HTML renderer.

The target user is someone who already works in a terminal and resents switching windows to read a blog post. The README also positions Newsboat as a client for hosted reading services such as The Old Reader, NewsBlur and FeedHQ, so it can sit in front of an account you already have rather than replacing it. It is a poor fit for anyone who wants images laid out as a web page, a mobile app, or a shared team inbox. It is also a poor fit for a user who does not want to compile software: the README lists a long dependency chain and no prebuilt Windows binary.

The Fetch, Store, Render Pipeline

The architecture is visible in the repository layout. The C++ sources live in src/, include/, rss/ and filter/, while rust/ holds a Cargo workspace with members libnewsboat, libnewsboat-ffi, strprintf, regex-rs and http-test-server. The Makefile builds libboat.a from the C++ object files and links it against the Rust FFI library, which is why the dependency list includes both a C++17 compiler and stable Rust with Cargo.

Data flows through three stages. libcurl fetches each URL from the urls file. libxml2 and json-c parse the response, since feeds are XML but some services answer in JSON. Articles land in a SQLite database through the SQLite3 dependency. When you open the program, the built-in HTML renderer converts stored markup into terminal text, so reading happens offline after the fetch. The filter/ directory holds a separate parser for the killfile and query language, generated with Coco/R when the regenerate-parser target is run. That parser is what lets you filter articles by title, author or contents and aggregate them into meta-feeds.

Installing Newsboat and Adding Your First Feed

The fastest path on a system with snapd is the Snap package. The README notes that the snap is strictly confined, so it only supports xdg-open as the browser and cannot run arbitrary scripts for rendering or bookmarking.

bash
sudo snap install newsboat

If you need scripts, build from source instead. Install the dependencies first; on Debian and derivatives the headers are in -dev packages such as libsqlite3-dev. Then compile and install.

bash
make -j8
sudo make install

The README states that make install places everything under /usr/local, and that you can redirect it with a prefix, for example sudo make prefix=/opt/newsboat install. To remove it later, run sudo make uninstall.

Once installed, feeds live in a urls file under your Newsboat configuration directory. Each line is one feed URL, optionally preceded by a quoted title and a tag. After writing the file, start the program and it will fetch and cache the entries.

bash
newsboat

The README points to the documentation and FAQ at newsboat.org for the full configuration reference, including bookmarking scripts, killfiles, query feeds and macros.

Where the Dependency List Bites

The most likely failure is not in Newsboat but in the environment around it. The dependency list is unusually specific: GNU Make 4.0 or newer, a C++17 compiler, stable Rust and Cargo 1.94.0 or newer, STFL 0.21 or newer, SQLite3 3.5 or newer, libcurl 7.32.0 or newer, libxml2, json-c 0.11 or newer, Asciidoctor 1.5.3 or newer, and an AWK implementation.

The STFL entry deserves attention. The README links to newsboat/stfl rather than the original project and states the upstream is dead, so a distribution package that ships the old STFL may not match what the build expects. The SSL header requirement is the second trap: you must install the headers for whichever library libcurl was built against, and the README tells you to find that out from curl --version. Guessing wrong produces a link error rather than a clear message.

The Docker build path has its own caveat, stated in the README: the resulting binary might not run outside the container if your system lacks the necessary libraries or has versions that are too old. That makes Docker a reasonable way to try the build, and a poor way to produce a binary for another machine.

How Newsboat Differs from a Hosted Reader

The obvious alternative is a hosted web reader, and the difference is not cosmetic. A hosted reader keeps your subscriptions, read state and unread counts on someone else's server, so you get the same view from a laptop and a phone with no setup. Newsboat keeps all of that in a local SQLite database, which means the state lives on one machine unless you sync the database yourself or point Newsboat at a service like The Old Reader or NewsBlur.

The trade runs the other way too. A hosted reader can change its terms, drop a feature, or shut down, and you have no fallback. Newsboat is MIT licensed and the source is in the repository, so the client keeps working against any feed that still serves XML. The cost is that you maintain the toolchain. The README lists Rust 1.94.0 or newer alongside the C++17 compiler, which is a heavier build requirement than most terminal utilities carry.

Maintenance, Licence and Upgrade Cost

The repository is not archived, and the last push was on 2026-09-20, so the project is being worked on. That matters for a reader that depends on the shifting behaviour of third-party feeds and reading services.

The licence is MIT, which is permissive and imposes no copyleft obligation on your own code. It says nothing about the licences of the dependencies you must install to build it, and those are separate works with their own terms. That is a packaging question for whoever distributes the binary, not something the MIT header resolves.

Upgrade cost is dominated by the toolchain, not by Newsboat itself. Because the build needs a C++17 compiler, stable Rust and Cargo, and a specific set of library headers, a machine that builds Newsboat today may fail after a distribution upgrade changes libcurl's SSL backend or the STFL package. Building in a chroot, which the README suggests as a way to avoid polluting your system with developer packages, is also the cheapest way to keep a known-good build environment around.

Editorial conclusion

Adopt Newsboat if you already live in a terminal, want feeds in a plain text file, and are willing to install a C++17 toolchain plus Rust and a stack of libraries. Skip it if you need a graphical reader, a hosted sync service, or a Windows build, since the README lists no Windows install path. Before committing, run make and make install on a scratch machine and confirm that your libcurl SSL library and SQLite version satisfy the dependency list, because a mismatch there is the most likely first failure.

Frequently asked questions

How do I install Newsboat?

You can install it from your distribution's repository, via Snap with sudo snap install newsboat, or build it from source with make followed by sudo make install. The README notes that the Snap is strictly confined and cannot run arbitrary scripts for rendering or bookmarking.

How do I use Newsboat?

Write your feed URLs into the urls file in your Newsboat configuration directory, then run the newsboat command. It fetches the feeds, stores the articles in a local database, and renders the text in the terminal. The README points to the documentation and FAQ at newsboat.org for the full configuration reference.

Can you provide a terminal-based RSS reader?

Newsboat is exactly that: an RSS/Atom feed reader for the text console, and a fork of Newsbeuter. It fetches feeds directly and renders text-only entries with a built-in HTML renderer, so you do not need to open a browser.

What is the best open source RSS reader?

Newsboat is one open source option: it is MIT licensed and its source is in the repository. Whether it is the best depends on your environment, since it runs in the text console and the README lists no Windows installation path.

Official sources

  1. Issues
  2. License: MIT
  3. newsboat/newsboat on GitHub
  4. Project website
  5. README
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.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/newsboat-newsboat.svg)](https://hysenlabs.com/projects/newsboat-newsboat)