Cron next run times by dialect
The same five fields mean different things on different platforms. Pick the platform, paste the schedule, and see the next runs plus what that platform would reject.
tool 13 of 21 []
all shortcuts ?
How to use it
- Choose the platform that will run the schedule: Unix cron, a Kubernetes CronJob, a GitHub Actions workflow or an AWS EventBridge rule.
- Paste the expression. For EventBridge you can include or leave out the cron( ) wrapper. The status line says what that platform would reject and why.
- Read the next five run times. GitHub Actions and EventBridge are shown in UTC only. For Unix and Kubernetes you can switch to your own time zone.
- Use the conversion box to see a Unix-style schedule written as an EventBridge cron, including the day-of-week shift and the required ? field.
What actually differs between the four
All four look like cron, and the first five fields (minute, hour, day of month, month, day of week) line up. The differences are in the details that make a schedule silently run at the wrong time.
EventBridge is the odd one out: it has a sixth field (year), requires a ? in either day-of-month or day-of-week, and numbers the days of the week from 1 (Sunday) to 7 (Saturday). Copying a Unix expression into EventBridge without those changes fails, or worse, shifts a weekly job by one day.
GitHub Actions rejects the @daily family of shortcuts and will not run a schedule more often than every 5 minutes. Kubernetes accepts the shortcuts and treats ? as an asterisk, and since Kubernetes 1.27 a CronJob can set .spec.timeZone instead of inheriting the controller time zone.
Day of month and day of week together
In Unix cron, if both day-of-month and day-of-week are restricted, the job runs when either one matches. 0 0 13 * 5 runs on every 13th and on every Friday. Kubernetes uses the robfig/cron library, which applies the same rule: a field starting with * or ? counts as unrestricted, and then both fields must match.
EventBridge refuses the combination outright: one of the two fields must be ?. If you need "the 13th, but only when it is a Friday", EventBridge cannot express it in one rule. The conversion box tells you when a Unix schedule falls into that gap.
For GitHub Actions the documentation says the syntax is POSIX cron but does not spell out this rule, so this tool applies the usual either-matches behavior. Test a schedule that depends on it before you rely on it.
Dialect differences at a glance
| Item | Unix cron (crontab) | Kubernetes CronJob | GitHub Actions | AWS EventBridge |
|---|---|---|---|---|
| Fields | 5 | 5 | 5 | 6 (adds year, 1970 to 2199) |
| Day of week | 0 to 7, 0 and 7 are Sunday, or SUN to SAT | 0 to 6 (Sunday to Saturday) or sun to sat | 0 to 6 or SUN to SAT | 1 to 7 or SUN to SAT, 1 is Sunday |
| @daily style shortcuts | Yes | Yes (@yearly, @monthly, @weekly, @daily, @hourly) | No, documented as unsupported | No |
| ? character | No | Yes, same as * | Not listed | Required in day-of-month or day-of-week |
| L, W, # characters | No | No | No | Yes (L, W in day-of-month; L, # in day-of-week) |
| Default time zone | Server local time | kube-controller-manager local time, or .spec.timeZone | UTC, or an optional timezone key | UTC for rules; Scheduler lets you pick a zone |
| Shortest interval | One minute | One minute | Once every 5 minutes | Faster than 1 minute is not supported |
| Day-of-month plus day-of-week | Either may match | Either may match (robfig/cron) | POSIX, not spelled out | Not allowed: one must be ? |
Each cell was checked against the page linked in Sources on the date shown there. Pages change; follow the links before you depend on an edge case.
Examples
Select an example to load it into the tool.
- Weekdays 09:30 (Unix)
30 9 * * 1-5 - Every 5 minutes
*/5 * * * * - EventBridge, weekdays 18:00
cron(0 18 ? * MON-FRI *) - EventBridge, last Friday
cron(15 10 ? * 6L *) - Day 13 or Friday (Unix rule)
0 0 13 * 5
Frequently asked questions
Why does my Unix cron fail in EventBridge?
EventBridge needs six fields (the sixth is the year), a ? in either day-of-month or day-of-week, and day-of-week numbers 1 to 7 with 1 as Sunday. 30 9 * * 1-5 becomes cron(30 9 ? * 2-6 *). The conversion box does this for you.
Does GitHub Actions use my local time zone?
By default scheduled workflows run in UTC. The GitHub documentation also describes an optional timezone setting that takes an IANA name. This tool shows GitHub schedules in UTC.
Why did my GitHub Actions schedule not fire at exactly :00?
GitHub says scheduled runs can be delayed during periods of high load, and that high load times include the start of every hour. Picking an off-peak minute such as 17 reduces the chance of delay or a dropped run.
Can a Kubernetes CronJob use a time zone?
Yes, since Kubernetes v1.27 (stable) set .spec.timeZone to an IANA name such as Etc/UTC. Putting CRON_TZ or TZ inside the schedule string is rejected with a validation error. Without timeZone the schedule follows the kube-controller-manager time zone.
Is anything sent to a server?
No. The parsing and the run-time search happen in this tab. The test suite fails the build if this tool contains a network call.
Sources
- crontab(5), cronie man page checked 2026-10-21
- Kubernetes: CronJob schedule syntax and time zones checked 2026-10-21
- Kubernetes source: cron library import (pkg/controller/cronjob/utils.go) checked 2026-10-21
- GitHub Docs: events that trigger workflows, schedule checked 2026-10-21
- AWS: EventBridge scheduled rules (legacy) cron expressions checked 2026-10-21
- AWS: EventBridge Scheduler schedule types and time zones checked 2026-10-21