Vercel
Generate vercel.json crons array entries with awareness of Hobby plan once-per-day restrictions and Vercel cron syntax limits.
Last verified: 2026-05-15
Cron lives in vercel.json
Vercel cron jobs are declared in the project's vercel.json:
{
"crons": [
{ "path": "/api/cron", "schedule": "0 9 * * 1-5" }
]
}Each entry maps a cron schedule to a route on your deployed app. When the cron fires, Vercel sends an authenticated GET request to that path. The handler at /api/cron does the work.
No alphabetic aliases
Vercel's parser does not accept MON, SUN, JAN, DEC, etc. Use numeric values: 1-7 for day-of-week and 1-12 for month. cronpreview's Vercel dialect rejects alphabetic forms at validation time.
Hobby plan: at most one run per day
On the Hobby tier, Vercel limits cron schedules to a maximum of one fire per day, total. 0 9 * * 1-5 (which fires Mon-Fri, five times a week) is rejected. Acceptable Hobby schedules: 0 9 * * 1 (Monday only), 0 9 1 * * (1st of the month), 0 9 * * * (daily, single run).
The Pro plan removes this restriction and supports unlimited cron jobs with arbitrary intra-day frequency.
Authentication
Vercel signs cron invocations with a header containing a project-specific secret. Always verify the CRON_SECRET environment variable in your route handler before doing work, otherwise the endpoint is publicly callable.
Found something inaccurate? Email hello@cronpreview.com.