Vercel Hobby Cron Job Limits Explained

A note from the founder. Stuck on Vercel's once-per-day cron limit? I'm looking for a small group of early users to try Runhooks and share honest feedback. Early adopters get upgraded plans for free.

If you're trying to figure out exactly what Vercel's Hobby plan allows for cron jobs — how many you get, and why yours won't run more than once a day — this is the reference. The short answer: Hobby gives you a small number of cron jobs, each capped at one run per day. Here are the specifics, the exact error you'll hit, and how the plans compare.

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 → blocked
  • 0 0 * * * — once a day → allowed
  • 0 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.

Why the Limit Exists

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. Crucially, the limit is 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.

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.

Running Jobs More Often Without Upgrading

Because your API routes accept HTTP requests from anywhere, an external scheduler can call them on any frequency — hourly, every 5 minutes, any cron expression — while your app stays on Hobby and your code stays unchanged. You remove the crons block (or keep it as a daily fallback) and let something outside Vercel do the timing.

This is the practical workaround, and we walk through it end to end — 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.

How Runhooks Fits In

Runhooks is a scheduled HTTP service that calls your Vercel routes on the frequency you actually need:

  1. Create a job pointed at https://your-app.vercel.app/api/sync.
  2. Set any schedule0 * * * *, */5 * * * *, or any cron expression, with no once-per-day cap.
  3. Enable retries so a serverless cold start doesn't cost you a run.
  4. Get logs and alerts — every invocation recorded, with a notification on failure.

No Pro upgrade, no vercel.json cron block, no code changes. Vercel keeps running your route; Runhooks decides when.

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:

  1. Keep your API routes as standard HTTP endpoints.
  2. Try Runhooks free and schedule them at any frequency.
  3. 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