/ tool-comparisons / Fly.io vs Cloudflare Pages for Solo Developers
tool-comparisons 10 min read

Fly.io vs Cloudflare Pages for Solo Developers

Comparing Fly.io and Cloudflare Pages for solo developers. Features, pricing, pros and cons, and which one to pick for your next project.

Hero image for Fly.io vs Cloudflare Pages for Solo Developers

Quick Comparison

Feature Fly.io Cloudflare Pages
Type Global edge VM platform (Docker micro-VMs) Static hosting + edge functions on Workers
Pricing Pure pay-as-you-go, no permanent free tier for new accounts Free plan (unlimited bandwidth) or Workers Paid at $5/mo minimum
Smallest always-on cost ~$2.02/mo for shared-cpu-1x at 256 MB RAM $0 on the free plan for static sites
Free request allowance None (free trial credit only) 100,000 Functions/Workers requests per day
Build minutes (free) N/A (you build Docker images yourself) 3,000 build minutes per month
Outbound bandwidth $0.02/GB in NA/EU, up to $0.12/GB elsewhere Unlimited and free at every tier
Learning Curve Moderate (Docker plus fly.toml) Easy (connect repo, set build command)
Best For Full Docker apps, any language, real databases Static sites and JS/TS edge apps
Solo Dev Rating 8/10 9/10

Fly.io Overview

Fly.io deploys Docker containers as micro VMs across a global edge network. Any language, any framework, any dependency. You configure with fly.toml, deploy via CLI, and your app runs in multiple regions. The platform includes managed Postgres, persistent volumes, private networking, and LiteFS for distributed SQLite.

For solo developers building server-heavy applications, Fly.io provides a managed way to deploy globally without learning Kubernetes or managing servers. There is no permanent free tier for new accounts anymore. New sign-ups get a short free trial credit, and after that everything is pure pay-as-you-go billed per second. The old 3-shared-VM allowance still exists, but only as a grandfathered perk for legacy accounts. Cost scales with VM size, RAM, bandwidth, and storage.

Cloudflare Pages Overview

Cloudflare Pages deploys static sites and edge-rendered applications to Cloudflare's global network, which now spans 337 cities across more than 100 countries. It started as a static hosting service and evolved into a full edge platform through its integration with Cloudflare Workers.

Modern frameworks like Next.js, Astro, SvelteKit, Nuxt, and Remix can run on Pages with server-side rendering via Workers. You connect a GitHub repo, configure your build command, and every push deploys globally. The free plan includes unlimited bandwidth, unlimited requests to static assets, 100,000 Functions requests per day, and 3,000 build minutes per month, all on a global network at no cost.

The Cloudflare ecosystem extends Pages with Workers KV (key-value storage), D1 (SQLite at the edge), R2 (S3-compatible object storage), Queues, and Durable Objects. It's a complete edge development platform.

Key Differences

Runtime model. Fly.io runs full Docker containers as VMs. Your app can use any language, install any system dependency, and write to the file system. Cloudflare Pages runs JavaScript/TypeScript on Workers (V8 isolates) with significant restrictions. No file system writes, limited CPU time per request, and no native binaries. Fly.io is more flexible. Pages is lighter and faster for what it supports.

What you can host. Fly.io hosts anything containerizable. Django, Rails, Go services, ML inference. Cloudflare Pages hosts static sites natively and dynamic applications through Workers functions. If your backend is Python or Go, Fly.io is the only option. If your entire stack is JavaScript/TypeScript with a framework like Next.js or Astro, Pages handles it well.

Performance profile. Cloudflare Pages serves static assets from a network spanning 337 cities. That's hard to beat for static content. Fly.io serves dynamic content from your selected regions (typically 5-30, depending on configuration). For static-heavy sites, Cloudflare is faster. For compute-heavy dynamic responses, Fly.io's VMs are more powerful.

Pricing. Cloudflare Pages wins on cost for most solo developer projects. The free plan alone covers static sites and moderate-traffic SSR apps, with unlimited bandwidth and 100,000 Functions requests per day. Fly.io has no permanent free tier for new accounts anymore, so any always-on app starts billing from the first hour. Even the smallest VM, a shared-cpu-1x with 256 MB of RAM, runs about $2.02 per month before bandwidth or storage. For a blog, marketing site, or documentation, paying anything when Cloudflare Pages is free doesn't make sense.

Database options. Fly.io has managed Postgres and can run any database in a container. Cloudflare has D1 (edge SQLite) and KV. D1 is good for read-heavy workloads and small to medium datasets. For complex queries, joins, and large datasets, Fly.io's Postgres is more capable.

Deployment experience. Cloudflare Pages deploys are fast. Push to GitHub, build runs, site is live in under a minute. Fly.io builds Docker images and provisions VMs, which takes 1-3 minutes. Cloudflare also provides instant preview URLs for every pull request, which is excellent for review workflows.

Vendor ecosystem. Choosing Cloudflare Pages means buying into the Cloudflare ecosystem. Workers, KV, D1, R2 are all Cloudflare-specific. If you want to migrate away, you're rewriting edge logic. Fly.io runs standard Docker containers, making migration to any Docker-compatible platform straightforward.

By the Numbers (2026)

The marketing pages move fast, so here are the figures that actually matter for a solo budget, pulled from each vendor's own docs and checked on 2026-05-28.

Fly.io

  • No permanent free tier for new accounts. New sign-ups get a short free trial credit, then everything is pay-as-you-go billed per second. Fly.io cost management docs
  • Smallest machine, shared-cpu-1x with 256 MB RAM, costs about $2.02 per month always-on in the default region. Additional RAM runs about $5 per GB per 30 days. Fly.io resource pricing
  • Outbound bandwidth is $0.02/GB in North America and Europe and up to $0.12/GB in some other regions. Inbound bandwidth is free. Fly.io resource pricing
  • Persistent volume storage is $0.15/GB per month of provisioned capacity. Fly.io resource pricing
  • Managed Postgres starts at $38 per month for the Basic plan (Shared-2x CPU, 1 GB RAM), plus $0.28/GB per month for storage. Fly.io Managed Postgres docs

Cloudflare Pages

  • Free plan includes unlimited bandwidth, unlimited requests to static assets, and 100,000 Functions or Workers requests per day. Cloudflare Pages Functions pricing
  • Free plan gives 3,000 build minutes per month with 1 concurrent build. The Workers Paid plan raises that to 6,000 build minutes and 6 concurrent builds, then $0.005 per extra minute. Cloudflare Workers build limits
  • Workers Paid starts at a $5 per month minimum and includes 10 million requests and 30 million CPU milliseconds per month. Overages are $0.30 per additional million requests and $0.02 per additional million CPU milliseconds. Cloudflare Workers pricing
  • Edge data stores have real free allowances. D1 gives 5 million row reads per day, 100,000 row writes per day, and 5 GB storage. KV gives 100,000 reads per day and 1 GB stored. R2 gives 10 GB-month of storage with free egress. Cloudflare Workers pricing
  • The network spans 337 cities across more than 100 countries, which is what makes the static delivery hard to beat. Cloudflare network

Real Cost at Solo-Dev Scale

Numbers in isolation do not help much, so here is a single realistic workload priced on both platforms using the per-unit rates above. None of this is a benchmark I ran, it is arithmetic on each vendor's published rates.

The workload. A small full-stack side project. One always-on web service, a Postgres database, roughly 50 GB of outbound traffic a month served from North America or Europe, and 10 GB of database storage. On the Cloudflare side, assume the same project rebuilt as an Astro or Next.js app on Pages with Functions, comfortably under 100,000 requests per day, plus a D1 database under the free row limits.

Fly.io math. One shared-cpu-1x machine at 256 MB is about $2.02 per month. Bump it to 512 MB of RAM for headroom and you add roughly $1.25, so call the app around $3.27. Managed Postgres Basic is $38 plus $0.28/GB, so 10 GB of storage adds $2.80, landing at $40.80. Outbound bandwidth at 50 GB times $0.02 is $1.00. Total is about $45 per month, dominated by the managed database. Run your own Postgres in a container on a second small VM instead of the managed offering and the database line drops sharply, at the cost of doing your own backups and failover.

Cloudflare Pages math. A static or SSR site under 100,000 daily requests, with bandwidth that is unlimited and free, and a D1 database under 5 million daily row reads, fits entirely inside the free plan. Cost is $0. Cross into Functions traffic above the free request ceiling or want 6 concurrent builds and you opt into Workers Paid at $5 per month minimum, which still includes 10 million requests.

The takeaway. For this exact workload the gap is roughly $45 per month versus $0 to $5. That gap is almost entirely the relational database and the always-on VM, which Fly.io charges for and Cloudflare's free edge stack does not. The moment your project genuinely needs a real Postgres with joins, large datasets, and long-running queries, that $40-ish line is the price of capability, not waste. If your data fits D1 and your code runs on Workers, Cloudflare stays free far longer than feels reasonable. Pick based on what your backend actually requires, then let the bill follow.

When to Choose Fly.io

  • Your backend uses Python, Go, Ruby, or any non-JS/TS language
  • You need a full relational database on the same platform
  • Your app requires persistent file storage or long-running processes
  • You need more compute power than Workers provide
  • Avoiding vendor lock-in is important to you

When to Choose Cloudflare Pages

  • You're building a static site, blog, or documentation
  • Your framework runs on Cloudflare Workers (Next.js, Astro, SvelteKit)
  • Free global CDN hosting is attractive for your budget
  • Lightweight data storage (D1, KV) covers your needs
  • You want the fastest static asset delivery globally

The Verdict

Fly.io and Cloudflare Pages are built for different jobs. Cloudflare Pages excels at static content and edge-rendered frontends. Fly.io excels at dynamic backends and anything that needs a full server runtime.

For solo developers building content sites, blogs, landing pages, or SSR apps with frameworks like Astro or Next.js, Cloudflare Pages is the obvious choice. Free hosting on a global CDN with 300+ edge locations. There's no reason to pay more for this use case.

For solo developers building APIs, full-stack apps with real backends, or anything requiring Python, Go, or persistent processes, Fly.io is the right tool. Docker containers give you the flexibility that Workers can't match.

The best approach for many solo developers is using both. Cloudflare Pages for your frontend, Fly.io for your API and database. You get free global delivery for static assets and managed compute for your backend. Each platform doing what it does best.

Sources

All figures checked on 2026-05-28 against the vendors' own documentation.

Built by Kevin

Like this? You'll like what I'm building too.

Two ways to support and get more of this work.

Desktop App

HEARTH

A privacy-first Life OS for your desktop. Journal, tasks, and notes that stay on your machine. Coming soon, direct download from this site.

Read more
Digital Products

MY TOOLKITS

Receipts-first toolkits for shipping after hours, building Claude agents, publishing on Amazon, and more. The exact methods I used, not theory.

Browse on Whop

Need This Built?

Kevin builds products solo, from first version to live. If you want something like this made, work with him.