plain/devtools home

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 ?

cron-dialectssampless sample
Next runs in

never leaves your browser

How to use it

  1. Choose the platform that will run the schedule: Unix cron, a Kubernetes CronJob, a GitHub Actions workflow or an AWS EventBridge rule.
  2. 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.
  3. 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.
  4. 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

ItemUnix cron (crontab)Kubernetes CronJobGitHub ActionsAWS EventBridge
Fields5556 (adds year, 1970 to 2199)
Day of week0 to 7, 0 and 7 are Sunday, or SUN to SAT0 to 6 (Sunday to Saturday) or sun to sat0 to 6 or SUN to SAT1 to 7 or SUN to SAT, 1 is Sunday
@daily style shortcutsYesYes (@yearly, @monthly, @weekly, @daily, @hourly)No, documented as unsupportedNo
? characterNoYes, same as *Not listedRequired in day-of-month or day-of-week
L, W, # charactersNoNoNoYes (L, W in day-of-month; L, # in day-of-week)
Default time zoneServer local timekube-controller-manager local time, or .spec.timeZoneUTC, or an optional timezone keyUTC for rules; Scheduler lets you pick a zone
Shortest intervalOne minuteOne minuteOnce every 5 minutesFaster than 1 minute is not supported
Day-of-month plus day-of-weekEither may matchEither may match (robfig/cron)POSIX, not spelled outNot 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:00cron(0 18 ? * MON-FRI *)
  • EventBridge, last Fridaycron(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

Related tools

esc
↑↓ move↵ open? all shortcuts

Keyboard shortcuts

Cmd or Ctrl shortcuts always work.
Everywhere
Everywhere
Open the command palette
CtrlK
Open the palette (outside a text field)
/
Show these shortcuts
?
Toggle light and dark theme
t
Go home
gh
Go to all tools
gt
On a tool page
On a tool page
Run the main action
Ctrl↵
Copy the output
c
Load the next sample
s
Focus the input
i
Leave a text field
Esc
Previous or next tool
[]
In the palette
In the palette
Move the selection
↑↓
Open the selected item
↵
Close
Esc