Cron format
┌───────────── minute (0-59)
│ ┌─────────── hour (0-23)
│ │ ┌───────── day of month (1-31)
│ │ │ ┌─────── month (1-12 or JAN-DEC)
│ │ │ │ ┌───── day of week (0-7 or SUN-SAT; 0 and 7 = Sunday)
│ │ │ │ │
* * * * * command Common cron examples
| Expression | Meaning |
|---|---|
* * * * * | Every minute |
*/5 * * * * | Every 5 minutes |
*/15 * * * * | Every 15 minutes |
0 * * * * | Every hour |
0 */6 * * * | Every 6 hours |
0 0 * * * | Daily at midnight |
30 2 * * * | Daily at 02:30 |
0 9 * * 1-5 | Weekdays at 09:00 |
0 0 * * 0 | Weekly (Sunday) |
0 0 1 * * | Monthly (1st) |
0 0 1 1 * | Yearly (Jan 1) |
0 22 * * 1-5 | At 22:00 on weekdays |
0 0 */2 * * | Every second day of the month at midnight (1st, 3rd, 5th…) |
0 3 * * 6#1 | Not standard cron — “first Saturday” needs Quartz or a date check inside the job |
Kubernetes CronJob and GitHub Actions
Both use the same 5-field syntax. In Kubernetes 1.27+ set spec.timeZone (for example
"Europe/Kyiv") to avoid surprises; GitHub Actions always evaluates schedules in UTC and may delay
runs during high load, so do not rely on exact minutes there.
Frequently asked questions
What do the five cron fields mean?
From left to right: minute (0-59), hour (0-23), day of month (1-31), month (1-12 or JAN-DEC) and day of week (0-7 or SUN-SAT, where both 0 and 7 are Sunday).
Which timezone does cron use?
Classic crontab uses the server’s local timezone. Kubernetes CronJobs use the kube-controller-manager timezone (usually UTC) unless you set spec.timeZone. GitHub Actions schedules are always UTC. Switch the “Next runs” view between local and UTC to check.
Why does “0 0 13 * 5” run on more days than I expected?
When both day-of-month and day-of-week are restricted, standard cron runs when EITHER matches — so this runs on the 13th of every month AND on every Friday, not only on Friday the 13th.
Does this support seconds or L / W / # characters?
No. Those are Quartz/Spring extensions. This tool follows standard 5-field cron as used by crontab, systemd-cron, Kubernetes and most CI systems. Macros like @daily and @hourly are supported.
What is the shortest interval cron supports?
One minute. For sub-minute schedules use a systemd timer, a loop with sleep inside the job, or a scheduler that supports seconds.