Is Vercel a good choice for content sites?

Vercel is famous for Next.js, but it is also excellent for Astro content sites. Use this vercel.json setup, image config, and bandwidth math to decide.

Vercel built its reputation on Next.js applications, which makes some content-site authors assume it is overkill for a blog. It is not. For Astro / Next.js content sites, Vercel gives you fast builds, image optimization, preview deploys, and analytics with no setup. The real question is bandwidth cost at scale — answered with the math below.

Background

A pure-static content site costs Vercel almost nothing in compute — it is bytes served from a CDN. But Vercel’s pricing is opinionated: bandwidth on Hobby is generous but capped, on Pro is paid per GB beyond the included amount. For most indie content sites, that math works out fine. For a site doing millions of monthly page views, Cloudflare Pages or Firebase Hosting may be cheaper.

How to tell

  • You are using Astro, Next.js, or another supported framework for content.
  • Monthly bandwidth is comfortably inside the included limits (1 TB on Pro).
  • You value image optimization, ISR, and per-branch preview deploys.
  • You want one dashboard for analytics, deploys, and previews.
  • Your site is commercial — affiliate or ad-supported (which means Hobby is off the table; Pro is required).

Quick verdict

For 99% of indie content sites in 2026, Vercel is a great choice. Reconsider only if you have predictable >1 TB monthly bandwidth or your stack is already on another platform.

Before you start

  • Repo is on GitHub / GitLab / Bitbucket and connected to a Vercel team.
  • You have the production domain ready and DNS access.
  • You know the framework’s build command and output directory.

Step by step

  1. Pick framework + bootstrap the project. Astro for content-first; Next.js if you need React app integration. From scratch:
npm create astro@latest mysite -- --template blog
cd mysite
npm install @astrojs/sitemap
  1. Add a minimal vercel.json to control headers, redirects, and clean URLs:
{
  "cleanUrls": true,
  "trailingSlash": true,
  "redirects": [
    { "source": "/blog/(.*)", "destination": "/articles/$1", "permanent": true }
  ],
  "headers": [
    {
      "source": "/_astro/(.*)",
      "headers": [
        { "key": "Cache-Control", "value": "public, max-age=31536000, immutable" }
      ]
    },
    {
      "source": "/(.*)\\.html",
      "headers": [
        { "key": "Cache-Control", "value": "public, max-age=300, s-maxage=3600" }
      ]
    }
  ]
}
  1. Set the canonical site in astro.config.mjs:
import { defineConfig } from 'astro/config';
import sitemap from '@astrojs/sitemap';
import vercel from '@astrojs/vercel/static';

export default defineConfig({
  site: 'https://yourdomain.com',
  trailingSlash: 'always',
  build: { format: 'directory' },
  output: 'static',
  adapter: vercel(),
  integrations: [sitemap()],
});
  1. Connect repo and deploy:
npm install -g vercel
vercel link
vercel --prod
# Production: https://yourdomain.vercel.app

Then in Vercel dashboard: Project → Domains → Add yourdomain.com. Configure DNS as instructed (usually CNAME www → cname.vercel-dns.com and A @ → 76.76.21.21).

  1. Enable Speed Insights and Web Analytics in the dashboard. Add the client snippet in your root layout:
---
import SpeedInsights from '@vercel/speed-insights/astro';
import Analytics from '@vercel/analytics/astro';
---
<SpeedInsights />
<Analytics />
  1. Use built-in image optimization. Astro:
---
import { Image } from 'astro:assets';
import hero from '../assets/hero.jpg';
---
<Image src={hero} alt="hero" widths={[400, 800, 1200]} formats={['avif', 'webp']} />

Vercel auto-serves AVIF/WebP variants from the edge.

  1. Estimate bandwidth before going wide. Quick check:
# Average HTML + cached-static page weight
curl -sLI https://yourdomain.com/articles/some-slug/ \
  | grep -i content-length

# Total project size:
du -sh dist/
# Multiply (page_weight_KB * monthly_pageviews) / 1024 / 1024 ≈ GB/month

A typical indie blog at 100k monthly PV burns 5-30 GB — comfortably inside even Hobby. A 5 M PV site burns 250 GB-1.5 TB and may need Pro plus careful image management.

  1. Submit the canonical domain to Search Console and confirm canonical tags reference only the production domain, never *.vercel.app:
grep -ROIE 'rel="canonical"|og:url' dist | grep -v yourdomain.com | head
# any output = leak

Implementation checklist

  • vercel.json controls cache, redirects, clean URLs explicitly.
  • astro.config.mjs sets site, trailingSlash, and the Vercel adapter.
  • Speed Insights and Web Analytics snippets are in the root layout.
  • Image pipeline produces AVIF/WebP for hero images.
  • Search Console verified on the production domain; no *.vercel.app leaks.

After-launch verification

  • curl -sI https://yourdomain.com/_astro/index.abc.css | grep cache-control shows immutable.
  • Vercel dashboard → Analytics shows traffic on the production domain, not preview URLs.
  • Search Console → Pages → Indexed count grows over 4-8 weeks.

Common pitfalls

  • Forgetting that Hobby is non-commercial — affiliate links and ads count.
  • Not optimizing images, then panicking when bandwidth jumps.
  • Using Next.js SSR for content that could be static, paying for compute you do not need.
  • Leaving the *.vercel.app URL in canonical or sitemap.
  • Treating preview URLs as production — they are noindex by default but easy to leak via shared docs.
  • cleanUrls: true set on Vercel but framework outputs about/index.html — leads to ambiguous 301s. Match cleanUrls to your framework’s file naming.

FAQ

  • Will my static Astro site need ISR on Vercel?: No. A fully static Astro site is served from the CDN. ISR is for pages that need dynamic data at request time.
  • Does Vercel hurt SEO compared to a “real” host?: No. Vercel’s CDN is fast, Core Web Vitals are typically excellent, and Google does not care which CDN you use.
  • Can I use Vercel’s preview deploys for client review?: Yes. Preview URLs are unique per branch / commit. Use password protection (Pro) for client work.
  • When does Vercel become expensive for content?: Roughly when you exceed 1 TB/month bandwidth on Pro and the per-GB overage starts adding up. Most indie sites are nowhere near.
  • Is Vercel CDN faster than Cloudflare?: Comparable for most users. The differentiator is platform features (preview deploys, image optimization), not raw edge speed.

Tags: #Indie dev #Vercel #Hosting #SEO #Comparison