For users who consume content from many sources and prefer pulling rather than being pushed via algorithmic feeds, RSS readers remain the right tool. The hosted RSS reader market consolidated to a few survivors after Google Reader’s 2013 shutdown. The self-hosted alternatives have continued to evolve and now offer mature options.
This is the practical comparison.
The three main options
FreshRSS, Miniflux, and Tiny Tiny RSS dominate the self-hosted RSS reader space. Each has been actively maintained for years. Each is open source. Each runs on small hardware (Raspberry Pi, small VPS, etc.).
The choice between them is preference; all three do the core job well.
FreshRSS
FreshRSS is a PHP-based self-hosted RSS reader. Active development, broad feature set, mature community.
What FreshRSS does well:
The interface is the most polished of the three. Mobile-friendly responsive design. Multiple themes including dark mode.
The feature set is comprehensive. Automatic feed discovery, OPML import/export, multiple categories, tagging, full-text search.
The plugin system is real. Various community-maintained plugins for filtering, content modification, integration with other services.
Authentication options include simple password, LDAP integration, persona-style authentication.
The mobile app ecosystem is good. Multiple third-party Android and iOS apps support FreshRSS via the Fever API.
What FreshRSS does less well:
PHP-based stack means somewhat heavier resource usage than Go-based alternatives.
The interface, while polished, is more cluttered than Miniflux’s minimalist approach.
Miniflux
Miniflux is a Go-based self-hosted RSS reader. Single binary deployment, minimalist interface, focused feature set.
What Miniflux does well:
The single Go binary makes deployment trivially simple. Run the binary, point at a database, you are done.
Resource usage is minimal. Runs comfortably in 50-100 MB RAM.
The interface is intentionally minimalist. No clutter, no extra features, just RSS reading.
The keyboard navigation is excellent. Power users can read efficiently without touching the mouse.
The web is responsive. Loads fast, even on slow connections.
The author’s commitment to minimalism is clear and consistent.
What Miniflux does less well:
The minimalism is also a limitation. If you want plugins, custom features, or extensive customization, Miniflux explicitly does not provide them.
The interface, while clean, lacks some convenience features other readers offer.
The mobile app support is real but limited to apps that support the Google Reader API or Miniflux’s own API.
Tiny Tiny RSS (TT-RSS)
Tiny Tiny RSS is a PHP-based self-hosted RSS reader, the longest-running of the three (active since 2005).
What TT-RSS does well:
The longest track record. Mature, well-tested, has handled essentially every RSS edge case.
Extensive plugin system. Some of the most comprehensive third-party integrations available.
Power-user features. Keyboard shortcuts, advanced filters, custom CSS injection.
Multi-user support is mature.
What TT-RSS does less well:
The interface is dated. Compared to FreshRSS and Miniflux, TT-RSS shows its 2005-era design heritage.
The PHP-based stack has the same resource usage characteristics as FreshRSS.
The community, while loyal, is smaller than FreshRSS’s now.
The original author has at times had public disputes with users in ways that made some people uncomfortable.
Side by side
| Feature | FreshRSS | Miniflux | TT-RSS |
|---|---|---|---|
| Language | PHP | Go | PHP |
| Single-binary deploy | No | Yes | No |
| Memory usage | 200-400 MB | 50-100 MB | 200-400 MB |
| UI polish | Best | Minimalist | Dated |
| Plugin system | Yes | No | Yes (extensive) |
| Multi-user | Yes | Yes | Yes |
| Mobile app support | Multiple | Multiple | Multiple |
| Maturity | High | High | Highest |
| Customizability | High | Low (by design) | Highest |
| Best for | General users | Minimalism | Power users |
Use cases where each wins
FreshRSS for users wanting the best UX with comprehensive features. The default recommendation for most self-hosters.
Miniflux for users wanting minimal resource usage and minimalist interface. Right for users who specifically value simplicity.
TT-RSS for power users with extensive plugin needs and tolerance for older interfaces.
Setup process for any of them
All three install via Docker Compose. The pattern is similar:
-
Create a docker-compose.yml with the RSS reader and a database (PostgreSQL is the common choice).
-
Run docker compose up -d.
-
Visit the web interface, complete first-time setup, create your admin user.
-
Import your existing RSS subscriptions via OPML file.
-
Configure backup of the reader’s database.
Total setup time: 30-60 minutes for someone familiar with Docker.
What about hosted alternatives
For users who do not specifically want to self-host:
Feedly: the most-popular hosted RSS reader. Free tier available; paid tiers add features. Functional but the corporate ownership and ad supported model are not aligned with privacy-tools community values.
Inoreader: alternative to Feedly, similar feature set. Better UX in some respects.
NewsBlur: smaller hosted reader, good UX, paid model.
For users wanting hosted simplicity: Feedly or Inoreader.
For users wanting to self-host: FreshRSS, Miniflux, or TT-RSS.
A specific recommendation
For most self-hosters wanting an RSS reader: FreshRSS. The UX is the best of the three, the features are comprehensive, the deployment is reasonable.
For self-hosters wanting minimal resource usage: Miniflux. Single binary, runs anywhere, intentionally minimalist.
For power users with specific needs: TT-RSS. The plugin ecosystem and customization depth justify the older UI for users who care about those features.
For users who do not specifically want to self-host: Inoreader is the best of the hosted alternatives.
FreshRSS | Miniflux | Tiny Tiny RSS
Related: Setting up your first homelab, 13 things I wish someone had told me before self-hosting