{
 "id": "app-hosting",
 "title": "Hosting for a new web app: six options compared",
 "search_title": "Best hosting for a new web app (Oct 2026): Vercel vs Netlify vs Railway vs Render vs Fly.io vs Cloudflare Workers",
 "checked": "2026-10-03",
 "method": "Every fact was read from the vendor's own pricing page or Stripe's provider list on the checked date. Nothing here was benchmarked. No vendor paid for or reviewed this page.",
 "picks": [
  {
   "situation": "Next.js app, personal or pre-revenue",
   "pick": "Vercel",
   "why": "Free Hobby plan with 1M function invocations and 100 GB transfer a month. Vercel describes Hobby as for personal projects; a business needs Pro at $20 a month."
  },
  {
   "situation": "An always-on server or background worker, cheapest steady cost",
   "pick": "Fly.io",
   "why": "The smallest machine is $2.19 a month, billed by the second. The pricing page does not state a free tier."
  },
  {
   "situation": "Backend plus database in one place, you accept paying a little",
   "pick": "Railway",
   "why": "30-day trial with $5 credit and no card, then Hobby at a $5 monthly minimum that includes $5 of usage."
  },
  {
   "situation": "High request volume on a tiny budget, code can run at the edge",
   "pick": "Cloudflare Workers",
   "why": "100,000 requests a day free; $5 a month covers 10 million requests."
  },
  {
   "situation": "A free server for a demo that can be slow to wake",
   "pick": "Render",
   "why": "Free web service with 512 MB RAM, with limitations Render documents separately. Paid web services start at $7 a month."
  },
  {
   "situation": "Static site or simple frontend with forms and functions",
   "pick": "Netlify",
   "why": "Free with 300 credits a month; note the site is paused for the rest of the month if it hits the limit."
  }
 ],
 "options": [
  {
   "id": "vercel",
   "name": "Vercel",
   "kind": "Frontend and serverless hosting, made by the Next.js team",
   "status": "Active service.",
   "price": "Hobby $0: 1M function invocations, 100 GB transfer, 4 CPU-hours a month. Pro $20/month with $20 usage credit.",
   "free_start": "Yes.",
   "idle_behaviour": "Serverless: nothing to pause.",
   "agent_can_start_alone": "Yes after a one-time human step: via Stripe Projects. See agent_setup.",
   "watch_out": "Hobby is described as for personal projects. No long-running servers.",
   "sources": [
    "https://vercel.com/pricing",
    "https://docs.stripe.com/projects"
   ],
   "agent_setup": {
    "command": "stripe projects add vercel/project",
    "then": "stripe projects env --pull",
    "human_needed": "Once. A person must sign in to Stripe and link or create the provider account before the agent session (stripe projects link <provider>); paid tiers also need a payment method added once (stripe projects billing add). After that the agent can provision and pull credentials without a browser.",
    "note": "Service id as listed on projects.dev on 2026-10-03; a provider may offer more services (stripe projects catalog <provider>).",
    "sources": [
     "https://projects.dev/providers",
     "https://docs.stripe.com/projects"
    ]
   },
   "fact_sources": {
    "price": [
     "https://vercel.com/pricing"
    ],
    "free_start": [
     "https://vercel.com/pricing"
    ],
    "idle_behaviour": [
     "https://vercel.com/pricing"
    ],
    "status": [
     "https://vercel.com/pricing"
    ],
    "agent_setup": [
     "https://projects.dev/providers",
     "https://docs.stripe.com/projects"
    ]
   }
  },
  {
   "id": "netlify",
   "name": "Netlify",
   "kind": "Frontend and serverless hosting",
   "status": "Active service.",
   "price": "Free: 300 credits a month. Personal $9/month: 1,000 credits. A production deploy costs 15 credits; bandwidth 20 credits per GB.",
   "free_start": "Yes. The pricing page does not say whether a card is needed.",
   "idle_behaviour": "A site that reaches its monthly limit is paused until the next billing cycle.",
   "agent_can_start_alone": "Yes after a one-time human step: via Stripe Projects. See agent_setup.",
   "watch_out": "On the free plan 300 credits is 20 production deploys with nothing left for traffic.",
   "sources": [
    "https://www.netlify.com/pricing/",
    "https://docs.stripe.com/projects"
   ],
   "agent_setup": {
    "command": "stripe projects add netlify/project",
    "then": "stripe projects env --pull",
    "human_needed": "Once. A person must sign in to Stripe and link or create the provider account before the agent session (stripe projects link <provider>); paid tiers also need a payment method added once (stripe projects billing add). After that the agent can provision and pull credentials without a browser.",
    "note": "Service id as listed on projects.dev on 2026-10-03; a provider may offer more services (stripe projects catalog <provider>).",
    "sources": [
     "https://projects.dev/providers",
     "https://docs.stripe.com/projects"
    ]
   },
   "fact_sources": {
    "price": [
     "https://www.netlify.com/pricing/"
    ],
    "free_start": [
     "https://www.netlify.com/pricing/"
    ],
    "idle_behaviour": [
     "https://www.netlify.com/pricing/"
    ],
    "status": [
     "https://www.netlify.com/pricing/"
    ],
    "agent_setup": [
     "https://projects.dev/providers",
     "https://docs.stripe.com/projects"
    ]
   }
  },
  {
   "id": "railway",
   "name": "Railway",
   "kind": "Container hosting with databases",
   "status": "Active service.",
   "price": "30-day trial with $5 credit, then $1/month. Hobby: $5 monthly minimum including $5 usage. Pro: $20 minimum including $20 usage.",
   "free_start": "Trial only. No card required for the trial.",
   "idle_behaviour": "Not stated on the pricing page.",
   "agent_can_start_alone": "Yes after a one-time human step: via Stripe Projects. See agent_setup.",
   "watch_out": "No permanent free tier.",
   "sources": [
    "https://railway.com/pricing",
    "https://docs.stripe.com/projects"
   ],
   "agent_setup": {
    "command": "stripe projects add railway/hosting",
    "then": "stripe projects env --pull",
    "human_needed": "Once. A person must sign in to Stripe and link or create the provider account before the agent session (stripe projects link <provider>); paid tiers also need a payment method added once (stripe projects billing add). After that the agent can provision and pull credentials without a browser.",
    "note": "Service id as listed on projects.dev on 2026-10-03; a provider may offer more services (stripe projects catalog <provider>).",
    "sources": [
     "https://projects.dev/providers",
     "https://docs.stripe.com/projects"
    ]
   },
   "fact_sources": {
    "price": [
     "https://railway.com/pricing"
    ],
    "free_start": [
     "https://railway.com/pricing"
    ],
    "idle_behaviour": [
     "https://railway.com/pricing"
    ],
    "status": [
     "https://railway.com/pricing"
    ],
    "agent_setup": [
     "https://projects.dev/providers",
     "https://docs.stripe.com/projects"
    ]
   }
  },
  {
   "id": "render",
   "name": "Render",
   "kind": "Container hosting with databases",
   "status": "Active service.",
   "price": "Free web service (512 MB RAM) and free Postgres (256 MB RAM), both with documented limitations. Paid web services from $7/month. Workspace plans: Hobby $0, Pro $25/month.",
   "free_start": "Yes. The pricing page mentions a $1 card check; it does not say whether that applies to free services.",
   "idle_behaviour": "Free services have limitations listed at render.com/docs/free; the pricing page itself does not give the idle period.",
   "agent_can_start_alone": "Yes after a one-time human step: via Stripe Projects. See agent_setup.",
   "watch_out": "Read the free-tier limitations page before relying on a free service or free database.",
   "sources": [
    "https://render.com/pricing",
    "https://render.com/docs/free",
    "https://docs.stripe.com/projects"
   ],
   "agent_setup": {
    "command": "stripe projects add render/static-site",
    "then": "stripe projects env --pull",
    "human_needed": "Once. A person must sign in to Stripe and link or create the provider account before the agent session (stripe projects link <provider>); paid tiers also need a payment method added once (stripe projects billing add). After that the agent can provision and pull credentials without a browser.",
    "note": "Service id as listed on projects.dev on 2026-10-03; a provider may offer more services (stripe projects catalog <provider>).",
    "sources": [
     "https://projects.dev/providers",
     "https://docs.stripe.com/projects"
    ]
   },
   "fact_sources": {
    "price": [
     "https://render.com/pricing"
    ],
    "free_start": [
     "https://render.com/pricing"
    ],
    "idle_behaviour": [
     "https://render.com/pricing"
    ],
    "status": [
     "https://render.com/pricing"
    ],
    "agent_setup": [
     "https://projects.dev/providers",
     "https://docs.stripe.com/projects"
    ]
   }
  },
  {
   "id": "fly",
   "name": "Fly.io",
   "kind": "Runs containers as small virtual machines close to users",
   "status": "Active service.",
   "price": "Smallest machine (shared CPU, 256 MB) $0.0030/hour, $2.19/month. Billed by the second. Storage and outbound traffic extra.",
   "free_start": "The pricing page says 'Start for free' without stating amounts.",
   "idle_behaviour": "You pay only while a machine runs.",
   "agent_can_start_alone": "Yes after a one-time human step: via Stripe Projects. See agent_setup.",
   "watch_out": "More to configure than the others.",
   "sources": [
    "https://fly.io/pricing/",
    "https://docs.stripe.com/projects"
   ],
   "agent_setup": {
    "command": "stripe projects add flyio/app",
    "then": "stripe projects env --pull",
    "human_needed": "Once. A person must sign in to Stripe and link or create the provider account before the agent session (stripe projects link <provider>); paid tiers also need a payment method added once (stripe projects billing add). After that the agent can provision and pull credentials without a browser.",
    "note": "Service id as listed on projects.dev on 2026-10-03; a provider may offer more services (stripe projects catalog <provider>).",
    "sources": [
     "https://projects.dev/providers",
     "https://docs.stripe.com/projects"
    ]
   },
   "fact_sources": {
    "price": [
     "https://fly.io/pricing/"
    ],
    "free_start": [
     "https://fly.io/pricing/"
    ],
    "idle_behaviour": [
     "https://fly.io/pricing/"
    ],
    "status": [
     "https://fly.io/pricing/"
    ],
    "agent_setup": [
     "https://projects.dev/providers",
     "https://docs.stripe.com/projects"
    ]
   }
  },
  {
   "id": "cloudflare-workers",
   "name": "Cloudflare Workers",
   "kind": "Edge functions",
   "status": "Active service.",
   "price": "Free: 100,000 requests a day, 10 ms CPU per request. Paid: $5/month minimum, 10 million requests included, then $0.30 per million.",
   "free_start": "Yes.",
   "idle_behaviour": "Serverless: nothing to pause.",
   "agent_can_start_alone": "Yes after a one-time human step: via Stripe Projects. See agent_setup.",
   "watch_out": "Not a normal server: 10 ms CPU limit on free, and some Node libraries do not run.",
   "sources": [
    "https://developers.cloudflare.com/workers/platform/pricing/",
    "https://docs.stripe.com/projects"
   ],
   "agent_setup": {
    "command": "stripe projects add cloudflare/worker",
    "then": "stripe projects env --pull",
    "human_needed": "Once. A person must sign in to Stripe and link or create the provider account before the agent session (stripe projects link <provider>); paid tiers also need a payment method added once (stripe projects billing add). After that the agent can provision and pull credentials without a browser.",
    "note": "Service id as listed on projects.dev on 2026-10-03; a provider may offer more services (stripe projects catalog <provider>).",
    "sources": [
     "https://projects.dev/providers",
     "https://docs.stripe.com/projects"
    ]
   },
   "fact_sources": {
    "price": [
     "https://developers.cloudflare.com/workers/platform/pricing/"
    ],
    "free_start": [
     "https://developers.cloudflare.com/workers/platform/pricing/"
    ],
    "idle_behaviour": [
     "https://developers.cloudflare.com/workers/platform/pricing/"
    ],
    "status": [
     "https://developers.cloudflare.com/workers/platform/pricing/"
    ],
    "agent_setup": [
     "https://projects.dev/providers",
     "https://docs.stripe.com/projects"
    ]
   }
  }
 ],
 "not_checked": [
  "Speed or reliability of any option",
  "Render's exact free-tier idle and expiry rules",
  "Whether Vercel, Fly.io or Cloudflare need a card to start",
  "Region availability"
 ],
 "changelog": [
  {
   "date": "2026-10-03",
   "change": "First version."
  },
  {
   "date": "2026-10-03",
   "change": "Added agent_setup (exact command and whether a human is needed) and a source for every fact."
  }
 ],
 "how_to_read": "Each option has fact_sources: the page each fact was read from. Verify the deciding fact there. 'picks' are our reading of the facts for common situations, not a ranking; the facts stand without them.",
 "publisher": {
  "name": "Stackfacts",
  "about": "https://stackfacts.dev/about",
  "location": "Austin, Texas",
  "funding": "No vendor payments, no affiliate commissions.",
  "policy": "Placement cannot be bought. Every number states how it was counted.",
  "corrections": "corrections@stackfacts.dev"
 },
 "source_url": "https://stackfacts.dev/app-hosting"
}