RSS show – a RSS feed reader for the webbrowser

A single-file, client-side RSS feed reader that runs entirely in your browser. No server required, no dependencies, no build process.

RSS Show main interface showing multiple feeds in a grid layout

Features

Core Functionality

  • Pure Client-Side: Single HTML file with no external dependencies
  • Multi-Feed Display: View multiple RSS/Atom feeds in a customizable grid layout
  • Offline Capable: Works from local filesystem or any web server
  • Import/Export: Share feed lists via JSON files or dpaste.com with QR codes

Feed Management

  • Auto-Refresh: Configurable per-feed automatic updates (default: 5 minutes)
  • Custom Titles: Override feed titles with your own names
  • Feed Filters: Hide unwanted entries with regex-like patterns
  • Read Tracking: Mark entries as read, show only unread items
  • Drag & Drop: Reorder feeds via drag and drop (desktop) or menu (mobile)

Content Control

  • Media Filtering: Automatically strips video, audio, and embedded content to prevent unwanted downloads
  • Tracking Pixel Removal: Detects and removes 1×1 tracking pixels
  • Image Control: Toggle image display on/off (disabled by default)
  • Smart Title Cleanup: Removes duplicate titles from feed descriptions

Customization

  • Grid Layout: 1-8 columns, automatically adjusts to screen width
  • Per-Feed Settings: Individual refresh intervals and auto-update toggles
  • CORS Proxy: Configurable proxy with optional authentication
  • Update Delay: Stagger feed refreshes to avoid overwhelming proxy servers

Quick Start

Basic Usage

  1. Open the file: Simply open rssshow.html in any modern web browser
  2. Add a feed: Click the “Add Feed” button and enter an RSS/Atom feed URL
  3. Done: Your feeds will load automatically

Example Feeds

The repository includes a feeds.json file with example feeds:

https://delta.chat/feed.xml
https://www.heise.de/rss/heise.rdf
http://rss.slashdot.org/Slashdot/slashdot
https://rss.golem.de/

You can import this file via: Hamburger menu → Import Feeds → Select feeds.json

URL Parameters

Debug Mode

Enable detailed console logging:

rssshow.html?debug=true

Custom Proxy

Override the CORS proxy:

rssshow.html?proxy=http://localhost:3000/proxy.php?url=

Auto-Import Feed List

Automatically import feeds from dpaste.com:

rssshow.html?dpaste=ABC123

Combine multiple parameters:

rssshow.html?debug=true&dpaste=ABC123

Feed Sharing

Share Feed List

  1. Click hamburger menuExport FeedsShare via dpaste.com
  2. Your feed list is uploaded to dpaste.com (expires in 1 day)
  3. Get a QR code and URL with ?dpaste=<id> parameter
  4. Recipients can scan the QR code or click the link for one-click import

QR code sharing dialog showing auto-import URL

Manual Export/Import

  • Export: Hamburger menu → Export Feeds → Download JSON file
  • Import: Hamburger menu → Import Feeds → Select JSON file

Export format includes feeds and filters:

{
  "feeds": [
    "https://example.com/feed.rss",
    "https://another.com/atom.xml"
  ],
  "filters": {
    "https://example.com/feed.rss": ["Sponsored", "Advertisement"]
  }
}

Feed Filters

Hide unwanted entries using filter expressions in the Edit Feed dialog.

Filter Syntax

  • One filter per line
  • Case-sensitive matching from start of title
  • Wildcards:
    • .* – Match any characters (zero or more)
    • .+ – Match one or more characters
    • .? – Match exactly one character
    • \. – Literal dot (escape with backslash)
  • Implicit .* at end of each filter

Examples

Sponsored.*          # Hides titles starting with "Sponsored"
Ad:.*                # Hides titles starting with "Ad:"
\[Promo\].*          # Hides titles starting with "[Promo]"
.*cryptocurrency.*   # Hides titles containing "cryptocurrency" anywhere

Using Filters

  1. Click hamburger menu on feed → Edit
  2. Enter filter expressions (one per line)
  3. Click Save
  4. Filtered entries show as “ignored: n” in feed status bar
  5. Click ignored count to temporarily show filtered items

Settings

Global Settings

Access via hamburger menu → Settings:

  • Enable auto-refresh: Global toggle for all feeds
  • Show images: Display images in feed descriptions (default: off)
  • Show feed status bar: Display countdown timers and ignored counts
  • Grid columns: Number of columns (1-8, default: 4)

Per-Feed Settings

Access via feed hamburger menu → Edit:

  • Custom title: Override the feed’s title
  • Enable auto-refresh: Toggle auto-refresh for this feed
  • Refresh interval: Minutes between updates (default: 5)
  • Filters: Hide unwanted entries (edit mode only)

Proxy Configuration

Access via hamburger menu → Proxy:

  • Custom proxy URL: Override default CORS proxy
  • Username/Password: Optional proxy authentication
  • Delay between updates: Seconds between feed refreshes (default: 1)

Default proxy: https://api.allorigins.win/raw?url=

Keyboard & Interaction

Feed Controls

  • – Refresh feed manually
  • – Mark all entries as read
  • – Open feed menu (Move Up/Down, Edit, Remove)

Entry Interaction

  • Click title – Open link in new tab and mark as read
  • Middle-click title – Open link and mark as read
  • Click unread count – Temporarily show only unread entries
  • Click ignored count – Temporarily show filtered entries

Drag & Drop (Desktop)

Drag feed boxes to reorder them. On mobile, use the feed menu (☰ → Move Up/Down).

Browser Compatibility

Works in all modern browsers that support:

  • ES6 JavaScript
  • Fetch API
  • LocalStorage
  • DOM Parser

File Structure

This is a single-file application:

  • rssshow.html – Complete application (HTML + CSS + JavaScript)
  • No build process required
  • No external dependencies
  • No server-side code needed

Optional files:

  • feeds.json – Default feed list for first-time users
  • proxy.php – Example CORS proxy (if self-hosting)

CORS Proxy

RSS feeds require a CORS proxy to bypass browser cross-origin restrictions.

Default Proxy

Uses https://api.allorigins.win/raw?url= – a free third-party service. Please note that this is not the most reliable choice.

Alternative: https://proxy.corsfix.com/?url= kindly provided by Corsfix for use by rssshow.dummzeuch.de.

Self-Hosted Proxy

For better privacy/reliability, host your own:

  1. Copy proxy-config.example.php to proxy-config.php
  2. Set credentials in proxy-config.php
  3. Configure proxy URL in Settings → Proxy
  4. Enter username/password if using authentication

Example URL: http://localhost/proxy.php?url=

Privacy

  • No tracking: Zero analytics, no cookies, no external scripts
  • Local storage only: All data stored in browser localStorage
  • No accounts: No sign-up, no login required
  • Feed sharing: dpaste.com uploads are public but unlisted (expire in 1 day)

Technical Details

Storage

All data stored in browser localStorage:

  • savedFeeds – Array of feed URLs
  • feedSettings – Per-feed configuration (title, intervals, auto-refresh)
  • feedFilters – Filter expressions per feed
  • readEntries – Tracking of read entry links
  • autoUpdateEnabled – Global auto-refresh setting
  • showImagesEnabled – Image display preference
  • gridColumns – Grid layout preference
  • customProxy – Custom CORS proxy URL
  • proxyUsername / proxyPassword – Proxy authentication
  • feedUpdateDelay – Delay between feed updates

Feed Formats

Supports both RSS and Atom:

  • RSS: <item>, <title>, <link>, <description>, <pubDate>
  • Atom: <entry>, <title>, <link href="">, <content>/<summary>, <published>/<updated>

Content Sanitization

Automatically removes:

  • <video>, <audio> – Video and audio elements
  • <iframe>, <embed>, <object> – Embedded content
  • <source>, <track> – Media source elements
  • Tracking pixels (1×1 or 2×2 images, hidden images)
  • <img> tags (when “Show images” is disabled)

Development

Built with:

  • Vanilla JavaScript (ES6)
  • No frameworks or libraries
  • Single HTML file architecture
  • LocalStorage for persistence

See CLAUDE.md for development guidelines and architecture details.

License

Created by Thomas Mueller using vibe coding with Claude and Mistral.

Support

For issues or questions:

  • Check the built-in Help (hamburger menu → Help)
  • Review CLAUDE.md for technical details
  • File issues on the project repository

Version Control

This project uses SVN (Subversion).