Cron: Crontab vs GitHub Actions, Vercel, and Kubernetes

Published July 17, 2026By Samson PG

The same “cron” string can mean different things on Linux, Actions, Vercel, and K8s. Know the dialect before you deploy.

A cron expression is not one universal language. Classic crontab, GitHub Actions, Vercel Cron, and Kubernetes CronJobs share the “minute hour dom month dow” vibe but differ on fields, time zones, and limits. Always confirm the platform docs — then preview next runs before merge.

Dialect cheat sheet

Platform Typical fields Notes
Linux crontab 5 Host TZ unless set
GitHub Actions 5 UTC only
Vercel Cron 5 Account/plan limits; UTC
Kubernetes CronJob 5 (optional TZ) timeZone on newer APIs

Some tools add seconds (6 fields) or years. Pasting a Quartz six-field string into five-field Actions will fail or mis-schedule.

Practical differences

  1. UTC vs local — Actions schedules are UTC. Crontab follows the machine. K8s may set timeZone.
  2. Minimum intervals — Managed crons often disallow every-minute jobs on free tiers.
  3. Concurrency — Overlapping runs need locks; Kubernetes has concurrencyPolicy.
  4. Macros@daily exists in some crontabs, not everywhere.

Preview before you ship

Use TryDevSnip Cron Helper to translate expressions and inspect upcoming fire times. Pair with earlier guides: every 5 minutes, hourly and midnight, UTC vs local next runs.

Privacy one-liner: expressions are parsed locally; not uploaded to our servers for processing.

FAQ

Can I reuse one expression across all platforms?

Only if fields and TZ semantics match. Prefer documenting “Actions UTC” vs “server local” explicitly.

Why did GitHub Actions skip a run?

UTC misread, workflow disabled, or repo inactivity rules on scheduled workflows for forks.

Does Vercel support seconds?

No — stick to five-field schedules supported by your plan.

How do I run weekdays at 9am local?

Convert 9am local to UTC for Actions, or set TZ/timeZone where supported. See weekdays at 9am.

← More from the blog