Menu

Tree [r94] / trunk /
 History

HTTPS access


File Date Author Commit
 backend 2025-12-21 twm [r28] .htaccess required with Apache
 CLAUDE.md 2026-01-02 twm [r94] Update CLAUDE.md with sponsored proxy documenta...
 README.md 2026-01-02 twm [r92] added alternative (sponsoring) CORS proxy
 feeds.json 2025-12-26 twm [r66] removed the subscription only file name from th...
 rssshow.html 2026-01-02 twm [r93] Add sponsored proxy option for rssshow.dummzeuc...

Read Me

RSS Show

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

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 1x1 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

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

Tested on:

  • Chrome/Edge (recommended)
  • Firefox
  • Safari

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 (https://corsfix.com) 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 (1x1 or 2x2 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). The .svn directory contains version control metadata.

MongoDB Logo MongoDB