Quick Verdict: Pages vs Workers
Bottom Line
Start new projects on Workers. It does everything Pages does (static hosting, framework support) plus serverless compute, Durable Objects, KV, R2, D1, Queues, Cron Triggers, and the new Dynamic Workers SDK. Pages still works fine for pure static sites with Git-based CI/CD, but Cloudflare is putting all new development into Workers.
Architecture: How They Actually Work
Pages and Workers run on the same global network of 300+ data centers. The difference is what sits between a request and a response.
Pages: Static-First with Functions Bolted On
Pages serves static files from Cloudflare's edge CDN. When you add a functions/ directory or use a framework adapter (Next.js, Astro, SvelteKit), Pages compiles your server routes into a Worker that runs in front of your static assets. Git push triggers a build. Every branch gets a preview URL. The abstraction is clean, but the compute layer underneath is still Workers.
Workers: V8 Isolates as the Primitive
Workers run JavaScript/TypeScript inside V8 isolates, the same engine Chrome uses. Each isolate starts in milliseconds with ~2MB memory overhead, compared to 30-50MB for a container. One edge node hosts thousands of isolates simultaneously. You get direct access to KV, R2, D1, Durable Objects, Queues, and now Dynamic Workers for programmatic isolate creation.
The key insight: Pages Functions are Workers. When you deploy a Pages project with server-side routes, Cloudflare compiles those routes into a Worker. You get the same V8 isolate runtime, the same CPU time limits, the same billing. Pages just hides the wiring.
Feature Comparison: Pages vs Workers
| Feature | Pages | Workers |
|---|---|---|
| Static asset hosting | Native (CDN-backed) | Native (added 2024-2025) |
| Git-based CI/CD | Built-in (GitHub/GitLab) | Via Builds (newer, less mature) |
| Preview deployments | Automatic per branch/PR | Manual or via CI |
| Server-side compute | Pages Functions (limited) | Full Workers runtime |
| Durable Objects | No | Yes |
| KV, R2, D1, Queues | Via bindings (limited) | Full access |
| Cron Triggers | No | Yes |
| Dynamic Workers / Sandbox SDK | No | Yes (open beta) |
| Framework support | Next.js, Astro, SvelteKit, etc. | Same frameworks via adapters |
| Custom domains | Yes | Yes |
| Wrangler CLI | wrangler pages | wrangler deploy |
| Build config | Dashboard or wrangler.toml | wrangler.toml |
| Status | Maintenance mode | Active development |
Use Cases: Matching the Tool to the Problem
Pages is Still Simpler For
Documentation sites, marketing pages, blogs, and any project where the entire output is static HTML/CSS/JS. You connect your GitHub repo, set the build command and output directory, and Pages handles the rest. Every PR gets a preview URL. Rollbacks are instant. No wrangler.toml to configure, no bindings to manage.
Workers is Required For
Anything that needs server-side logic beyond what a framework adapter provides. API endpoints with custom routing. Authentication flows. WebSocket connections via Durable Objects. Scheduled jobs via Cron Triggers. Data pipelines that read from R2 and write to D1. AI agent sandboxing via Dynamic Workers.
The Hybrid Approach is Dying
The old pattern was: Pages for the frontend, a separate Worker for the API. This made sense when Pages couldn't do compute and Workers couldn't serve static files. Now Workers does both. A single wrangler.toml can define your static assets, your API routes, your KV bindings, and your cron schedules. One deployment, one project, one bill.
Pricing
Pages and Workers share the same paid plan. The $5/month minimum covers both. Static asset requests are free on both platforms.
| Item | Pages Free | Workers Free | Paid ($5/mo) |
|---|---|---|---|
| Static requests | Unlimited | Free (not counted) | Free (not counted) |
| Function/Worker requests | 100K/day (shared) | 100K/day | 10M/month included |
| CPU time per request | 10ms | 10ms | 30 seconds |
| Builds | 500/month | N/A | 5,000/month |
| Bandwidth | Unlimited | Unlimited | Unlimited |
| Additional requests | N/A | N/A | $0.30 per million |
| Additional CPU time | N/A | N/A | $0.02 per million CPU-ms |
The pricing parity is intentional. Cloudflare wants you on Workers. They removed the cost incentive to stay on Pages by making static asset serving free on Workers and billing Pages Functions at Workers rates.
Dynamic Workers and the Sandbox SDK
The biggest gap between Pages and Workers in 2026 is Dynamic Workers, which entered open beta in March. This is a Workers-only feature with no Pages equivalent.
Dynamic Workers let you programmatically create V8 isolates on demand. The isolate starts in milliseconds with ~2MB memory overhead. Compare that to spinning up a container (seconds, 30-50MB minimum). Cloudflare claims 100x faster startup and 100x better memory efficiency, which tracks with the V8 isolate architecture they have been running for eight years.
The Sandbox SDK ships three packages. @cloudflare/worker-bundler resolves npm dependencies and bundles source files with esbuild. @cloudflare/codemod replaces individual tool calls with a single code() tool so LLMs can write and execute TypeScript that orchestrates multiple API calls in one pass. @cloudflare/shell gives the isolate a virtual filesystem backed by SQLite and R2.
Why This Matters for AI
AI agents need to execute generated code safely. Most teams use containers for this, which adds seconds of latency per execution. Dynamic Workers give you isolate-level sandboxing with millisecond startup. If you are building AI agent infrastructure, this is the reason to be on Workers, not Pages.
When Pages Still Wins
Zero-Config Git Deployments
Connect a GitHub repo, set a build command, done. Every branch gets a preview URL. Every PR shows a deployment status check. No wrangler.toml, no bindings, no configuration files beyond what your framework needs.
Pure Static Sites
Documentation, marketing pages, blogs, portfolios. If the build output is just HTML/CSS/JS with no server-side routes, Pages is the path of least resistance. Unlimited bandwidth, unlimited static requests, 500 builds/month on the free tier.
Non-Technical Teams
Pages' dashboard-driven workflow is easier for teams that don't want to learn Wrangler. Push to main, it builds, it deploys. The simplicity has real value when the people deploying aren't infrastructure engineers.
Existing Pages Projects
If it works, don't migrate for the sake of migrating. Pages isn't going away. It shares the same underlying network and runtime. Migrate when you need a Workers-only feature, not because of FOMO.
When Workers Wins
Full-Stack Applications
Frontend and backend in one deployment. Static assets, API routes, KV bindings, R2 storage, D1 database, all defined in a single wrangler.toml. No separate infrastructure to manage.
Stateful Edge Logic
Durable Objects give you strongly consistent, single-threaded state at the edge. WebSocket servers, collaborative editing, distributed locks, rate limiters. Pages has no equivalent.
AI Agent Infrastructure
Dynamic Workers (open beta) let you spin up sandboxed V8 isolates on demand with millisecond startup. The Sandbox SDK adds npm bundling, a virtual filesystem, and persistent storage. This is the platform Cloudflare is betting on for AI workloads.
Scheduled and Event-Driven Work
Cron Triggers for scheduled jobs. Queues for async processing. Tail Workers for logging and analytics. Email Workers for inbound email handling. None of these exist on Pages.
Frequently Asked Questions
Should I use Cloudflare Pages or Workers for a new project in 2026?
Workers, unless you have a pure static site with no server-side requirements. Workers now serves static assets natively, supports all the same frameworks, and gives you access to the full Cloudflare developer platform (Durable Objects, KV, R2, D1, Queues, Cron Triggers, Dynamic Workers). Pages is in maintenance mode.
Is Cloudflare Pages being deprecated?
Not officially. Cloudflare says Pages will continue to be supported and receive bug fixes. But all new investment goes to Workers. New features like Dynamic Workers, the Sandbox SDK, and enhanced static asset handling are Workers-only. The migration guide from Pages to Workers exists for a reason.
How much do Cloudflare Pages and Workers cost?
Both have free tiers. Workers Free: 100,000 requests/day, 10ms CPU time per request. Pages Free: unlimited static requests, unlimited bandwidth, 500 builds/month. The paid plan is $5/month shared across both, including 10 million Workers requests, 30 million CPU-ms, and 5,000 builds. Additional requests cost $0.30 per million. No bandwidth charges on either plan.
Can Cloudflare Workers serve static files?
Yes. Workers gained native static asset hosting. You define your assets in wrangler.toml, deploy with wrangler deploy, and Cloudflare serves them from its edge CDN. Static asset requests are free, same as Pages. A single Worker can serve your React app and your API from one deployment.
What are Cloudflare Dynamic Workers?
Dynamic Workers (open beta, March 2026) let you create V8 isolates programmatically at runtime. Startup is milliseconds, memory is ~2MB per isolate, and Cloudflare claims 100x better performance than containers. The Sandbox SDK adds npm dependency bundling (@cloudflare/worker-bundler), a code execution tool for LLMs (@cloudflare/codemod), and a virtual filesystem (@cloudflare/shell). The primary use case is safe execution of AI-generated code.
Related Comparisons
Morph Runs on Cloudflare Infrastructure
Morph deploys AI coding models on Cloudflare's global network. Fast inference at the edge, same V8 isolate architecture that powers Workers. Try the API or use Morph through your favorite coding agent.