Vercel Hobby vs Pro: when to upgrade

Vercel Hobby is free non-commercial; Pro is $20/seat/mo. Use this limits table, project audit script, and budget config to decide.

Vercel’s pricing question is not “is Hobby enough storage” — it is “am I allowed to use Hobby at all”. The Hobby plan is explicitly non-commercial. Crossing into commercial use without upgrading is the most common upgrade trigger, ahead of any technical limit. Below is the limits table, a project-audit script, and the budget alert config.

Background

Hobby is free, generous on bandwidth and build minutes, but restricted to personal / non-commercial projects. Pro starts at $20/seat/month with team features, longer function durations, password protection, and higher limits. Vercel enforces the commercial-use rule less aggressively than they advertise, but it is still policy, and it can cost you the project if they decide to enforce.

Limits snapshot (2026)

Capability                Hobby            Pro
─────────────────────────────────────────────────────────────
Commercial use            NO               Yes
Bandwidth (included)      100 GB           1 TB
Function duration         60s              15 min
Build minutes/month       6000             24000
Concurrent builds         1                12
Team members              1                Unlimited (per seat)
Preview password          —                Yes
Analytics                 Basic            Full + Speed Insights
Custom domain             Yes              Yes
Cost                      Free             $20/seat/month + usage

How to tell

  • You are making money — even ads or affiliate links — from a Hobby project.
  • A teammate needs access to deploy or set env vars.
  • You hit function 60-second timeouts (Hobby) and need 15 minutes (Pro).
  • You need password-protected preview deployments for client work.
  • Build queue waits are slowing your iteration loop.

Quick verdict

Upgrade to Pro the moment your project earns revenue OR you add a teammate OR you hit a technical limit. For pure personal side-projects with no revenue, Hobby is fine indefinitely.

Before you start

  • Audit existing projects honestly — which are commercial?
  • Have a budget upper bound — Pro has usage-based overages.
  • Know which projects truly need Pro (some can stay on Hobby as personal placeholders).

Step by step

  1. Audit projects. List every Vercel project with one column: “is this commercial?”:
vercel projects ls --token "$VERCEL_TOKEN"
# pipe through and annotate manually

Tag each as commercial (ads, affiliate, paid product, client work) or personal.

  1. For each commercial project, decide: move to a personal-use placeholder or upgrade. Block-and-tackle: do not let a commercial project remain on Hobby for “later”.

  2. Upgrade to Pro. Vercel dashboard → Settings → Billing → Upgrade plan. Add seats only for people who deploy. Reviewers and viewers do not need a seat.

  3. Move commercial projects under a Team scope. Settings → Transfer project. This is critical — Hobby restrictions apply at the scope level. A personal-scope project is still bound by Hobby even if you have a Pro Team.

  4. Set spending alerts for the Pro plan. UI: Team → Settings → Billing → Usage alerts:

Alert at 50% of expected monthly usage    → email + Slack
Alert at 90% of expected monthly usage    → email + Slack
Hard cap at 110%                          → email + investigate immediately

Or via the API:

curl -X POST "https://api.vercel.com/v1/teams/$TEAM/billing/alerts" \
  -H "Authorization: Bearer $VERCEL_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"threshold": 50, "type": "soft"}'

curl -X POST "https://api.vercel.com/v1/teams/$TEAM/billing/alerts" \
  -H "Authorization: Bearer $VERCEL_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"threshold": 90, "type": "soft"}'
  1. Right-size seats periodically. A monthly script that lists active deployers:
vercel teams members ls --team "$TEAM" --token "$VERCEL_TOKEN" --format json \
  | jq -r '.[] | select(.lastActiveAt != null) | [.email, .role, .lastActiveAt] | @tsv'
# remove members who have not deployed in 60 days

Implementation checklist

  • Every commercial project is on a Pro-scoped Team, not a personal scope.
  • Seats match deployers, not viewers.
  • Budget alerts at 50%, 90%, and 110%.
  • Personal placeholders left on Hobby (no revenue, no team).
  • Monthly seat review done.

After-launch verification

  • Vercel dashboard shows the project under the Team scope.
  • Function logs show no 60-second timeout errors on long-running routes.
  • Bandwidth usage tracked against the 1 TB included before overage kicks in.

Common pitfalls

  • Running ads on a Hobby project and assuming “they won’t notice” — they sometimes do, with little warning.
  • Upgrading because you ran out of bandwidth, when the actual bottleneck was unoptimized images.
  • Buying seats for every contributor when only the deployers need one.
  • Forgetting to move existing projects to the Team scope after upgrading. The plan attaches to the scope, not the user.
  • Skipping budget alerts and getting surprised by overage. Pro’s bandwidth overage is roughly $0.15/GB.

FAQ

  • What counts as “commercial use” on Hobby?: Anything that generates revenue (ads, affiliate, payments, lead-gen) or that you operate on behalf of an organization. A personal blog with no ads is fine.
  • Does Pro have a free trial?: There is no free trial of Pro itself, but Hobby is free so you can validate the platform first.
  • Can I downgrade?: Yes, mid-month. Pro features stop at period end and projects revert to Hobby limits.
  • What if I exceed Pro limits?: Pro is usage-based for bandwidth and function minutes above included amounts. Set a spending cap to avoid surprises.
  • Do I pay per project or per seat?: Per seat. One Pro seat covers all the projects in that Team scope.

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