Buy back your attention, per page.

Pay pennies. Support the site. No tracking.

Demo mode is active — premium features are unlocked.

How AdSwap works

Add $ to your balance, click “Remove ads” on partner pages, and the publisher gets paid automatically.

Top up your balance

Add a few dollars via Stripe. Your balance only moves when you choose to hide ads.

Click “Remove ads”

On partner sites, a small chip appears. Confirm to unlock ad‑free for hours on that domain.

Publisher gets paid

We pay publishers monthly based on your passes. You keep full control and privacy.

What happens behind the scenes

AdSwap is a thin orchestration layer: the client chip triggers a small serverless call that records a domain pass, optionally charges Stripe, and returns a signed decision that the page (or extension) uses to hide ad slots — while the publisher still gets paid.

Runtime

  • Next.js (Pages) on Vercel
  • API routes: `/api/create-checkout-session`, `/api/stripe-webhook`
  • Stripe Checkout + webhooks (toggleable in demo mode)

Data

profiles(id uuid, is_premium boolean, stripe_customer_id text)
passes(id uuid, user_id uuid, domain text, expires_at timestamptz, amount_cents int, status text)
transactions(id uuid, user_id uuid, stripe_event_id text, amount_cents int, kind text)

Note: In demo, passes are granted without Stripe.

Privacy

  • No URL storage — domains only (hashed+salted)
  • No cross‑site tracking; opt‑in chip per domain
  • Publisher payouts are aggregated monthly

Read the deep dive

Peek at the internals — runtime, data model, payments, privacy.

Flow sketch

Reader clicks chip → POST /api/create-checkout-session { userId, domain }
  if ENABLE_PAYMENTS=false: upsert pass(userId, domain, expires_at)
  else: create Stripe Checkout (mode=payment or subscription)
  → return { url } or { demo: true }

Stripe → /api/stripe-webhook (checkout.session.completed | invoice.payment_succeeded)
  → mark pass active; record transaction; update publisher accrual bucket

Extension / page → reads signed decision and hides ad slots for the domain until expires_at
  → leak detected? extend or refund via small credit

Audience aligned

Partner with brands your users already love. Reach more people who actually convert.

Fair and transparent

Agree on slots and timelines. Both sides deliver — no middle‑men or ad‑network surprises.

Zero incremental spend

Grow faster by trading attention, not budget. Perfect for lean teams and indie products.

Ready to run your first swap?

Create an ad space in minutes and get matched today. You can start in demo mode and enable payments later.