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
- UTC vs local — Actions schedules are UTC. Crontab follows the machine. K8s may set
timeZone. - Minimum intervals — Managed crons often disallow every-minute jobs on free tiers.
- Concurrency — Overlapping runs need locks; Kubernetes has
concurrencyPolicy. - Macros —
@dailyexists 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.