Tiny Tiny RSS

Web-based news feed reader and aggregator

RSS & News Readers ★ 3k stars Medium setup GPL-3.0

Tiny Tiny RSS is a free and open-source web-based news feed reader and aggregator with powerful filtering and plugins. It targets power users who want a highly configurable RSS reader. It is deployed via Docker.

Key features

  • Powerful filtering rules
  • Plugin ecosystem
  • Multi-user support
  • Mobile app available

Pros & cons

Strengths

  • Highly configurable
  • Mature and stable
  • Strong filtering

Trade-offs

  • Dated interface
  • Setup is opinionated

Tiny Tiny RSS replaces

Last reviewed Sep 13, 2026 · 935 words

Tiny Tiny RSS has the best filtering engine of any self-hosted feed reader, and that is the entire argument for choosing it in 2026 over FreshRSS or Miniflux. If you follow 300 feeds and want rules that match on regex against title, content, author, link or tag, then score, label, mark read or delete before you ever see the item, nothing else in the RSS category comes close. If you follow 30 feeds and want something pleasant, the other two are easier to install, nicer to look at, and far friendlier to ask for help.

A 2005 codebase that never stopped moving

The project is GPL-3.0, written in PHP, and has been maintained by one developer since 2005. It sits at about 3,000 stars, but the number is misleading because the code lives on the project's own GitLab instance rather than GitHub, and the GitHub presence is a mirror. There are no versioned releases: the project is trunk-based, latest is whatever was merged this week, and the answer to "which version are you running" is a commit hash. That is not laziness, it is a policy, and it means updating is docker compose pull on a schedule of your choosing with occasionally a database migration that runs itself on the next page load.

Multi-user support is proper, with per-user feeds, filters and preferences, so one instance can serve a household. The API is stable and old, which is why a dozen third-party mobile clients on Android and iOS speak it natively, plus a Fever-compatible plugin for readers that only know that dialect.

Docker is the only supported install, and the compose file is opinionated

For years people installed tt-rss on shared PHP hosting. The maintainer ended that: the only supported deployment is the official compose stack, which runs four containers: the app, a PostgreSQL database (MySQL support is gone), an nginx front end, and a separate updater container that fetches feeds continuously so you never need to configure cron. The catalogue's 256 MB RAM figure is accurate for the lot on a small library.

The stack listens on port 8280 by default and serves under the /tt-rss/ path, which surprises people who expect it at the root. Configuration is entirely through environment variables prefixed TTRSS_, and the one you must get right is TTRSS_SELF_URL_PATH, which has to be the exact public URL including that path, or logins loop and the mobile API returns broken links. The default admin login is admin with password password; change it in the first 60 seconds. Put the whole thing behind a reverse proxy for TLS, and if you want it at a different path than /tt-rss/, accept that you are going against the grain and will need to test each update.

The filters are the product

A filter in tt-rss is a set of match rules combined with a set of actions. Rules can match against title, content, both, link, author, tags, or the date, using regular expressions, scoped to one feed, a category, or everything. Actions include mark as read, delete, set a score, assign a label, stop further processing, and tag. Because scoring is cumulative you can build a ranking: a rule adding 10 to anything mentioning a topic you care about, another subtracting 50 from any post with "sponsored" in the title, then a view sorted by score. That is a personal recommendation engine built from four rules, and it is why people who have used it for a decade refuse to leave.

The plugin system extends this. Bundled plugins pull full article text for feeds that only publish summaries, fix comic strips that ship images in odd ways, and add keyboard shortcuts; a large third-party set covers reading-mode extraction, image proxying and share targets. Plugins are PHP files dropped into a mounted directory, enabled per user or globally, and they survive updates.

Where it loses to FreshRSS and Miniflux

The interface is a three-pane desktop layout that has been refined but not redesigned in years. It is fast and dense, and on a phone it is usable only through a third-party app. FreshRSS has a mobile-friendly web UI and a larger, gentler community; Miniflux has a deliberately minimal one and a maintainer who documents everything. The FreshRSS versus Miniflux comparison is the right read if filtering is not your priority, because either of them is the safer default for a first self-hosted reader.

The other honest con is support. The maintainer's forum answers are famously terse, questions that skip the documented install path are closed, and the project does not court newcomers. None of that affects the software, which is stable to the point of boredom, but it changes who should run it: someone comfortable reading a compose file and a wiki rather than asking.

What I'd do

If you are a power reader with a large subscription list and opinions about what you do not want to see, run tt-rss. Use the official compose stack unmodified, set TTRSS_SELF_URL_PATH correctly on the first try, put Caddy in front for TLS, back up the PostgreSQL volume nightly, and pull images on the first of the month. Spend the first weekend writing filters, because a tt-rss instance without them is just an ugly FreshRSS. Everyone else, and anyone who wants to read on a phone without installing a client, should start with FreshRSS and come back only when its filtering runs out.

Compare Tiny Tiny RSS

30 head-to-head comparisons.

Similar rss & news readers apps