DEV Community

Lakshmi Sravya Vedantham
Lakshmi Sravya Vedantham

Posted on

I scanned my Gmail and found $340/mo in subscriptions I completely forgot about

Last month I ran a scan of my inbox and found $340/month in active and dormant subscriptions — services I had signed up for and completely forgotten.

So I built inboxscan — an open-source Python tool that finds every subscription hiding in your email. Runs entirely on your machine. Nothing leaves your device.

What it does

  • Scans your inbox via IMAP for receipt, invoice, and billing emails
  • Detects 40+ known services (Netflix, Spotify, Adobe, ChatGPT, Claude, Railway, etc.)
  • Catches unknown recurring charges via payment processors (PayPal, Stripe)
  • Shows start date, next renewal date, trial end date, cancellation date
  • Flags dormant subscriptions — things you pay for but never use
  • Opens the cancellation page directly

v0.5.0 — now with a macOS menu bar app

pip install "inboxscan[menubar]"
inboxscan-menubar
Enter fullscreen mode Exit fullscreen mode

Your subscription burn rate lives in the menu bar. Click any subscription to see:

  • 🟢 Active / 🟠 Dormant / 🟡 Trial ending soon / 🔴 Cancelled
  • When it started, when it renews next
  • Which email account it came from
  • Direct link to cancel

Works with all major email providers

v0.5.0 added multi-provider support — not just Gmail:

# Gmail (app password — no OAuth setup needed)
inboxscan run --email you@gmail.com --password xxxx-xxxx-xxxx-xxxx

# Outlook / Hotmail
inboxscan run --email you@outlook.com --password <app-password>

# Yahoo
inboxscan run --email you@yahoo.com --password <app-password>

# iCloud
inboxscan run --email you@icloud.com --password <app-specific-password>

# Fastmail
inboxscan run --email you@fastmail.com --password <app-password>

# ProtonMail (requires Bridge)
inboxscan run --email you@proton.me --password <bridge-password>

# Custom IMAP
inboxscan run --email you@company.com --imap-host mail.company.com --password <password>
Enter fullscreen mode Exit fullscreen mode

The IMAP server is auto-detected from your email domain. For unknown domains, it prompts you once and saves to ~/.inboxscan/config.json.

Example CLI output

INBOXSCAN REPORT
════════════════════════════════════════════════════════════
Scanned: personal@gmail.com
Found: 8 subscriptions  |  Total burn: $142.93/mo

 [ACTIVE]   Netflix       $15.99/mo   Jan 2025   Mar 15, 2026
 [ACTIVE]   Claude Pro    $20.00/mo   Feb 2025   Mar 18, 2026
 [ACTIVE]   Adobe CC      $54.99/mo   Jan 2025   Mar 20, 2026   🟡 Trial ends Mar 20
 [DORMANT]  Audible       $14.95/mo   Jun 2024   Oct 02, 2024
 [DORMANT]  Skillshare     $9.99/mo   May 2024   Sep 15, 2024

════════════════════════════════════════════════════════════
Potential savings: $24.94/mo (cancel DORMANT subscriptions)
Enter fullscreen mode Exit fullscreen mode

Privacy

Everything runs locally:

  • No credentials stored (app password used only during the scan)
  • No network calls beyond your email provider IMAP server
  • Results cached in ~/.inboxscan/cache.db on your machine
  • Zero telemetry
  • Open source — you can read every line

Install

# CLI
pip install inboxscan

# macOS menu bar app
pip install "inboxscan[menubar]"
inboxscan-menubar
Enter fullscreen mode Exit fullscreen mode

GitHub: github.com/LakshmiSravyaVedantham/inboxscan

Would love feedback — especially if you find subscriptions you forgot about. What was the most surprising one?

Top comments (1)

Collapse
 
willemhubert profile image
Willem Hubert

340/month? I hope they were only a month old 🥲. Nice idea!