Vercel cron jobs - syntax, examples & limits
At 04:30, every day.
Next runs · UTC
- —
- —
- —
- —
- —
Calendar
September 2026 · UTC
0 runs
About this tool
vercel.json, deploy, and Vercel invokes the route on the schedule. The cron syntax is standard 5-field Unix cron, and the schedule is always UTC.Configuring Vercel cron in vercel.json
{
"$schema": "https://openapi.vercel.sh/vercel.json",
"crons": [
{
"path": "/api/cron/daily-digest",
"schedule": "0 9 * * *"
},
{
"path": "/api/cron/heartbeat",
"schedule": "*/15 * * * *"
}
]
}The path must point to a Next.js API route or edge function. Vercel POSTs to it on the schedule with the cron secret in the Authorization header.
Verifying the cron invocation in your route
// app/api/cron/daily-digest/route.ts (App Router)
export async function POST(request: Request) {
const auth = request.headers.get('authorization');
if (auth !== `Bearer ${process.env.CRON_SECRET}`) {
return new Response('Unauthorized', { status: 401 });
}
await sendDailyDigest();
return Response.json({ ok: true });
}Without the auth check, any external request could trigger your cron logic. The CRON_SECRET is provisioned by Vercel automatically - you don't have to set it yourself.
Common Vercel cron schedules
0 0 * * *- daily at 00:00 UTC (Hobby plan supported).0 9 * * *- daily at 09:00 UTC.0 9 * * 1-5- weekday morning (Pro plan).*/15 * * * *- every 15 minutes (Pro plan).*/5 * * * *- every 5 minutes (Pro plan).0 0 1 * *- first of every month at midnight.0 0 L * *- Vercel does NOT supportL. Use the multi-cron pattern instead.
Vercel cron pitfalls
- UTC only - convert local times manually.
- Hobby plan caps frequency - at most once-per-day. Upgrade to Pro for tighter cadences.
- Cold starts - the cron route runs as a regular serverless function. Cold-start latency may dominate short jobs.
- 10s default timeout - increase via
maxDurationif your job runs longer. - No L / W / # / ? - Vercel uses standard 5-field Unix cron only.
Examples
- 0 18 * * *Every day at 18:00
- 0 */5 * * *Every 5 hours
- 0 18 * * 1-5Weekdays at 18:00
- 0 0 1 * *Once a month, on the 1st at midnight
Cheatsheet
Full cheatsheet| Field | Req. | Range | Wildcards |
|---|---|---|---|
| minute | yes | 0-59 | , - * / |
| hour | yes | 0-23 | , - * / |
| day of month | yes | 1-31 | , - * / |
| month | yes | 1-12 or JAN-DEC | , - * / |
| day of week | yes | 0-6 or names; some dialects use 0-7 or 1-7 — see Dialects | , - * / |
Frequently asked questions
Syntax
What cron syntax does Vercel use?
Standard 5-field Unix cron syntax: minute hour day-of-month month day-of-week. No seconds, no year, no L / W / ? modifiers. Vercel runs the cron in UTC.
Can a Vercel cron expression include seconds?
No. Vercel accepts five fields beginning with minutes, so its finest cron granularity is one minute on supported plans.
Cron field referenceTiming
What are the Vercel cron job limits?
All plans allow up to 100 cron jobs per project. Hobby schedules run at most once daily with ±59-minute timing precision. Pro and Enterprise schedules can run once per minute with per-minute precision.
Platform limitsWhat Vercel cron runs every day at 09:00 UTC?
Use 0 9 * * *. It runs daily at 09:00 UTC on Pro and Enterprise; Hobby may invoke it at any point from 09:00 through 09:59 because daily schedules have ±59-minute precision. Expression: 0 9 * * *
Can Vercel cron run every 15 minutes?
Use */15 * * * * on a plan that permits sub-daily schedules. Vercel Hobby allows only once-daily frequency. Expression: */15 * * * *
Days and months
What Vercel cron runs on weekdays at 09:00 UTC?
Use 0 9 * * 1-5. Vercel evaluates the schedule in UTC, and the weekday range selects Monday through Friday. Expression: 0 9 * * 1-5
Can Vercel cron use L for the last day of the month?
No. Vercel does not support L; schedule a daily route and let the route exit unless tomorrow is the first day of a month.
What Vercel cron runs on the first day of every month?
Use 0 0 1 * * for midnight UTC on day 1 of each month. Expression: 0 0 1 * *
Timezones and DST
Does Vercel support cron timezones?
No - Vercel cron jobs always run in UTC. Convert your local schedule to UTC manually when writing the cron expression.
Timezone referenceDoes daylight-saving time change a Vercel cron schedule?
No, Vercel continues evaluating in UTC. A local-time equivalent can shift by one hour when the local timezone enters or leaves daylight-saving time.
DST referencePlatforms
Where do I configure Vercel cron jobs?
In vercel.json at the project root, under the crons key. Each entry has path (the API route to invoke) and schedule (the cron expression). On deploy, Vercel registers the schedule with its cron service.
When does a change to vercel.json take effect?
The cron configuration is registered when the project deploys. Commit and deploy the changed vercel.json, then verify the registered schedule in Vercel.
Debugging
How do I secure a Vercel cron route?
Add CRON_SECRET to your project's environment variables. Vercel then sends it as Authorization: Bearer ${CRON_SECRET} on cron requests; verify that header in the route before doing work.
Should a Vercel cron restrict both day fields?
No. Keep either day-of-month or day-of-week unrestricted when defining a Vercel schedule; combining both restrictions is not supported.
Dialect day rulesCrontap
Can Crontap invoke the same Vercel API route?
Yes. Configure the route URL, authentication header, cron expression, and IANA timezone in Crontap when you need an HTTP schedule outside Vercel's plan or UTC constraints.
Schedule API callsWrite the cron here. Run it on Crontap.
Point Crontap at any URL. Pick any cron. Done.
WordPress, Shopify, Railway, Cloud Run, Vercel, HubSpot, Ghost, your own box. If it answers HTTP, Crontap can drive it on a clock you can read, in the timezone that actually matters, and page you when something breaks.
1.9k+ teams · Free forever tier · No credit card