CronTool
Cron expression editor & debugger

Vercel cron jobs — syntax, examples & limits

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.

Examples

  • 018***
    Every day at 18:00
  • 0*/5***
    Every 5 hours
  • 018**1-5
    Weekdays at 18:00
  • 001**
    Once a month

Cheatsheet

FieldRequiredValues RangeWildcardsminuteYes0-59, - * / hourYes0-59, - * / day of monthYes1-31, - * / L W monthYes1-12, - * /day of weekYes0-7, - * / L

Calendar

View future cron matches in a calendar

April 2026

Showing next 1000 cron schedules

Loading...

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 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.

Frequently asked questions

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.

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.

What are the Vercel cron job limits?

Hobby (free) plan: at most 2 cron jobs, minimum once-per-day frequency. Pro plan: unlimited jobs, every minute frequency. Enterprise: dedicated capacity. Vercel meters cron invocations as part of the function-execution quota.

How do I secure a Vercel cron route?

Vercel sends a cron invocation with an `Authorization: Bearer ${CRON_SECRET}` header (the secret is auto-set in your project's env vars). Verify it in the route handler before doing real work — otherwise anyone hitting the URL can trigger your cron logic.

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.

Ready to schedule it?

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.

Free forever tier ・ No credit card required

Your next schedule
GET/wp-cron.php?doing_wp_cron=1

Schedule

every 5 minutes

Next run

in 23s

Apihustle Logo

This tool is part of the Apihustle suite - a collection of tools to test, improve and get to know your API inside and out.

  • Clobbr logo

    Clobbr

    The app & CLI tool to test API endpoint speed.

    Visit
  • Crontap logo

    Crontap

    Schedule recurring API calls using cron syntax.

    Visit
  • CronTool logo

    CronTool

    Debug multiple cron expressions on a calendar.

    Visit

  • Page AI

    AI Website Generator that designs and writes clean code.

    Visit
  • Shipixen

    Generate customized boilerplates in minutes.

    Visit
  • Page UI

    Landing page UI components for React & Next.js

    Visit