Workers and Pages vs Vercel, Railway, and Render
Compare Cloudflare Workers, Pages, Vercel, Railway, and Render across runtime, static hosting, Next.js DX, containers, background jobs, persistence, and billing.
Edited and verified by Orange Book Editorial Team ·

Choose the runtime before the platform
Workers combines a global isolate runtime with static assets. Pages is a Git-first static-site and Pages Functions product. Vercel is a managed frontend platform with strong Next.js workflow. Railway and Render are closer to regional PaaS products for arbitrary containers, resident processes, and services. They are not points on one “basic to advanced” line.
Separate Pages and Workers inside Cloudflare first
Cloudflare's current migration guide says Workers can host static assets, APIs, and SSR while exposing broader capabilities than Pages, including Durable Objects, Cron Triggers, and expanded observability. For a new Cloudflare full-stack project, evaluate Workers Static Assets first. An existing, stable, simple Pages site does not need a novelty migration.
Static asset requests are free on both Pages and Workers Static Assets; Pages Functions are billed as Workers requests. Git previews, bindings, routes, custom domains, and configuration workflows still differ, so validate the official migration checklist rather than copying a directory and assuming parity.
Detailed description
- 01Workers
A fit for Web APIs, static assets, and Cloudflare Bindings—not an arbitrary Docker host.
- 02Pages
A fit for existing Git-first static publishing and light Functions; test Workers first for a new full stack.
- 03Vercel
A fit for Next.js and frontend teams where previews, framework integration, and managed DX dominate.
- 04Railway
A fit for Docker, resident processes, native dependencies, and resource-metered regional services.
- 05Render
A fit for regional web services, background workers, static sites, and optional persistent disks.
Capability boundaries
| Dimension | Workers | Pages | Vercel | Railway | Render |
|---|---|---|---|---|---|
| Primary execution model | Global V8 isolates + Static Assets | Static CDN + Pages Functions | CDN + Functions / Fluid Compute | Regional container services | Regional Web Service, Background Worker, Static Site |
| Strongest entry point | Cloudflare-native full stack, APIs, security, Bindings | Existing static sites and Git previews | Next.js and frontend-platform workflow | Docker, arbitrary-language services, quick environment composition | Web services, background jobs, declarative service composition |
| Resident background process | Not a daemon host; use Queues, Cron, Workflows, and event models | No; Functions inherit Workers constraints | Functions and managed background features, not an arbitrary daemon host | Persistent services and workers | Dedicated Background Worker service |
| Native binaries / arbitrary ports | Bounded by Workers runtime and compatibility | Same Functions boundary | Bounded by function runtime and build environment | Usually most flexible inside a container | Containerized service; Web Service binds the expected port |
| Local persistent disk | No; use R2, D1, KV, DO, or another service | No; use platform storage | Use platform or external databases/storage | Volumes available | Persistent Disk for supported service types and plans |
| Geography | Global execution by default | Global static delivery; Functions follow Workers | Global network plus selected function regions | Service runs in a selected region | Service runs in a selected region |
| Main billing units | Requests, CPU time, and bindings; static asset requests free | Static assets free, Functions billed as Workers | Invocations, Active CPU, Provisioned Memory, data, and platform units | Plan credit plus CPU, memory, outbound, and volume | Service instance, bandwidth, disk, and add-ons |
Pricing snapshot and cost-efficient shapes
Workers Paid currently starts at $5/month and includes 10 million requests and 30 million CPU-ms. Overage is $0.30 per million requests and $0.02 per million CPU-ms. Workers has no separate egress or throughput charge and static asset requests are free, although a cache hit on a route that invokes a Worker still counts as a Worker request. See Workers Pricing for the exact path.
Railway currently lists Hobby at $5 and Pro at $20 with matching usage credit. Public resource rates include $10/GB-month memory, $20/vCPU-month CPU, $0.05/GB egress, and $0.15/GB-month volume. Vercel Fluid Compute meters dimensions such as Active CPU, Provisioned Memory, and Invocations. Render bills service instances, bandwidth, disks, and related resources. These are different units: model idle time, peaks, region, builds, previews, and outbound for the same app.
| Workload shape | Evaluate first | Why |
|---|---|---|
| Many short Web requests, static assets, global traffic, Cloudflare storage/security | Workers | Separate request/CPU billing, free static assets, and close composition with Bindings and security |
| Stable existing static site with Git previews and a few Functions | Pages | Migration value may be low; preserving a proven workflow can be more valuable |
| Next.js team prioritizing framework integration, previews, and frontend platform DX | Vercel | Developer workflow can matter more than a headline runtime rate |
| Resident service, arbitrary Docker, native dependencies, long-running background worker | Railway or Render | The container/instance model matches instead of forcing the job into request functions |
Waiting is not unlimited compute on Workers
An HTTP request has no fixed wall-time limit while the client stays connected, and I/O wait does not count as CPU. Workers still has 128 MB memory, Paid HTTP CPU defaults to 30 seconds and can be configured only within current limits, and the runtime is not a resident container, arbitrary-port host, or local disk. PDF, image, and AI-built apps need real CPU, memory, and dependency tests.
Where an AI-built application should land
Here, an “AI application” means an application built with AI assistance: a SaaS, CMS, image converter, PDF processor, or website-defense tool. It does not imply an AI agent or chatbot.
| Application | Workers/Pages path | Vercel path | Railway/Render path |
|---|---|---|---|
| SaaS / CMS | Prefer Workers when APIs use Web standards and data fits D1/R2; keep Pages for a purely static existing frontend | Strong when Next.js full-stack and preview workflow dominate | Strong when a complete Node process, special package, or self-hosted service is required |
| Image conversion | Test Workers Images, Image Resizing, WASM, memory, and CPU; split heavy work with a Queue | Strong frontend upload flow, but conversion still needs function-limit or external-service review | Natural for ImageMagick, native Sharp pipelines, long jobs, and local scratch space |
| PDF processing | Compose small parsing/orchestration with R2 and Browser Rendering; validate signatures, size, and timeout | Suitable for frontend and short functions, with heavy processing elsewhere | Better fit for LibreOffice, Chromium, font packages, or long-running queue workers |
| Website defense | Workers composes directly with WAF, Rate Limiting, Turnstile, Rules, and Access | The domain can still use Cloudflare and protect a Vercel origin | The domain can still use Cloudflare and restrict the regional container origin |
AI-generated deployment configuration often ignores the runtime: Node-native modules appear in Workers, daemons are placed in functions, uploads are written to ephemeral disk, secrets are committed, or a platform change is assumed to migrate databases and queues. The first platform-selection deliverable should be a list of non-negotiable runtime constraints—not a deploy button.
Detailed description
For an AI-built Next.js project, start with the compatibility-gated and reversible deployment tutorial. Other runnable material includes the full-stack application, multi-tenant SaaS, image transformer, PDF tool, and application defense.
Official and vendor sources
Did this page help you complete your goal?
Beta feedback is generated in this browser and is never uploaded automatically.