Zero Isn’t Zero: What Laravel Cloud Actually Costs When Your App Is Asleep

Published in Laravel, We Must Ship on Oct 22, 2026

Last night I spoke at Atlanta PHP about a little experiment I’ve run over the last month.

At Laracon, Laravel’s pitch for scale to zero was simple: stop paying for idle compute. The hallway version was even better: a dormant app on Cloud costs less than 60 cents a month. I’ve run my side projects on a single $6 Forge box for years, and every one of them has a scheduler and a queue, so I was skeptical. So on September 1, I moved three real apps to Laravel Cloud and paid for a full billing period:

  • MastersLog.app: the realistic one, with scheduled digests and alerts, a queue and image uploads
  • Boating App: cron-shaped, waking once a day to pull data, on Serverless Postgres
  • GoodHabits.win: the control, with no scheduler at all

The bill: $4.87

That’s three apps with schedules, queues, databases and a bucket, for a whole month, with every line item metered. Here’s what was inside it.

Key findings

Sleep works. The apps were awake 26%, 5% and 13% of the month. Always on, their compute would have cost $18 a month; I paid $2.78.

The scheduler wasn’t what kept them up. Scheduled wakes explain about 8 of the 317 hours I was billed. If you merge your cron times into one or two wakes a day, a scheduler on Cloud is cheap.

Bots were. I pulled 31 days of Cloudflare analytics: 79–92% of requests were crawlers and scanners hunting for .env files. Cloudflare served under 1% of them from cache, so almost every one woke the app. Bursts are cheap; the steady drip of a crawler every few minutes is what adds up.

The database slept better than the app. GoodHabits’ app was awake 95 hours; its database was awake 48 minutes. Bots hit the login page, but they don’t query your data.

A third of the bill never sleeps. $1.63 of the $4.87 was storage, backups and queue polling: the 5 GB MySQL minimum (50 cents a cluster, awake or not) and about $0.13 per queue a month just for having it attached.

Postgres is the better default for side projects. Boating’s whole database is 10 MB. Serverless Postgres bills for what you actually store, half a cent a month, instead of the 50-cent MySQL minimum. It stays cheaper until your data passes 1 GB or the database is awake about 30 hours a month, and most side projects never get there.

The sleep timeout is the biggest lever. Every wake bills the full timeout. Replaying a month of real traffic at a 1-minute timeout instead of 5 would have saved about $1.80 a month: two-thirds of my app compute, from one setting.

Against the box, Cloud wins, but by a dollar, not by a landslide. Cloud was about $1 a month cheaper than a bare $6 VPS, and about $13 cheaper than the VPS plus a Forge Hobby plan. On today’s Starter plan ($5 a month with $5 of usage included) my month would cost exactly $5. By my model, Cloud stays cheaper up to about 4 apps like mine against a bare VPS, and up to about 15 against VPS plus Forge.

If you want to drop the queue for apps that only send the occasional email, I wrote up how to do it with QUEUE_CONNECTION=deferred in this gist.

And then the CVEs dropped

Yesterday, PHP shipped emergency releases (8.2.35, 8.3.36, 8.4.27 and 8.5.12) for two critical bugs, CVE-2026-109618 and CVE-2026-109619, both unauthenticated remote code execution. No configuration change fully mitigates them; updating PHP is the only fix.

According to Laravel’s post, Laravel Cloud and Vapor are rolling the patch out to every customer automatically, with no redeploy needed. On Forge, you click Update PHP on every server yourself, and when Laravel published its post, the Ubuntu packages Forge installs from didn’t have the fix yet.

That cost never shows up on an invoice, and it makes the case for Cloud even stronger than my numbers do. A dollar a month is a nice saving. Not having to worry about your servers on the day a critical PHP bug drops is worth a lot more.

Slides

The full deck, with the numbers, the methodology and the six levers ranked by bang for the buck, is here as a PDF.

To be continued…