htmlsharechecking
/ uses · money · the annual total nobody has calculated

what you are paying for every month.

almost nobody can name all their subscriptions. the honest number is usually two or three higher than the list you would write from memory, and the annual total is a genuinely unpleasant surprise.

the apps that will find them for you do it by reading your bank account, which is a lot of access to grant in order to be told about a £4.99 charge.

writing them down takes twenty minutes once. a page that turns them into an annual figure and shows what renews next is the part that makes it worth doing.

what you make
every subscription and what it really costs
where the data lives
your browser, on one device
the useful number
the annual total, which you have never calculated

the list, and the annual number.

01 / what it is

this page does one arithmetic trick and it is the one that changes behaviour: it normalises everything to a year. a £9 monthly service and a £70 annual one look similar in a bank statement and are not, and seeing them in the same column sorted by cost is usually enough to cancel two of them.

it also tracks renewal dates, which is the other half — an annual subscription you meant to cancel is only cancellable in the week you remember it exists.

  • every subscription with its real billing period
  • everything normalised to a monthly and an annual figure
  • sorted by annual cost, because that is the useful order
  • what renews in the next thirty days
  • a note of why you keep each one, or that you do not
  • export and import as json
what it records
name, cost, billing period, renewal date, and your own note
what it computes
monthly and annual equivalents, totals, and what renews soon
where that goes
localStorage in one browser. not uploaded
reminders
none. the page shows upcoming renewals when you open it and cannot notify you

see one in action.

02 / example
htmlshare.net/p/…
screen capture · silent loop
video coming soon

twenty-two subscriptions, monthly and annual normalised to one figure, sorted by cost

the live example is still being built — the prompt below is the one it was made with.

copy this, then make it yours.

03 / starting prompt

a starting point, not a template — the point of an agent is that the result is yours. change the sections to match what you want, and remove anything you don’t need.

starting prompt · paste into your ai
Build me a subscription tracker as a single web page.

Ask me first:
- My currency.
- Whether I want to track anything beyond cost and renewal date — which card it is on, who in the household uses it, whether it is work or personal.
- Whether I want a category per subscription.

Do not ask me to list the subscriptions in the interview — the page is where I will enter them. Do not invent subscriptions, prices or renewal dates.

WHAT IT DOES

- Adding a subscription: name, cost, billing period (monthly, annual, quarterly, weekly), and next renewal date. Everything else optional.
- Normalise every entry to both a monthly and an annual figure, and show the totals of each. The annual total should be the most prominent number on the page.
- Sort by annual cost by default, highest first. This ordering is the point of the page — do not default to alphabetical.
- Show what renews in the next 30 days, with the date and amount.
- A free-text note per subscription, for what it is actually for and whether I still use it.
- Let me mark something as cancelled, keeping it in a separate list with what it was costing, so I can see what the audit saved.
- Editing and deleting.

DESIGN

- A table on a laptop, a readable list on a phone. Numbers aligned and consistently formatted.
- Make the annual total large. It is the number that does the work.
- No judgement copy. State the figure; I will draw my own conclusion.

BE HONEST ON THE PAGE

- Say the list is stored in this browser only and never uploaded.
- Do not claim to detect subscriptions, read statements, or cancel anything on my behalf. It cannot do any of those.
- Do not claim to remind me of renewals; a page has no way to notify me.

STORING THE DATA

- Save everything to localStorage in the browser, automatically, as I go. No
  accounts, no login, no server call.
- On the page, say plainly that data lives in this browser only and does not
  sync to other devices. Do not bury it.
- Give me an "export" button that copies or downloads everything as JSON, and an
  "import" that reads the same JSON back. That is the only way my data can move
  between devices, so it is not optional.
- Never lose what I have already entered. If the stored data is from an older
  version of the page, read what you can rather than throwing it away.

DELIVERY

- Produce one self-contained HTML file. Inline the CSS and JavaScript.
- No build step, no server, no framework, no package install, no external
  requests at runtime.
- Mobile-first and responsive; it has to be usable one-handed on a phone and
  still look right on a laptop.
- Accessible: semantic HTML, real contrast, visible keyboard focus, labelled
  controls, touch targets big enough to hit, and respect reduced-motion.
- Use placeholders where information is missing. Do not invent facts, numbers,
  names, dates, prices, or results I have not given you.
- Before you call it finished, use it yourself: enter real-looking data, reload
  the page, and confirm nothing is lost or mangled.

PUBLISHING

Publish the finished page to HTMLShare and give me the link.

Use exactly one of the two paths below, preferring the first. Make the call
directly. Do not route it through a code sandbox, container, or computer-use
session — that is where the request gets blocked, and it is never necessary.

1. An HTMLShare integration or connector, if you have one configured.
   The page is permanent and owned by my account. Report the url and the
   siteId. There is no claimUrl or manageToken on this path — do not go
   looking for one, and do not switch paths in order to produce one.

2. Otherwise, publish anonymously over REST. No account, key, or signup is
   needed:

    POST https://api.htmlshare.net/v1/publish
    content-type: application/json

    {"html": "<!doctype html> ... "}

   The reference is https://htmlshare.net/docs and, for the full schema,
   https://api.htmlshare.net/openapi.json

   Report these from the response, in your reply and never inside the page:
     url          the public page
     claimUrl     a private link that is mine alone. opening it is how I keep
                  the page past its 24-hour expiry, or set an email reminder
                  before it goes. it carries the manage token, so it must
                  never appear in the published HTML or anywhere a visitor
                  could see it.
     manageToken  the only thing that can edit or delete this page later. it is
                  returned once and never again, so tell me what it is.

Tell me which of the two you used. If the path you reach for first is
unavailable in your environment, say so and tell me what you are switching to
before you publish — a permanent page on my account and a 24-hour anonymous
page are different things, and which one I get is my decision, not a detail.

If I ask for a change afterwards, update the existing page instead of
publishing again, so the URL I have already shared keeps working — through the
same integration on path 1, or with the manage token as an X-Manage-Token
header on path 2.

RECIPE MARKER

Include this tag in the <head>, exactly as written:

    <meta name="htmlshare-recipe" content="subscription-tracker">

It tells htmlshare which recipe the page came from, so the library can count
that this one was actually made. It carries nothing else.
works as-is inclaudechatgptcodexcursorgrok
adapting it
do the first pass from your card statement rather than from memory. memory is consistently two or three services short, and those are the ones worth finding.
ask for the annual figure to dominate. the monthly numbers are why these things accumulate in the first place.
keep the cancelled list. seeing what the audit saved is the only reason anyone does it twice.

give it a url.

04 / publishing it

how you publish depends on how you’re working.

with an integration
if your assistant already has htmlshare connected — mcp or another supported integration — just ask it to publish the finished page and hand back the url. the page belongs to your account and is permanent. when you want a change, ask for an update to that same page rather than a new one.
with no integration
the prompt tells the assistant to post the html to the rest api instead, which needs no account and no key. it comes back with a live url you can open immediately, a private claim link, and a manage token. the claim link is how the page stops being temporary — keep it.
by hand
nothing stops you doing it yourself: have the assistant give you the html file and drop it on the htmlshare home page. same url, same page, one more step.
what matters here
a subscription list is worth revisiting quarterly, which means it has to survive the quarter. claim it, and put a calendar reminder somewhere to actually open it — the page cannot chase you.

the audit is quarterly, so the page has to be too.

05 / keeping it around
anonymous
24h

the page stops serving after 24 hours with a 7-day recovery window. you would be rebuilding the list every time you wanted to look at it.

keep it around
you will open this quarterly at best. it has to still be there when you do.
stable updates
prices rise and services come and go. update the page, keep the address.
custom url
something you can find in three months without remembering what you called it.

questions.

06 / questions
can it find my subscriptions for me?

no. that requires reading your bank account, which this page has no access to and no way to get. you enter them once from a statement — twenty minutes, and considerably less access granted to anyone.

will it warn me before a renewal?

only when you open it, where it shows what renews in the next thirty days. no page can send a notification, and any that claims to is wrong. pair it with a calendar reminder to look.

can it cancel anything?

no. it is a record. cancelling is still you, on their website, in the flow they designed to be tedious.

is my list private?

yes — it is in your browser, not in the published page, so someone with the url sees an empty tracker. we never receive what you typed.