TL;DR: All three platforms deploy Astro well, but the trade-offs matter. Vercel has the smoothest DX and fastest cold starts for SSR. Cloudflare Workers is cheapest at scale with true edge execution. Netlify is solid for static-heavy sites but lags on SSR performance. Here’s the real-world comparison from deploying the same Astro 6 site to all three.
Astro’s adapter system means you can deploy to practically any platform. But “can deploy” and “should deploy” are different conversations. Each platform has distinct build pipelines, pricing models, and runtime characteristics that affect your site’s performance and your monthly bill.
I deployed the same Astro 6 site — this one — to all three platforms and measured what matters.
Table of Contents
The Test Setup
The site: 23 blog posts, 2 project pages, dynamic OG image generation via Satori, content collections with MDX, one React island (command palette). Roughly 40 pages total.
What I measured:
- Build time — from
git pushto live - Cold start latency — first request after 10 minutes of inactivity
- TTFB — server response time for an SSR page
- Static asset delivery — CDN cache hit performance
- Monthly cost — at ~10K and ~100K page views
Vercel
Setup
Vercel auto-detects Astro and configures the build with zero config. Install the adapter:
npx astro add vercel
That’s it. Push to GitHub and the site is live. The astro.config.mjs change is a single line:
import vercel from '@astrojs/vercel';
export default defineConfig({
output: 'server',
adapter: vercel(),
});
Performance
| Metric | Result |
|---|---|
| Build time | 38s |
| Cold start (SSR) | ~120ms |
| TTFB (warm) | ~45ms |
| Static TTFB | ~15ms (CDN) |
Vercel’s edge network is fast. Cold starts are noticeably snappy because they use lightweight V8 isolates for serverless functions. The Astro integration handles ISR (Incremental Static Regeneration) natively if you want a hybrid approach.
Pricing Reality
The free tier covers 100GB bandwidth and 100K serverless invocations. For a personal portfolio or small blog, you’ll never pay. At ~100K monthly page views with SSR, expect to stay within the free tier or hit the low end of Pro ($20/mo).
Verdict
Best developer experience. Fastest cold starts. The Git integration, preview deployments, and dashboard are polished. If DX is your priority, this is the default choice.
Cloudflare Pages + Workers
Setup
Cloudflare requires the Cloudflare adapter:
npx astro add cloudflare
import cloudflare from '@astrojs/cloudflare';
export default defineConfig({
output: 'server',
adapter: cloudflare(),
});
Deploy via wrangler CLI or connect a GitHub repo through the Cloudflare dashboard. The initial setup has a few more steps — you’ll need a Cloudflare account and to configure a wrangler.toml for any Workers-specific settings.
Performance
| Metric | Result |
|---|---|
| Build time | 42s |
| Cold start (SSR) | ~8ms |
| TTFB (warm) | ~25ms |
| Static TTFB | ~12ms (CDN) |
Those cold start numbers aren’t a typo. Cloudflare Workers run on V8 isolates at the edge — there’s no container spin-up. Every request runs close to the user. The trade-off is a more constrained runtime: no Node.js APIs, limited to the Workers runtime.
Pricing Reality
Cloudflare’s free tier is generous: 100K Workers requests/day, unlimited static bandwidth. At 100K monthly page views, you’ll pay nothing. Even at scale, Workers pricing ($5/10M requests) is dramatically cheaper than serverless functions on other platforms.
Verdict
Cheapest at scale with the best raw performance numbers. The trade-off is DX — the Workers runtime has quirks (no fs, no native Node modules), and debugging is less intuitive than Vercel. If you’re building for performance and cost, this is the pick.
Netlify
Setup
npx astro add netlify
import netlify from '@astrojs/netlify';
export default defineConfig({
output: 'server',
adapter: netlify(),
});
Netlify’s Git integration is straightforward — connect the repo and it detects Astro automatically. Build settings are usually correct out of the box.
Performance
| Metric | Result |
|---|---|
| Build time | 51s |
| Cold start (SSR) | ~350ms |
| TTFB (warm) | ~80ms |
| Static TTFB | ~18ms (CDN) |
Netlify runs SSR via AWS Lambda under the hood. The cold starts are noticeably slower — Lambda containers take longer to spin up than V8 isolates. Static assets perform well through their CDN, but the SSR story is weaker.
Pricing Reality
Free tier includes 100GB bandwidth and 125K serverless function invocations. Comparable to Vercel’s free tier. At scale, pricing is similar to Vercel Pro.
Verdict
Solid platform for static-heavy sites. If you’re running Astro in full static mode (output: "static"), Netlify performs identically to the others. But for SSR or hybrid rendering, the Lambda cold starts are a meaningful disadvantage.
The Comparison Table
| Vercel | Cloudflare | Netlify | |
|---|---|---|---|
| Setup effort | Zero-config | Low (wrangler) | Zero-config |
| SSR cold start | ~120ms | ~8ms | ~350ms |
| TTFB (warm) | ~45ms | ~25ms | ~80ms |
| Build time | 38s | 42s | 51s |
| Free tier | Generous | Very generous | Generous |
| Cost at 100K views | $0–20/mo | $0 | $0–19/mo |
| Runtime | Node.js + Edge | Workers (V8) | Node.js (Lambda) |
| Best for | DX + SSR | Performance + cost | Static sites |
My Recommendation
For most Astro sites in 2026:
- Default to Vercel if you want the smoothest experience and don’t want to think about deployment
- Use Cloudflare if you’re cost-sensitive, need edge performance, or are building for scale
- Use Netlify if you’re already in their ecosystem or running fully static
This site runs on Vercel. The build-push-live cycle is under 40 seconds, preview deployments work perfectly, and the free tier covers everything I need right now. If traffic grows significantly, I’d consider Cloudflare for the cost advantage.
The good news: Astro’s adapter system means switching is a one-line change. Don’t overthink the initial decision — you can migrate in 15 minutes.