Compare / Cloudflare Workers

The Cloudflare Workers alternative that runs anything
Cloudflare Workers are fast, cheap, and everywhere, because they are V8 isolates rather than machines. That is also the constraint: no native modules, no arbitrary binaries, no process that stays alive between requests. Cloudflare’s own answer is Containers, a second runtime on the Paid plan with its own metering. Lizard runs the ordinary Linux container as the default, where ffmpeg, Playwright, a Postgres driver, and a queue consumer all work as written.
Why developers look for a Cloudflare Workers alternative
It is not Node, and not Linux
Workers implement a subset of Node APIs on the V8 isolate model. A dependency with a native addon, or a CLI you shell out to, is not a small problem to work around — it is out of scope, and node:child_process only looks available because it is a non-functional stub. Cloudflare’s answer is a separately billed Container.
Billing is CPU time, which hides the ceiling
The Paid plan is $5 a month for 10 million requests and 30 million CPU-milliseconds, then $0.30 per million requests and $0.02 per million CPU-ms. Cheap for routing and rendering, awkward for anything compute-heavy.
No long-lived process
A Worker exists to answer a request, and Durable Objects give you state, not a daemon. Cloudflare’s answer for an all-night queue consumer is a Container — Paid plan only, metered on memory, CPU, disk, and egress, with no promise that any instance survives the night.
The data layer is Cloudflare-shaped
D1, KV, R2, and Durable Objects are good products with their own APIs and their own limits. Portability out of them is real work.
Lizard vs Cloudflare Workers
Every figure read off Cloudflare Workers’s published pricing and our own. Last verified: 27 August 2026.
| Compared by | Lizard | Cloudflare Workers |
|---|---|---|
| Runtime | A full Linux container — any language, any binary | V8 isolates with a Node-compatible subset |
| Long-lived processes | Yes, with no time limit | Not in a Worker; a Container stays warm for an idle window you set, 10 minutes by default |
| Native modules and binaries | Anything that runs on Linux | Not in a Worker — only inside a Cloudflare Container, billed separately |
| Filesystem | Full read-write root | Virtual only — read-only /bundle and a /tmp wiped after every request, against the 128 MB memory limit |
| Billing | $0.0278 per vCPU-hour, $0.0139 per GB-hour, on measured use | $5 a month for 10M requests and 30M CPU-ms, then $0.30 per million requests and $0.02 per million CPU-ms |
| Egress | 50 GB a month included on Hobby, 300 GB on Pro, then $0.05 per GB | Not billed |
| Cold starts | None — the process is already running | Effectively none — isolates start in single-digit milliseconds |
| Free tier | $5 of credit, no card | 100,000 requests a day, 10 ms of CPU per invocation |
| Database | Managed Postgres, Redis, S3-compatible storage in the same project | D1, KV, R2, Durable Objects |
| Global placement | Regions you pick | Every Cloudflare location, by default |
When Cloudflare Workers are the better choice
Anything that belongs at the edge: routing, redirects, auth checks, A/B splits, image transforms, API gateways, and static sites with a little logic attached. Latency is better than anything origin-based can be, egress is genuinely free, and $5 a month covers 10 million requests. If your code fits the isolate model, nothing here beats it on price or reach — plenty of teams run Workers at the edge and Lizard for the origin.
Moving from Cloudflare Workers
No Dockerfile required — lizardpack detects the stack and writes one on the build node. If your repo already has a Dockerfile, it is used as it stands.
Frequently asked questions
For code that needs a real runtime — native modules, binaries, a filesystem, or a process that stays alive — a container platform such as Lizard, Railway, or Fly.io. For staying serverless with fewer runtime limits, Google Cloud Run or Deno Deploy. Many teams keep Workers at the edge and move only the parts that do not fit.
Because Workers are V8 isolates, not Node processes. Packages with native addons have nowhere to run, and ones that spawn child processes hit node:child_process, which ships as a non-functional stub. The code needs a Linux runtime, which is what a container platform gives you.
The Free plan gives 100,000 requests a day with a 10 ms CPU limit per invocation. The Paid plan is $5 a month including 10 million requests and 30 million CPU-milliseconds, then $0.30 per million requests and $0.02 per million CPU-ms. Egress is not billed at all.
Not inside a Worker. On Cloudflare, yes — Containers went GA in April 2026 on the Workers Paid plan, run any image, and stay up until an idle timeout you set, 10 minutes by default. Cloudflare will not promise any instance runs for a set period, disk is ephemeral, and memory, CPU, disk, and egress are metered on top of the $5 plan.
For pure request handling, usually not — $5 for 10 million requests with free egress is very hard to beat, and that is the shape Workers are built for. Lizard wins when the work is not request-shaped: long jobs, warm processes, native dependencies, and anything that needs a filesystem.
Build with AI. Ship with Lizard.
You don't need a platform team to go live. Your whole cloud, one CLI command away.
No credit card required