
TL;DR. Vercel's Hobby plan limits each project to 2 cron jobs and caps them at once per day, rejecting any sub-daily schedule at deploy time. Because your API routes are ordinary HTTP endpoints, an external scheduler can call them hourly or every 5 minutes without upgrading to Pro.
Your Vercel deploy failed with "Hobby accounts are limited to daily Cron Jobs," or your cron job runs only once a day when you need it hourly. That's the core Hobby limit: cron jobs on the free plan can run at most once per day, and any schedule that would fire more than once in 24 hours is rejected at deploy time — you also get only 2 cron jobs per project. The limit lives in Vercel's scheduler, not your code, which is exactly why it's straightforward to route around. The next section covers your options; the full plan-by-plan reference sits below it.
Just want to run them more often? See how to bypass the Vercel Hobby cron limit for the step-by-step fix.
Why Vercel Hobby Only Runs Cron Jobs Once a Day
Vercel's cron feature triggers your API routes as serverless functions, and every invocation consumes compute. Restricting Hobby accounts to one run per day per job keeps free-tier infrastructure costs predictable. The part that matters for working around it is where the limit lives: it's a property of Vercel's scheduler, not your API routes. Your /api/daily-digest route is an ordinary HTTP endpoint — it will happily respond to a request at any time, from any source. Vercel's cron is just one caller, and it's the only part that's rate-limited. That single fact is what makes the once-per-day cap routable.
What You Can Do About It
Because your API routes accept HTTP requests from anywhere, the fix is to let something other than Vercel's built-in scheduler do the timing. Three realistic paths, depending on what you need:
- Keep it once a day — if that's genuinely enough. For a nightly digest or cleanup, the built-in Hobby cron is fine as-is. Leave the
cronsblock invercel.jsonand move on. - Upgrade to Pro — if you need the platform features anyway. Pro removes the frequency cap and raises the job count to 40, but at $20/month per member it's only worth it if cron frequency isn't your only reason to upgrade.
- Trigger the route from an external scheduler — to run more often for free. An external scheduler calls your API route on any frequency — hourly, every 5 minutes, any cron expression — while your app stays on Hobby and your code stays unchanged. You keep the
cronsblock as a daily fallback or remove it entirely.
That third path is what Runhooks does: it calls your Vercel route on the schedule you actually need, with retries so a cold start doesn't cost you a run, plus logs and a failure alert on every invocation. We walk through the full setup — including securing the route with a shared secret — in Bypassing the Vercel Hobby Plan Cron Limit and Schedule Next.js API Routes Without Vercel Pro.
The Exact Limits, Error & Plan Comparison (2026 Reference)
Everything below is the full specification — the counts, the once-per-day rule, the exact deploy error, and how the plans compare. The facts are unchanged; they're just no longer the lead.
Vercel Cron Limits at a Glance
| Limit | Hobby (Free) | Pro ($20/mo per member) |
|---|---|---|
| Cron jobs per project | Up to 2 | Up to 40 |
| Frequency | Once per day, max | Any cron expression |
Sub-daily schedules (hourly, */15) |
❌ Deployment fails | ✅ Allowed |
| Timezone control | Limited | Yes |
These are 2026 figures. Vercel adjusts plan limits over time — verify the current numbers in Vercel's official cron documentation before relying on them.
How Many Cron Jobs on Hobby?
The Hobby plan allows up to 2 cron jobs per project. But the count is rarely the thing that blocks people — the once-per-day frequency cap is. You could have both of your allowed jobs configured perfectly and still be unable to deploy simply because one of them is set to run every hour.
You declare cron jobs in vercel.json:
{
"crons": [
{
"path": "/api/daily-digest",
"schedule": "0 8 * * *"
}
]
}
A schedule like 0 8 * * * (once a day at 08:00) is fine on Hobby. The moment a schedule resolves to more than one run per day, the deployment breaks.
The Once-Per-Day Restriction
This is the real Hobby limit. Any cron expression that would fire more than once in 24 hours is rejected:
0 * * * *— every hour → blocked*/15 * * * *— every 15 minutes → blocked0 0 * * *— once a day → allowed0 8 * * 1— weekly → allowed
The restriction is enforced at deploy time, not runtime, so you find out the moment you push — not later.
The Exact Error You'll See
When a Hobby deployment includes a sub-daily schedule, it fails with this message:
"Hobby accounts are limited to daily Cron Jobs. This cron expression (
0 * * * *) would run more than once per day."
If you searched for that sentence, you're in the right place — it means Vercel's built-in scheduler has rejected your frequency, not that anything is wrong with your code.
Hobby vs Pro vs Enterprise
- Hobby (Free): up to 2 cron jobs per project, once-per-day frequency. Great for a daily digest or nightly cleanup; a wall the moment you need hourly.
- Pro ($20/month per member): up to 40 cron jobs per project, any cron expression, timezone support. The official path to sub-daily schedules.
- Enterprise: higher limits and custom terms.
If your only reason to upgrade to Pro is cron frequency, it's worth knowing there's a way to get sub-daily scheduling without changing plans at all — the "What You Can Do About It" section above covers it.
Get Started
The Hobby cron limits are real but easy to route around once you know the trigger lives in Vercel's scheduler, not your code:
- Keep your API routes as standard HTTP endpoints.
- Try Runhooks free and schedule them at any frequency.
- Preview your cron expression with the cron visualizer before you wire it up.
For platform-by-platform context, see the Cloudflare Workers Cron Triggers limits reference — the same pattern applies across serverless providers.
Frequently Asked Questions
How many cron jobs can you have on the Vercel Hobby plan?
Vercel's Hobby (free) plan allows up to 2 cron jobs per project. The bigger restriction is frequency, not count: each cron job may only run once per day. The Pro plan raises this to 40 cron jobs per project with unlimited frequency, and Enterprise goes higher still. Confirm current numbers in Vercel's docs, as plan limits change.
Why does Vercel Hobby only allow cron jobs once per day?
Vercel's cron feature invokes your API routes as serverless functions, and each invocation consumes compute. Capping Hobby accounts at one run per day per job keeps free-tier infrastructure costs predictable. The restriction lives in Vercel's built-in scheduler, not in your API routes — the routes themselves accept requests at any frequency.
What is the exact Vercel Hobby cron error?
When you deploy a Hobby project with a sub-daily schedule, deployment fails with: "Hobby accounts are limited to daily Cron Jobs. This cron expression (0 * * * *) would run more than once per day." It appears whenever a cron expression resolves to more than one run in 24 hours, such as every hour or every 15 minutes.
Can I run Vercel cron jobs more than once a day for free?
Not with Vercel's built-in scheduler on the Hobby plan. But your API routes are ordinary HTTP endpoints that accept requests from any source, so an external scheduler like Runhooks can call them hourly, every 5 minutes, or on any cron expression — without upgrading to Pro and without changing your code.
How many cron jobs does Vercel Pro allow?
Vercel's Pro plan allows up to 40 cron jobs per project and removes the once-per-day frequency restriction, so you can schedule any valid cron expression. Pro costs $20/month per team member. If your only reason to upgrade is cron frequency, an external scheduler achieves the same result without the per-seat cost.
Read next: Bypassing the Vercel Hobby Plan Cron Limit · Schedule Next.js API Routes Without Vercel Pro · Cloudflare Workers Cron Triggers Limits