DEV Community

Richard C
Richard C

Posted on Edited on AI-assisted

Keep or cancel? A 10-minute monthly subscription review in a spreadsheet

AI-Assisted

By Richard C, AIL Studio

Finding your subscriptions is the easy part. The hard part is deciding, every month, which ones still earn their place. "I might use it" keeps a lot of them alive. This post builds a small review sheet that turns that into a rule: cost per use, days since you last used it, and a Keep / Review / Cancel column that fills itself in.

It takes about 10 minutes a month. No add-ons, no scripts.

1. One row per subscription

You need a list of what you pay for. If you don't have one yet, your bank or card statement is the place to start. Then add two things you only know yourself:

  • Uses (30 days): a rough count. Opened the app, went to the gym, watched something. Guess honestly; it doesn't need to be exact.
  • Last used: the date you last used it.

Columns: Service (A), Monthly cost (B), Uses (C), Last used (D). Put your review date in J1 (the first of the month works) and your limit for "too expensive per use" in J2. I use 3.

2. Days idle and cost per use

Days idle in E2:

=$J$1-D2
Enter fullscreen mode Exit fullscreen mode

Cost per use in F2:

=IF(C2=0,"",B2/C2)
Enter fullscreen mode Exit fullscreen mode

The IF keeps a zero-use service from causing a divide-by-zero error; it just stays blank. Format E as a whole number and F as a number with two decimals. Then fill both columns down.

Example data: the review sheet in LibreOffice Calc with the cost-per-use formula in the formula bar
Example data: made-up services. One use of a 9.99 service costs 9.99; daily use of 2.99 storage costs about 10 cents a time.

Cost per use is the number that changes minds. A 44.00 gym visited three times is 14.67 a visit. That might still be worth it, but now it's a choice.

3. Let a rule make the first call

In G2:

=IF(OR(C2=0,E2>60),"Cancel",IF(F2>$J$2,"Review","Keep"))
Enter fullscreen mode Exit fullscreen mode

The rule reads:

  • Cancel if you didn't use it at all this month, or haven't touched it in over 60 days.
  • Review if each use costs more than your limit in J2.
  • Keep otherwise.

Example data: the Decision column with two services marked Cancel
Example data: the news site and the language app haven't been used in 79 and 122 days, so they come up as Cancel.

The rule is a first call, not the final word. "Review" means you decide: a pricey gym might be fine if you're going more next month. Change the 60 days and the limit in J2 until the results match what you'd decide yourself.

4. Add up what's at stake

Three summary cells to the right:

J4: =SUMIFS(B2:B9,G2:G9,"Cancel")*12
J5: =COUNTIF(G2:G9,"Review")
J6: =SUM(B2:B9)
Enter fullscreen mode Exit fullscreen mode

J4 is what cancelling the "Cancel" rows saves in a year, J5 is how many need a decision, and J6 is your monthly total today.

Example data: summary cells showing 203.88 saved per year
Example data: cancelling two small, unused services saves 203.88 a year.

5. Make it monthly

On the first of each month:

  1. Change the review date in J1.
  2. Update Uses and Last used for each row.
  3. Act on every Cancel, and decide every Review.
  4. Write down what you cancelled and when, so you can check the charge stops next month.

Copy the sheet each month (Duplicate sheet, rename it "Nov 2026") if you want a history of what you dropped and how your monthly total moved.

Honest limits

  • Use counts are self-reported. The sheet is only as honest as your guesses.
  • Some value isn't per use. Backup storage or insurance-like services earn their keep by existing. Mark those Keep by hand.
  • Annual plans need dividing first. Put the monthly equivalent (yearly price / 12) in column B, and note the renewal date somewhere so cancelling happens before it renews.
  • Cancel means actually cancelling. The sheet doesn't stop any charge; you still have to do that on each service's account page.

If you'd like the list side handled for you, with renewal dates and every billing cycle converted to monthly and yearly cost, I made a Subscription Tracker for Google Sheets and Excel.

Top comments (4)

Collapse
 
smartbudgetsheets profile image
Smart Budget Sheets •

A monthly review is a good habit. It also helps to check annual charges separately, since yearly renewals are easy to miss, and to put the next renewal date next to each subscription so you can cancel before the charge hits.

Collapse
 
richardc_ailstudio profile image
Richard C •

Thanks, that's a really good point. Annual charges are the ones that slip through a monthly review, because they don't appear in most months' statements, so checking them separately and keeping the next renewal date next to each one makes a lot of sense. One tip: add a "days until renewal" column (=renewal date − TODAY()) and highlight anything under 30, so the yearly ones show up a few weeks before they charge instead of after.

Collapse
 
smartbudgetsheets profile image
Smart Budget Sheets •

Glad it helps. Conditional formatting on that column, with amber under 30 days and red under 7, makes the nearest renewals impossible to miss.

Collapse
 
smartbudgetsheets profile image
Smart Budget Sheets •

The days-until-renewal column with a highlight under 30 is a great addition, since it turns yearly charges into a visible to-do instead of a surprise. Thanks for sharing the formula.