The Free-Tier Map

Lesson 1 · Cloudflare Workers · ~5 minutes

What can you actually run on Cloudflare without paying a cent — beyond a static website?

The Mental Model

You already know Cloudflare as a CDN that serves static files. Here's the key insight: Cloudflare's edge network doesn't just cache files — it can run code. That code executes in 300+ data centers worldwide, milliseconds from your users. And it comes with Cloudflare's security stack for free.

Cloudflare Free Tier Architecture
Static Assets
HTML, CSS, JS files
(you know this one)
⚡ Workers
Serverless compute
100K req/day
🛡️ Security
DDoS, SSL, WAF
Always on, unmetered
▼ Workers connect to ▼
KV
Key-value store
100K reads/day · 1GB
D1
SQL database
5M reads/day · 5GB
R2
Object storage
10GB · zero egress
Durable Objects
Stateful coordination
WebSockets, real-time
Queues
Message passing
10K ops/day
Vectorize
Vector search
AI/semantic queries

All of these have a free tier. Let's look at what each one gives you and what you could build with it.

The Compute Layer: Workers

A Worker is a small JavaScript/TypeScript program that runs on Cloudflare's edge. It intercepts HTTP requests and can do anything: return dynamic HTML, act as an API, rewrite responses, authenticate users, proxy to other services.

Free LimitWhat It Means
100,000 requests/day~3,300 requests/hour — enough for a personal API, a small SaaS tool, or a portfolio with dynamic features
10ms CPU time per requestEnough for most operations (API calls, template rendering, auth checks). Not enough for heavy computation.
No duration chargeIf your Worker waits on a network call (fetch to a DB, external API), that wait time is free. Only CPU cycles count.
Key Insight

The 10ms CPU limit sounds tiny, but it only counts actual processing — not waiting. A Worker that fetches data from an API (200ms network wait) and formats the response (2ms CPU) only uses 2ms of your budget.

The Storage Layer

KV (Key-Value Store)

A globally distributed key-value store. Data is eventually consistent — reads are fast (served from edge), writes propagate globally within ~60 seconds.

Free LimitGood For
100,000 reads/dayConfiguration, feature flags, cached API responses
1,000 writes/dayInfrequently-updated data
1 GB storagePlenty for config, user sessions, small datasets

D1 (SQL Database)

A serverless SQLite database. Full SQL support, runs at the edge. This is your relational data store.

Free LimitGood For
5 million rows read/dayMost personal apps will never hit this
100,000 rows written/dayBlog comments, user accounts, form submissions
5 GB storageSubstantial — thousands of records easily

R2 (Object Storage)

S3-compatible object storage with zero egress fees. Store files, images, backups — and serve them without paying for bandwidth.

Free LimitGood For
10 GB storageImages, PDFs, file uploads
1M Class A ops/monthUploads, writes
10M Class B ops/monthDownloads, reads
Zero egressServe files to users without bandwidth charges — ever

Durable Objects

Stateful, single-threaded objects with their own SQLite storage. Think of them as tiny servers that handle real-time coordination: chat rooms, game state, collaborative editing.

Free LimitGood For
100,000 requests/dayWebSocket connections, real-time collaboration
13,000 GB-seconds/day~3.6 hours of a 1GB-memory object running continuously
5 GB SQLite storagePer-object state that survives restarts

Queues (Message Queue)

Reliable message delivery between Workers. Producer → Queue → Consumer pattern.

Free LimitGood For
10,000 operations/dayBackground jobs, event processing

Vectorize (Vector Database)

Store and query vector embeddings for semantic search and AI applications.

Free LimitGood For
30M queried dimensions/month~39,000 queries against 768-dimension vectors
5M stored dimensions~6,500 vectors at 768 dimensions

The Security Layer (Always Free)

Everything proxied through Cloudflare automatically gets:

Security by Default

Unlike AWS Lambda or Vercel Functions, where you need to separately configure DDoS protection and SSL, Cloudflare Workers get these for free by virtue of running on Cloudflare's network. Your API is protected the moment you deploy it.

What Can You Actually Build?

Here's what fits comfortably in the free tier:

Project TypeServices UsedWhy It Works
Dynamic API (REST or GraphQL)Workers + D1100K requests/day is plenty for personal/small projects
Full-stack web appWorkers + Static Assets + D1SSR or SPA with a real database
URL shortenerWorkers + KVPerfect KV use case — read-heavy, write-light
Image hostingWorkers + R2Zero egress means free image serving forever
Webhook processorWorkers + Queues + D1Receive webhooks, queue them, process async
Real-time chat appWorkers + Durable ObjectsWebSocket coordination with persistent state
Cron jobs / scheduled tasksWorkers (Cron Triggers)Run code on a schedule — no server needed
AI-powered searchWorkers + Vectorize + Workers AISemantic search over your own content
Email handlerWorkers (Email routing)Programmatically handle incoming emails
Auth gateway / proxyWorkersAdd auth to any backend with a Worker in front

What Doesn't Fit

Be honest about the limits:

How It Compares

Traditional Free Tiers

AWS Lambda: 1M requests/month free, but you pay for API Gateway, need to configure VPC, no built-in DDoS protection.

Vercel: Generous compute, but 100GB bandwidth cap, and serverless functions run in a single region.

Cloudflare Free Tier

Workers: 100K/day (~3M/month), runs globally at 300+ locations, DDoS + SSL + WAF included, zero egress on R2, real SQL database with D1.

Trade-off: tighter CPU limits, smaller ecosystem.

Your Next Step

You now have the map. The next lesson will get your hands dirty: we'll deploy your first Worker — a simple dynamic API — and see it running at the edge with full security protection, in under 5 minutes.

📖 Primary Source

Cloudflare Workers Pricing — the official source for all free-tier limits. Bookmark this; limits change occasionally and this is always current.

💬 Questions? Ask me anything that's unclear. For example: "Which storage option should I use for X?" or "Can Workers handle WebSockets?" — I'm your teacher, use me.
Next →