How we cost things
Every receipt on this site is calculated the same way. Public list-tier pricing as of May 2026, rounded to the nearest dollar. Three traffic shapes. No fabrication. Real bills will vary — here’s exactly how.
Where the numbers come from
Every price on cheapstack traces back to a public pricing page or an invoice we’ve actually paid. We don’t cite enterprise-only or contact-sales pricing because that’s not what indie builders pay.
When we say “Vercel Pro is $20/mo,” we mean the public Pro tier on vercel.com/pricing as of the last verification date. When the page is updated to reflect a price change, the date moves with it. When a vendor changes pricing structure entirely (Vercel Cron Jobs becoming part of Vercel Pro Active CPU billing in 2025, for instance), we rewrite the receipt and the diff lands in the public git history.
Stack guides also include line items we’ve actually paid — the newsletter-25 stack reflects the actual monthly bill for that build; the saas-100 reference reflects what production-grade SaaS infrastructure costs at the budget threshold. We don’t advertise “use this stack for $X/mo” based on speculative pricing.
The three-receipt pattern
Comparison and framework pages cost three traffic shapes:
Hobby (1k MAU)— weekend project, minimal traffic, free-tier-credible. The question this answers: “Can I run this for $0 while I figure out if anyone wants it?”
Side project (10k MAU)— steady reads, paying customers, real product. The question this answers: “What does my bill look like when this stops being a side project?”
Scale (100k MAU)— production-grade workload, multi-region awareness, real revenue. The question this answers: “Is the framework / DB / hosting choice I made at side-project scale still right here, or does the bill curve break?”
We deliberately don’t cost the 1M+ MAU shape. Above 100k MAU, the “indie” budget framing breaks down, and the right answer becomes much more company-specific (compliance, contracted enterprise pricing, multi-region replication strategy, infrastructure team headcount). The goal of cheapstack is the journey to that scale, not the steady state at it.
How we round
Receipts round to the nearest dollar. $19.95/moon the vendor’s site is $20/moon a cheapstack receipt. The cents add up to less than a Lighthouse-test variance and they’d clutter the receipt aesthetic.
Per-transaction fees on payment providers are quoted as the vendor quotes them — 2.9% + 30¢ for Stripe, 5% + 50¢for Lemonsqueezy. We don’t round those because the cents-per-transaction matter when calculating effective rate at small ticket sizes.
Bandwidth is in GB. Storage is in GB. MAU is monthly active users as the vendor defines them (Stripe, Auth0, Clerk all count differently — we use the most-published definition for each).
Where the numbers stop being useful
A receipt on cheapstack is a budgeting tool, not a guarantee. Real bills diverge from receipts in a few predictable ways:
Bandwidth shape matters.A site that serves 1M pageviews/mo of small text pages has a wildly different bandwidth bill than one that serves 1M pageviews of high-resolution image-heavy product galleries. We assume “normal” bandwidth for the product type; outliers blow up the receipt.
Read patterns matter on pay-per-op DBs. Firestore at 100k MAU could be $50/mo or $500/mo depending on whether your read patterns are cached or wasteful. The receipt cites a reasonable middle; pathological cases go higher.
Geographic distribution affects egress. US-only traffic on Vercel egresses to one region; global traffic egresses everywhere and the bandwidth multiplies through CDN edges. Our receipts assume mixed geography.
Compliance tiers add line items.SOC 2, HIPAA, GDPR-resident data, and similar requirements push you to higher pricing tiers on most vendors. Receipts don’t include compliance premiums by default; we call them out when they’re relevant to a specific stack.
When a real bill could plausibly be 2x a cheapstack receipt because of one of these factors, we say so on the page. When the divergence is structural (always-on dedicated IP, enterprise SLA), we list it as a separate scenario rather than baking it into the indie-budget receipt.
When prices go stale
Every page has an updated tag with the date of last verification. When we update a page after a vendor pricing change, the date moves to the current month. We re-verify each stack guide and the major comparison/roundup pages quarterly; framework articles annually (since framework pricing is mostly stable, but framework versions do shift).
If a vendor pricing change is significant enough to affect a recommendation — say, Cloudflare changes Workers pricing tiers, or Supabase introduces a new free-tier policy — affected pages get updated within 7 days and the change shows up in the RSS feed.
If you’re reading a page where the updatedtag is more than 6 months old, the receipt is probably still directionally right but specific numbers may have drifted. Tell us via the contact page; we’ll move it to the front of the re-verification queue.