A vibed accessible, modern RSS client for the blind
  • Python 98.6%
  • Batchfile 0.9%
  • Shell 0.4%
Find a file
2026-10-25 22:41:41 -07:00
.github/workflows fix: fetch the release merge commit before tagging it in cloud release 2026-10-21 04:30:53 +00:00
assets Add accessible mac UI and cross-platform build pipeline 2026-04-15 12:04:16 -07:00
core Release v2.5.1 2026-10-25 22:41:41 -07:00
docs fix: preserve complete technology article bodies in both readers 2026-10-25 22:41:09 -07:00
gui feat(menus): add Feeds menu, move feed actions out of File 2026-10-25 12:55:51 -07:00
hooks chore: license BlindRSS under MIT and add SPDX headers 2026-07-24 11:48:32 -07:00
installer installer: stamp product name and version for SignPath 2026-10-08 07:37:28 -07:00
locale fix: preserve complete technology article bodies in both readers 2026-10-25 22:41:09 -07:00
providers fix: give hosted providers NPR audio and the right enclosure 2026-10-25 10:15:06 -07:00
sounds fix: NPR feed, add sounds, cleanup boilerplate, fix accessibility 2026-01-06 11:43:32 -08:00
tests fix: preserve complete technology article bodies in both readers 2026-10-25 22:41:09 -07:00
tools build: move local Linux packaging to WSL Docker 2026-10-11 21:24:15 -07:00
.gitattributes Build: update dependencies, drop the wxPython 4.2.5 Linux pin 2026-10-03 17:33:25 -07:00
.gitignore docs: keep the memory index out of the tracked agents.md 2026-09-01 09:56:31 -07:00
agents.md fix: give hosted providers NPR audio and the right enclosure 2026-10-25 10:15:06 -07:00
BUGFIX_mark_read_refresh.md Improve skip silence to avoid random word skipping - increased minimum to 800ms, padding to 300ms, reduced merge gap 2026-01-30 12:14:26 -08:00
BUGFIX_volume_jump.md fix: volume still jumped on first adjustment for slow streams 2026-07-03 13:58:59 -07:00
build.bat build: track trafilatura from upstream git master (bleeding edge) 2026-10-23 05:34:19 +00:00
build.md build: move local Linux packaging to WSL Docker 2026-10-11 21:24:15 -07:00
build.sh build: track trafilatura from upstream git master (bleeding edge) 2026-10-23 05:34:19 +00:00
caster_config.py feat: cast to Chromecast, AirPlay, UPnP/DLNA, Sonos, Roku and Kodi with Caster's engine 2026-09-18 10:21:41 -07:00
caster_devices.py feat: cast to Chromecast, AirPlay, UPnP/DLNA, Sonos, Roku and Kodi with Caster's engine 2026-09-18 10:21:41 -07:00
caster_engine.py fix: cache prefetched full text under the right article 2026-10-05 22:29:01 +00:00
caster_extras.py feat: cast to Chromecast, AirPlay, UPnP/DLNA, Sonos, Roku and Kodi with Caster's engine 2026-09-18 10:21:41 -07:00
CHANGELOG.md Release v2.5.1 2026-10-25 22:41:41 -07:00
check_miniflux.py chore: license BlindRSS under MIT and add SPDX headers 2026-07-24 11:48:32 -07:00
check_portable_db.py chore: license BlindRSS under MIT and add SPDX headers 2026-07-24 11:48:32 -07:00
check_reg.py chore: license BlindRSS under MIT and add SPDX headers 2026-07-24 11:48:32 -07:00
conftest.py test: skip the re-resolve tests when local TCP delivery is broken 2026-07-28 11:52:17 -07:00
debug_mark_read.py chore: license BlindRSS under MIT and add SPDX headers 2026-07-24 11:48:32 -07:00
FEATURE_remember_last_feed.md Improve skip silence to avoid random word skipping - increased minimum to 800ms, padding to 300ms, reduced merge gap 2026-01-30 12:14:26 -08:00
IMPROVEMENT_skip_silence.md Improve skip silence to avoid random word skipping - increased minimum to 800ms, padding to 300ms, reduced merge gap 2026-01-30 12:14:26 -08:00
LICENSE chore: license BlindRSS under MIT and add SPDX headers 2026-07-24 11:48:32 -07:00
main.py feat: SponsorBlock skipping, YouTube account sync, and data backup 2026-10-09 10:58:23 -07:00
main.spec feat: cast to Chromecast, AirPlay, UPnP/DLNA, Sonos, Roku and Kodi with Caster's engine 2026-09-18 10:21:41 -07:00
npr_test.py chore: license BlindRSS under MIT and add SPDX headers 2026-07-24 11:48:32 -07:00
portable.spec feat: cast to Chromecast, AirPlay, UPnP/DLNA, Sonos, Roku and Kodi with Caster's engine 2026-09-18 10:21:41 -07:00
pytest.ini fix: list YouTube channels through yt-dlp when their RSS feed fails 2026-09-23 19:18:22 -07:00
README.md build: sign Windows releases with SignPath in GitHub Actions 2026-10-08 07:36:23 -07:00
repro_check_supported.py chore: license BlindRSS under MIT and add SPDX headers 2026-07-24 11:48:32 -07:00
repro_extract.py chore: license BlindRSS under MIT and add SPDX headers 2026-07-24 11:48:32 -07:00
repro_extract_fixed.py chore: license BlindRSS under MIT and add SPDX headers 2026-07-24 11:48:32 -07:00
repro_relocation.py chore: license BlindRSS under MIT and add SPDX headers 2026-07-24 11:48:32 -07:00
repro_scroll.py chore: license BlindRSS under MIT and add SPDX headers 2026-07-24 11:48:32 -07:00
requirements.txt build: track trafilatura from upstream git master (bleeding edge) 2026-10-23 05:34:19 +00:00
setup.bat chore: license BlindRSS under MIT and add SPDX headers 2026-07-24 11:48:32 -07:00
start_blindrss.bat chore: license BlindRSS under MIT and add SPDX headers 2026-07-24 11:48:32 -07:00
update_helper.bat feat: SponsorBlock skipping, YouTube account sync, and data backup 2026-10-09 10:58:23 -07:00
update_helper.sh feat: SponsorBlock skipping, YouTube account sync, and data backup 2026-10-09 10:58:23 -07:00

BlindRSS

A vibe-coded, screen-reader-friendly desktop RSS and podcast client for Windows, macOS, and Linux, built for fast feed reading and dependable audio playback.

Join SerrebiProjects on Telegram License: MIT

Questions, bugs, or release news? Join the SerrebiProjects Telegram group, the fastest place to get help.

Features

  • Reads RSS/Atom feeds and plays podcast and video enclosures.
  • Works with local feeds and hosted providers: Miniflux, Inoreader, The Old Reader, and BazQux.
  • All / Unread / Read / Favorites views, with mark read/unread and mark all read.
  • Smart Folders, saved searches, and a Feeds with Errors view for feeds that quietly stopped updating.
  • Filter rules that move, label, or delete articles as they arrive.
  • Deleted Articles view that restores what you removed, and permanently deletes when you mean it.
  • Recovers full article text when a feed only ships summaries.
  • Reads YouTube videos as articles, with the description, transcript, and chapters inline.
  • Reads Reddit, Lemmy, Groups.io, and Google Groups discussions as whole threads rather than one post.
  • Discovers feeds from URLs and search providers: Apple Podcasts, gPodder, Feedly, NewsBlur, Feedspot, Reddit, the Fediverse, Feedsearch, and local discovery.
  • Subscribes to YouTube channels and playlists, Mastodon, Bluesky, PieFed, SoundCloud, and Mixcloud.
  • Imports subscriptions in bulk from OPML and from a YouTube Takeout export.
  • Fetches feeds behind bot protection using a configurable browser identity and imported clearance cookies.
  • Resolves YouTube, Rumble, and Odysee media through yt-dlp and built-in resolvers.
  • Smooths VLC playback and seeking with a local range-cache proxy.
  • Playback speed control, an equalizer, silence skipping, chapters, and soundcard selection.
  • Casts to Chromecast, AirPlay, DLNA/UPnP, Sonos, Roku and Kodi, using Caster's casting engine.
  • Tray controls, media-key support, and startup restore of your last feed and folder.
  • Windows notifications for new articles, with per-feed exclusions and per-refresh limits.
  • 67 remappable keyboard commands, grouped by feeds, articles, view, player, and playback speed.
  • An offline user guide under Help, with context-sensitive F1: pressing it on a control, a dialog, or a highlighted menu item opens the guide at that section.
  • Translated into 15 languages, with catalog updates delivered between app releases.
  • Built-in updater that verifies SHA-256 and Authenticode before applying an update.
  • Signed Windows builds. See the code signing policy.

Help

This README is a mix of user and contributor material. The end-user manual lives inside the application: Help > User Guide, or press F1 anywhere. F1 is context-sensitive — pressing it on a control, in a dialog, or with a menu item highlighted opens the guide at the section that explains it, and falls back to the front of the guide when there is nothing more specific.

The guide works offline, is fully keyboard-accessible, has searchable and selectable text, and follows the interface language when a translation of it exists (English otherwise). Its source is docs/help/en.md; see docs/help/README.md to translate it or add a topic.

Download and install

Grab the latest build from the Releases page. For a version-by-version history, see the changelog.

Windows installer (recommended)

  1. Download BlindRSS-Setup-vX.Y.Z.exe.
  2. Run it and approve the elevation prompt. It installs to Program Files, adds a Start Menu entry, and updates itself in place.

Windows portable

  1. Download BlindRSS-vX.Y.Z.zip.
  2. Extract it anywhere and run BlindRSS.exe — no installation required.

macOS and Linux

Download the matching …-macos.zip or …-linux.tar.gz asset from the same release.

Installed builds keep your settings and database in %APPDATA%\BlindRSS and default episode downloads to your Downloads folder. Uninstalling leaves your data untouched.

Code signing policy

Free code signing provided by SignPath.io, certificate by SignPath Foundation.

Windows releases are built from this repository on GitHub-hosted runners by cross-platform-release.yml and signed by SignPath. Only BlindRSS.exe and the BlindRSS installer are signed; bundled third-party components such as VLC, ffmpeg, yt-dlp and Deno are shipped as their own projects release them.

Team roles:

  • Committers and reviewers: serrebidev, the repository owner. Pull requests from anyone else are reviewed by the owner before they are merged.
  • Approvers: serrebidev. Every release signing request is approved by hand.

Privacy policy

This program will not transfer any information to other networked systems unless specifically requested by the user or the person installing or operating it.

BlindRSS has no telemetry, analytics or accounts of its own. It connects to the feeds, podcast and video hosts, feed search providers, hosted reader services and casting devices you choose to use, each under its own privacy policy. It also checks this repository's GitHub releases for app updates, and downloads translation updates and updates to the yt-dlp media helper; automatic update checks can be turned off in Settings.

Run from source (any OS)

  1. Install Python 3.14.
  2. Install dependencies: pip install -r requirements.txt
  3. Launch it: python main.py

Building

See build.md for the full release pipeline — PyInstaller packaging, SignPath code signing, the Program Files installer, and the Windows/macOS/Linux build dispatch.

Debug logging

Enable debug mode in Settings to write a rotating blindrss.log (DEBUG and above) next to your config and data. With debug mode off, no log file is created.

Contributing

Pull requests are welcome. If BlindRSS has been useful to you, open a PR with a fix or feature and I'll review it.

Translations

I only speak English, so I got several languages started with AI-assisted translation rather than leaving them untranslated. Human translation is always preferred, and I'd rather have a native speaker's review than a machine's best guess.

If you speak one of the supported languages and something reads wrong, awkward, or just off, please open a PR to fix it — I can't judge the wording myself, so I'll almost certainly accept it. See locale/README.md for how the translation files are laid out and how to update them.

License

BlindRSS is under the MIT license — use it, change it, redistribute it, or package it for a distro repository, no permission needed. Every source file carries an SPDX-License-Identifier: MIT header so packaging tools can pick the license up automatically.

It went unlicensed longer than it should have, which quietly blocked anyone trying to package it. If that was you, it's sorted now.

Community and support

Report bugs and request features in Issues. For questions, feedback, and release news, join the SerrebiProjects Telegram group.