Guides

What does it actually cost to run an app you built with AI?

8 min read


Two fears show up repeatedly once an app is close to launch. The first is that it will cost a fortune to run. The second, once someone has read a horror story, is that it might cost a fortune overnight, without warning.

The first fear is mostly unfounded. The second is real but entirely preventable, and takes about fifteen minutes to rule out.

The normal case: nearly free

A small app with a few hundred users typically costs somewhere between nothing and about $25 a month. Free tiers in this space are genuinely generous, because providers want you to grow into paying later.

Roughly what you are looking at:

Hosting — free for most small apps. Cloudflare Pages, Netlify and Vercel all have free tiers that comfortably handle thousands of visitors. A static site can serve very large amounts of traffic for nothing.

Database — free to start. Supabase, Neon and PlanetScale all have free tiers fine for early use. Expect $20–25/month when you outgrow it, which is a real milestone rather than a problem.

Domain — $10–15 a year.

Email sending — free up to a few thousand messages a month with Resend or Postmark.

File and image storage — pennies until you are storing a lot.

So: a working app with real users, for the price of a couple of coffees. That part is genuinely as good as it sounds.

Where the horror stories come from

Four causes, and they account for nearly all of them.

1. AI features, charged per use

The big one now. If your app calls an AI model — summarising, chatting, generating — you pay per request, and per amount of text.

That is fine at ten users. At ten thousand, or if one user works out they can call it in a loop, it is not. This is the most common source of unexpected four-figure bills in AI-built apps, because the cost scales with usage in a way hosting simply does not.

Guard against it: limit how often one user can trigger it, cap the length of what you send and receive, and set a hard spending limit at the provider. Not a warning — a limit that stops.

2. Something calls something else in a loop

A function that triggers when data changes, which writes data, which triggers the function. Nobody writes this deliberately; it happens when two automatic things are wired together without noticing they form a circle.

It runs millions of times in an hour and every execution is billed. This is behind most of the “I woke up to a $5,000 bill” posts.

Guard against it: be careful when a database trigger writes to the same table it watches, and set billing alerts so you find out in minutes rather than at month end.

3. Video and large images

Video is the one thing that gets expensive at small scale. Storing it is cheap; serving it repeatedly is not. Uncompressed images have a milder version of the same problem.

Guard against it: use a proper video service rather than serving files yourself, and compress images before storing.

4. Someone hammering an endpoint

If any part of your app does something expensive and anyone can trigger it without limits, eventually something will — often not maliciously, just a bot probing everything it finds.

Guard against it: rate limiting. It is a small amount of work and it caps your worst case.

The fifteen-minute insurance policy

Do these before launch and the nightmare scenario stops being available:

Set a hard spending cap on any AI provider. Not an alert — a limit that refuses further calls. Most providers support this and it is the single most valuable setting on this list.

Set billing alerts everywhere else. Most hosts cannot hard-stop, but they can email you. Set one low — $10 — so that anything unusual reaches you the same day.

Use a virtual card with a limit for anything that cannot be capped. Privacy.com and many banks offer these. It converts an unbounded liability into a known one.

Check what happens when the free tier ends. Some providers pause your service. Others bill you. Those are very different surprises, and you want to know which before it happens rather than after.

Add rate limiting to anything expensive. If you are not sure what qualifies, it is anything that calls another company’s API.

Deciding whether it is worth it

Once it is running, the useful question is not “what does this cost” but “what does each user cost”.

If a hundred users cost you $20 a month, each one costs 20 cents. Would you pay 20 cents to have someone using your product? Almost certainly. Would you pay $5? That depends on whether they ever pay you.

That number is also the thing to watch as you grow. Costs that rise in a straight line with users are fine and predictable. Costs that curve upward mean something is wrong — usually one feature being used far more than expected.

The short version

Running a small app is cheap and stays cheap. The scary stories almost always come from an AI feature without a cap, or two automated things accidentally calling each other.

Spend fifteen minutes setting hard limits before you launch and you have bought yourself the ability to stop worrying about it, which is worth considerably more than the fifteen minutes.


Not sure what yours would cost, or where the caps should go? A free session is enough to look through what your app calls and find anything unbounded before it matters.

Want a second pair of eyes on yours?

Up to an hour, no charge, nothing to prepare. Bring it broken — that is more useful than tidied up.