Subscription Finder

Paste your bank or card transactions and spot every recurring charge — cadence, next charge date and projected annual cost, ranked by yearly spend. Runs entirely in your browser: no bank linking, no upload, no sign-up.

Try:
Recurring charges

What this tool does

Paste a list of your bank or card transactions and this tool finds the recurring charges hiding in them — the subscriptions and memberships that quietly renew every month or year. It groups repeat charges from the same merchant, works out how often each one bills, estimates the next charge date, and projects what each is costing you per year. Everything runs locally in your browser — nothing is uploaded, there's no bank linking, and no sign-up.

Give it one transaction per line as date, description, amount:

2026-01-15, Netflix, 15.99

Most bank and card exports (CSV) already look like this, or can be pasted and lightly tidied to match. A header row or any line that doesn't parse is simply ignored.

Worked example

Paste this:

2026-01-01, Netflix, 15.99
2026-02-01, Netflix, 15.99
2026-03-01, Netflix, 15.99
2026-01-05, Spotify, 9.99
2026-02-05, Spotify, 9.99
2026-01-10, Corner Cafe, 4.50

and you get:

Found 2 recurring charges · $25.98/mo · $311.76/yr projected

1. Netflix — $15.99 monthly ×3 · next ~2026-03-31 · $191.88/yr
2. Spotify — $9.99 monthly ×2 · next ~2026-03-08 · $119.88/yr

Total: $25.98/mo · $311.76/yr

Netflix and Spotify each repeat, so they're flagged; the one-off Corner Cafe charge is not. Charges are ranked by projected annual cost so the expensive habits sit at the top.

How it reads each charge

ColumnWhat it does
MerchantThe first spelling seen for the group. Repeat charges are matched on a normalized merchant name, so NETFLIX #1234 and Netflix group together.
AmountThe typical (median) charge. Small variations group too — $15.99 and $16.20 from one merchant count as the same subscription.
CadenceThe median gap between charges → weekly, biweekly, monthly, quarterly, semiannual, annual, or every ~N days for anything irregular.
×NHow many matching charges were found.
Next ~dateAn estimate: the last charge date plus the median interval.
Per yearThe amount × charges per year — what it projects to annually.

Options

Limits and edge cases

FAQ

Is my statement data private?

Yes. The whole tool runs in your browser — your transactions are never uploaded to a server, there's no bank linking, and nothing is stored. You can even run it offline once the page has loaded.

What format should each line be in?

One transaction per line as date, description, amount, for example 2026-01-15, Netflix, 15.99. Only the first field is treated as the date and the last as the amount, so a description containing commas still works. Amounts can include a currency symbol or grouping commas ($1,299.00). Header rows and any line that doesn't parse are skipped.

Why isn't one of my subscriptions showing up?

A charge only counts as recurring once it appears at least the minimum-occurrences number of times (default 2). If a subscription bills annually, or you only pasted one month, there may be just a single charge to see — paste more history or lower the minimum. Charges whose amounts differ a lot between months may also land in separate groups.

How is the yearly cost worked out?

From the detected cadence: a monthly charge is multiplied by 12, weekly by 52, annual by 1, and so on. The amount used is the median of the matching charges, so an occasional price blip doesn't skew the projection. The next-charge date is the last charge plus the median gap between charges.

My dates are day/month — how do I read them correctly?

Set Date format to eu for DD/MM/YYYY (or us for MM/DD/YYYY). auto guesses from the numbers — it can tell 13/01/2026 is day-first — but if every date has a day of 12 or lower it's genuinely ambiguous, so pick the format explicitly.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool subscription-finder "2026-01-15, Netflix, 15.99"

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/subscription-finder/?transactions=2026-01-15%2C%20Netflix%2C%2015.99&min_occurrences=2&currency=%24&date_format=auto

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.