What does your stack actually cost?
A database, an auth service, a payment provider and a host, priced together.
29 services priced · 64 plans · 103 rates, each dated · re-read 3 Aug 2026
Whole stack, 10,000 users
$367per month
| Service | Charge | How it was worked out | Per month |
|---|---|---|---|
| NeonLaunch | Launch base | no monthly fee | $0 |
| Storage | 5 GB-db — within the included 10 | $0 | |
| Egress | 200 GB-egress — within the included 500 | $0 | |
| Compute | 730 CU-hr over 0 included × $0.106 | $77 | |
| ClerkFree | Free base | no monthly fee | $0 |
| PolarPro | Pro base | flat monthly fee | $20 |
| Rate on revenue | 3.8% of $4,000 | $152 | |
| Per transaction | 200 transactions × $0.4 | $80 | |
| International cards | 1.5% of $1,200 (30% of revenue) | $18 | |
| VercelPro | Pro base | flat monthly fee | $20 |
| Edge requests | 2 req-1M — within the included 10 | $0 | |
| Fast data transfer | 200 GB-egress — within the included 1,000 | $0 | |
| Function invocations | 0.5 inv-1M — within the included 1 | $0 | |
| Function duration | 55.56 GB-hr — within the included 420 | $0 | |
| Seats | 1 seat — within the included 1 | $0 | |
| 10,000 users | Total per month | $367 | |
At 10,000 users, 2% of them paying $20 a month, with 30% of that revenue taken on international cards. A free tier you have already outgrown is excluded before price is compared. Every assumption here can be changed in the per-axis calculators.
What is behind the numbers
3 Aug 2026Services priced
29
3 Aug 2026Across four categories — database, auth, payments and hosting — on 64 plans.Facts re-checked every night
137
3 Aug 2026The exact wording that has to remain on the 29 pricing pages for the 103 rates in the catalogue to still count.Plans verified
64 of 64
3 Aug 2026Nothing has drifted since the last run.Rates no vendor publishes
6
3 Aug 2026No figure exists on the page, so none was invented. Every one is listed below with the reason it is missing.The rates nobody publishes
6 rates| Service | Plan | Rate that is missing | Why there is no figure |
|---|---|---|---|
| Auth0 | Essentials | Monthly active users | Auth0 publishes MAU steps (1,000 / 2,500 / 5,000 / 7,500 / 10,000 / 20,000 / 30,000+) only through an interactive slider; no per-MAU rate is on the page. |
| Auth0 | Professional | Monthly active users | Per-MAU rate above the base is not published as a figure on the pricing page. |
| Stytch | Pay as you go | Monthly active users | The per-MAU overage rate is only produced by the calculator widget on the page; no figure is published in the page text. |
| Firebase | Blaze | Monthly active users | Above 50K MAU the pricing page defers to "Google Cloud pricing" and publishes no rate here. |
| Firebase | Blaze | Firestore stored data | Stored-data rate defers to Google Cloud enterprise edition pricing. |
| PlanetScale | PlanetScale Postgres | Storage | Storage above the cluster size is priced by cluster tier, not published as a per-GB rate here. |
Three rules decide every figure
None of them is a judgement call, and all three are the reason a total sometimes refuses to appear at all.
A plan that cannot carry the usage is not an option
01A plan with an allowance and no meter to charge overage is hard-capped by construction — there is nothing to buy. So an outgrown free tier is excluded before price is compared at all, and a tier barred from commercial use is excluded outright rather than winning on price.
Unknown is never zero
02If a plan needs a rate the vendor does not publish, and the usage genuinely exceeds what the plan includes, the total is withheld and the reason is printed in its place. A confident wrong figure is worse than no figure, because you cannot tell it is wrong.
Drift is flagged, never quietly patched
03Each figure was stored with the literal strings that must still appear on the vendor's page. When the nightly re-read cannot find them, the row is marked as drifted and its verification date stops advancing. Nothing rewrites a price on its own.
What a vendor’s pricing page cannot tell you
| The question | A vendor’s pricing page | StackTab |
|---|---|---|
| What the whole stack costs | One vendor's share of it. You open three more tabs and add them up. | One figure for a database, an auth service, a payment provider and a host together. |
| A free tier you have already outgrown | Still shown at $0, with the limit in a footnote below the fold. | Excluded before price is compared — a plan you cannot stay on is not the cheap plan. |
| A rate the vendor never published | Absent, or produced only by a slider you cannot cite. | Printed as not published, and the total refuses to resolve until you swap it out. |
| When the price was last true | Undated. The page changed at some point and nothing said so. | A verification date next to every figure, and a nightly re-read that stops the date advancing when the page changes. |
| Tiers that are not for you | Listed beside the paid plans with the restriction in the terms. | Ruled out by the restriction rather than by price — a non-commercial tier never wins. |
| What the fees do to a real revenue number | A percentage. The international surcharge is a line under the table. | Applied to the share of revenue that is actually international, shown as its own line. |
| What happens at ten times the users | A different page, or a contact form. | The same stack re-priced at 1,000, 10,000 and 100,000 users, side by side. |
| Plans you are not allowed to use commercially | Sold alongside the rest. | One plan in the catalogue is barred from commercial use, and it is never returned as an answer. |
The same arithmetic, one decision at a time
The full catalogueSupabase vs Firebase
DatabaseSupabase and Firebase priced side by side at 1,000, 10,000 and 100,000 users — and the point above which Firebase stops publishing a rate at all.
The best auth for Next.js, priced
AuthClerk, WorkOS, Better Auth, Kinde, Auth0, Stytch and PropelAuth compared for a Next.js app, with the real monthly cost at 1,000, 10,000 and 100,000 users.
Merchant of record for SaaS, priced against Stripe
PaymentsPaddle, Polar, Lemon Squeezy, Creem, Dodo Payments and Gumroad compared against staying on Stripe and filing your own VAT, with the dollar difference at real revenue levels.
Questions worth asking
Where do these prices come from?
Each one was read off the vendor's own pricing page and stored with its source URL and with the literal strings that must still appear on that page for the figure to hold.
Nothing is scraped into a number automatically, and nothing is estimated from a press release or another comparison site.
How do you know they are still right?
A job re-fetches all 29 pricing pages every night and re-checks the 137 stored strings. If one is gone, the row is marked as drifted and its verification date stops moving.
It never rewrites a price. A comparison site that silently corrects itself is one you cannot audit, so a changed page becomes a flag rather than a new number.
Why does the total sometimes refuse to appear?
Because a rate that decides it is not published anywhere. Firebase defers to Google Cloud pricing above 50,000 monthly active users; Auth0 puts its MAU steps behind a slider; Stytch's overage rate exists only inside a calculator widget on the page.
In every one of those cases the honest output is that there is no figure. Filling the gap with a zero is how a calculator reports $0 for 100,000 users, which is the specific bug this rule exists to prevent.
What usage do the figures assume?
An ordinary subscription web app: 2% of users paying $20 a month, 30% of revenue taken on international cards, and database, storage, egress and request volumes that scale with the user count. Every one of those assumptions is printed under the calculator.
They are assumptions, not measurements of your app, which is why the arithmetic is shown line by line rather than only as a total.
Is StackTab paid, and are these affiliate links?
No to both. There is no account, no checkout and no per-vendor referral link anywhere on the site. A ranking that earns a commission on the winner is not a ranking.
