Skip to content
Live demo

Custom Feeds

Most websites publish standard RSS/Atom feeds you can add directly. But sometimes you’ll want to follow content that doesn’t have a native feed, or a feed that requires special configuration.

Not all feed URLs are obvious. Here are reliable ways to find them:

Look for <link> tags in the page’s <head>:

curl -s https://example.com | grep -i 'application/rss\|application/atom'
PlatformFeed URL Pattern
WordPresshttps://site.com/feed/
Ghosthttps://site.com/rss/ or https://site.com/rss
Substackhttps://newsletter.substack.com/feed
Mediumhttps://medium.com/feed/@username
YouTubehttps://www.youtube.com/feeds/videos.xml?channel_id=CHANNEL_ID
Reddit subreddithttps://www.reddit.com/r/subreddit/.rss
GitHub releaseshttps://github.com/user/repo/releases.atom
GitHub commitshttps://github.com/user/repo/commits/main.atom

Paste any URL into RSS.app or FetchRSS to auto-detect or generate a feed.

GitHub publishes atom feeds for many events, which is useful for staying on top of open-source projects:

# New releases for a repository
https://github.com/vercel/next.js/releases.atom
# Commits to a branch
https://github.com/withastro/astro/commits/main.atom
# A user's public activity
https://github.com/dan-abramov.atom

For websites without native feeds, FetchRSS can generate a feed by scraping the page. Paste the feed URL it generates into SparkFeed.

Some feeds require authentication (e.g., private Substack newsletters). SparkFeed will support a headers field for custom feeds in a future release:

{
"url": "https://private-newsletter.com/feed",
"headers": {
"Authorization": "Bearer YOUR_TOKEN"
}
}

For now, if a feed requires authentication, you’ll need to find a public mirror or use an RSS proxy service.

SparkFeed tracks the success/failure of every feed fetch. You can identify broken feeds by:

  1. Looking for red status dots (🔴) in the sidebar
  2. Opening the feed settings to see the last fetch error
  3. Testing the URL directly in your browser

Common reasons a feed fails:

  • The URL has changed (check the website for a new feed link)
  • The website is temporarily down
  • The feed requires authentication
  • The server blocks automated requests (check User-Agent settings)