What Is Value4Value?
Podcasting 2.0 introduced a way for listeners to send Bitcoin directly to content creators through RSS feeds. The podcast:value tag embeds payment information — Lightning node pubkeys, Lightning Addresses, split percentages — right in the feed XML. No intermediaries, no platforms taking a cut.
The problem: most podcast apps either don't support value tags, or they lock you into their ecosystem. What if you just want to paste a feed URL and send sats?
The Reader
reader.maximumsats.com does exactly that. Paste any RSS or Atom feed URL, and it:
- Fetches and parses the feed via a Cloudflare Worker (for CORS)
- Detects
podcast:valuetags at both channel and item level - Shows all value recipients with their names, types, and split percentages
- Lets you boost via WebLN with preset amounts (10/100/500/1000 sats) or custom
It handles both recipient types:
- Keysend (
type="node") — sends directly to a Lightning node pubkey - Lightning Address (
type="lnaddress") — resolves via LNURL, creates an invoice, pays it
Splits are calculated automatically. If a feed has 3 recipients at 60/30/10, a 100-sat boost sends 60/30/10 sats respectively.
How It Works
The entire app is a single Cloudflare Worker serving HTML + JS. No database, no auth, no npm dependencies. The feed proxy runs server-side to bypass CORS, and everything else runs in the browser.
Feed Parsing
RSS and Atom feeds are XML. The podcast:value tag looks like this:
<podcast:value type="lightning" method="keysend">
<podcast:valueRecipient
name="Host"
type="node"
address="03e7156ae33b0a208d..."
split="90" />
<podcast:valueRecipient
name="Producer"
type="lnaddress"
address="producer@example.com"
split="10" />
</podcast:value>
The reader uses the browser's DOMParser to extract these tags. Channel-level value tags apply to all episodes; item-level tags override for specific episodes.
Payment Flow
For keysend recipients, WebLN's keysend() sends directly to the pubkey. For Lightning Address recipients, the flow is:
- Fetch
/.well-known/lnurlp/<username>from the recipient's domain - Get the callback URL from the LNURL response
- Request an invoice for the exact amount (in millisats)
- Pay the invoice via
webln.sendPayment()
Each recipient gets their own payment. A boost to 3 recipients is 3 separate Lightning payments.
Try It
Open reader.maximumsats.com and paste a Podcasting 2.0 feed URL. You'll need a WebLN-enabled browser extension (like Alby) to send payments.
Some feeds to try:
- Any feed listed on Podcast Index that has a Lightning icon
- Search "podcasting 2.0" on your favorite podcast directory
Source Code
The reader is open source: github.com/joelklabo/v4v-reader
The entire app is one JavaScript file served from a Cloudflare Worker. Zero hosting cost, zero dependencies, deploys in seconds.
Resources
- podcast:value tag spec — the Podcasting 2.0 namespace
- WebLN specification — browser API for Lightning
- Add Lightning Tipping in 60 Seconds — simpler tipping for static sites
- Build an L402 Paywall — monetize APIs with Lightning