Somebody picking a host reads that the free plan carries 100,000 users for $0 a month. They pick it. Then the bandwidth bill arrives, or the plan runs out of room and the move happens under load.
My hosting calculator told that story until an audit on 2026-08-02. Render's Hobby plan won its board at every size it could be asked for, including 100,000 users, at $0. Railway's Trial came second at $1. The arithmetic was right on the data it had. The data was blank.
Two ways a plan gets ruled out, and both need a number
Each plan in the catalogue holds two kinds of fact: allowances, meaning what the plan includes, and meters, meaning what the vendor charges once you go past one. The combination is what decides a plan's fate. An allowance with a matching meter is a cheap plan you can outgrow expensively, so it gets priced. An allowance with no meter means there is no overage to buy, so the plan is hard capped and gets excluded once your usage passes it.
Here is the loop that decides it:
for (const limit of LIMITS) {
const allowance = plan.included?.[limit.key];
if (allowance === undefined || allowance === null) continue;
const used = limit.qty(p);
if (used <= allowance) continue;
const hasMeter = plan.meters.some((m) => m.unit === limit.unit);
if (!hasMeter) out.push({ kind: 'capped', reason: /* ... */ });
}The third line is where it goes wrong. A plan with nothing recorded has nothing to compare against, so the loop moves on. Render Hobby and Railway Trial shipped with no allowance and no meter, which reads to the model as nothing to exceed and nothing to charge for exceeding it. Free hosting, at any scale, for ever. A cheapest-first ranking then puts those two rows on top and keeps them there. The least documented row wins.

Pricing and feature comparison table for StackTab subscription plans — Six plan tiers ranging from free to $50/month with progressively more features like storage and users.
Both caps were printed in plain English the whole time
Render's pricing page states the bandwidth row in two halves: "5 GB of bandwidth included", and "then $0.15 per GB". That is an allowance and a real rate, so Hobby prices rather than disappears. Railway's Trial page states "0.5 GB of volume storage" with no overage on offer, so that one is a genuine cap.
I ran the current catalogue through the pricing function at its three scale tiers, once with the records stripped back to how they shipped and once as they stand:
| recorded with no allowance and no meter | recorded with the cap the vendor prints | |
|---|---|---|
| Render Hobby at 1,000 users | $0 | $2.25 |
| Render Hobby at 10,000 users | $0 | $29.25 |
| Render Hobby at 100,000 users | $0 | $299.25 |
| Railway Trial at 100,000 users | $1, kept in the ranking | $1, excluded: caps file storage at 0.5 GB and sells no overage |
| plans in this state in the catalogue now | Render Hobby, Railway Trial | none of 64 |
Nothing errored on the old rows. No page failed to build, no value came back undefined at render time, no test went red. An empty field is a valid record, and a comparison engine reads it as a claim about the world.
Making the blank field refuse the deploy
Fixing the two rows by hand takes ten minutes and lasts until the next vendor gets added at midnight with half its page transcribed. So the check moved into the deploy preflight on 2026-08-14. Any plan carrying no allowance and no meter now stops the build:
✗ these plans record no allowance and no meter, so nothing can price or exclude them at any scale
Bundled credit does not count as a limit, because spend is not an allowance. A plan that really is flat at every scale has to be named in a FLAT set in the preflight with a reason written next to it, which turns "we never looked" into a sentence somebody had to type. That set is currently empty. The check across 29 services and 64 plans returns no rows.
That calculator is StackTab, and this is how we built it: https://stacktab.kynth.studio/?utm_source=kynth-hashnode&utm_medium=social&utm_campaign=kynth
One shipped product, taken apart, once a month. What it does, what it cost to build, what the pipeline behind it looks like, and what the numbers did — read off the repository and the live site, not written from memory. Join the list.
← All writing