Launching a game website for nothing
Two websites, a contact form, a mailing list, four email addresses and a server-authoritative game API. Running cost: the domain renewal.
What is actually free
The load-bearing detail is that on Cloudflare Workers, requests to static assets are free and unlimited, and they are served without invoking the Worker at all. The Worker only runs for paths that do not match a file.
So the free plan's hundred thousand requests a day applies to your API endpoints and your 404s, not to every page view. In practice a marketing site never touches the ceiling.
| Static assets | Free, unlimited. 25 MiB per file, 20,000 files. |
|---|---|
| Worker requests | 100,000 per day. |
| D1 database | 5 GB, 5 million row reads and 100,000 writes a day. |
| Email routing | Free. Unlimited addresses onto one real mailbox. |
| Turnstile | Free anti-spam, without the tracking a CAPTCHA brings. |
| Web analytics | Free, and cookieless, which matters more than the price. |
| DNS, SSL, DDoS | Free. |
The ceilings that are real
25 MiB per file. This is the one that catches people. A game trailer is routinely 100 MB and simply cannot be a static asset. Put the full trailer on YouTube behind a click-to-play placeholder, and keep short muted loops, re-encoded to a few hundred kilobytes, as local files.
Email routing receives, it does not send. Sending from a Worker needs a separate binding, and the destination has to be an address you have verified. Point it at an unverified mailbox and it deploys perfectly, then fails on every send.
Two mistakes worth avoiding
The asset directory is the whole repository. If you point it at the project root without an ignore file, the Worker will happily serve your configuration, your source, and your internal notes. Ours briefly served the database identifier and the worker source before that was caught. Write the ignore file first, then verify it by requesting the files you expect to be private.
Version your CSS by content, not by hand. A long cache header plus a
hand-typed ?v=3 that nobody remembers to bump means visitors keep an old
stylesheet for a week. Derive the token from a hash of the file and it cannot go stale.
Where money starts
Video hosting, if you want it first-party rather than on YouTube. Anything that needs a persistent connection or per-user state at scale. Sustained traffic past the Worker request ceiling, which for a studio site means you have a much better problem than a hosting bill.



