Cron Syntax by Platform
Every major platform that uses cron expressions, compared side-by-side. Click any platform for a dedicated builder and guide.
Platform Comparison
| Platform | Format | Fields | Timezone | Key differences | Builder |
|---|---|---|---|---|---|
| Unix / Linux | min hr dom mon dow | 5 | System (configurable) | @-aliases + @reboot; timezone via system config or TZ= prefix | Build → |
| Kubernetes CronJob | min hr dom mon dow | 5 | Controller TZ (spec.timeZone in K8s 1.27+) | @-aliases (no @reboot); concurrencyPolicy; spec.timeZone in K8s 1.27+ | Build → |
| GitHub Actions | min hr dom mon dow | 5 | UTC only | 5-min minimum interval; no @-aliases; scheduled workflows disabled after 60 days inactivity (public repos only) | Build → |
| AWS EventBridge | min hr dom mon dow yr | 6 | UTC only | Year field required; dom or dow must be ?; dow is 1=Sun (not 0=Sun) | Build → |
| Azure Functions (NCRONTAB) | sec min hr dom mon dow | 6 | UTC (WEBSITE_TIME_ZONE override) | Seconds field first — enables sub-minute scheduling; no ? wildcard | Build → |
| GitLab CI | min hr dom mon dow | 5 | Configurable per schedule (in UI) | Schedules created in GitLab UI only — not in .gitlab-ci.yml; timezone per schedule | Build → |
| Google Cloud Scheduler | min hr dom mon dow | 5 | Set via --time-zone flag | Timezone is a separate --time-zone parameter — not part of the expression | Build → |
| CircleCI | min hr dom mon dow | 5 | UTC only | New schedules: top-level block (old workflows.triggers.schedule deprecated) | Build → |
| Jenkins | min hr dom mon dow + H | 5 | Server local time (TZ= prefix to override) | H hash modifier for deterministic load spreading; @-aliases supported | Build → |
* Heroku Scheduler is not cron-based — it only supports 3 fixed intervals (10 min / hourly / daily) with no expression syntax.
Quick Decision Guide
Standard 5-field. Use CRON_TZ= or TZ= prefix for per-entry timezone control.
5-field. Set spec.timeZone on K8s 1.27+. Use concurrencyPolicy: Forbid to prevent job pile-ups.
5-field, UTC only. Minimum 5-min interval. Schedule at off-peak times (e.g. 47 3 * * *) to reduce queue delays.
6-field with year. Exactly one of dom/dow must be ?. Day-of-week is 1=Sun (not 0=Sun). Use rate() for simple intervals.
6-field, seconds first — enables sub-minute triggers. Use * instead of ?. Set WEBSITE_TIME_ZONE app setting for timezone.
Standard 5-field. Schedules are created in the GitLab UI — not in YAML. Timezone is configurable per schedule.
Standard 5-field. Set timezone via --time-zone flag in gcloud CLI — it is not part of the cron expression.
Standard 5-field, UTC only. Use the new schedules: top-level block — old workflows.triggers.schedule is deprecated.
Standard 5-field + H hash modifier for load spreading. Defaults to server local time — add TZ= prefix to override.