Skip to main content

Vercel cron jobs - syntax, examples & limits

At 04:30, every day.

Next runs · UTC

Calendar

September 2026 · UTC

0 runs

About this tool

Vercel cron jobs run scheduled API routes on Vercel's infrastructure. Configure them in 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.
Vercel cron is the lightest-weight option to add a schedule to a Next.js / Remix / SvelteKit deployment without running your own infrastructure. It pairs naturally with Crontap for cases where Vercel's once-per-day Hobby limit isn't enough.

Configuring Vercel cron in vercel.json

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

ts
// 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 support L. 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 maxDuration if 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-5
    Weekdays at 18:00
  • 0 0 1 * *
    Once a month, on the 1st at midnight

Cheatsheet

Full cheatsheet
FieldReq.RangeWildcards
minuteyes0-59, - * /
houryes0-23, - * /
day of monthyes1-31, - * /
monthyes1-12 or JAN-DEC, - * /
day of weekyes0-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.

Vercel dialect reference
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 reference

Timing

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 limits
What 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 * * *

Open in editor
Daily cron guide
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 * * * *

Open in editor
Every 15 minutes guide

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

Open in editor
Weekday cron guide
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.

Portable month-end guide
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 * *

Open in editor
Monthly cron guide

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 reference
Does 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 reference

Platforms

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.

Vercel configuration guide
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.

Vercel setup guide

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.

Route security example
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 rules

Crontap

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 calls

Write 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