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
- 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.
-
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”.
-
Upgrade to Pro. Vercel dashboard → Settings → Billing → Upgrade plan. Add seats only for people who deploy. Reviewers and viewers do not need a seat.
-
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.
-
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"}'
- 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.