Cron Expression Translator

See what a cron expression means and when it runs next, in any time zone.

Runs in your browser. Your input is not sent anywhere.

For example */15 * * * * or 0 0 9 ? * MON-FRI. Names such as MON and JAN are accepted.

Examples select Unix crontab (5 fields) and keep your time zone.

Off by default. When on, the fields of this tool are kept in the local storage of this browser, unencrypted, until you turn it off.

No expression yet

Your result will appear here.

Keyboard shortcuts

Ctrl + Enter, ⌘ + Enter
Run the tool with the current input
Alt + Shift + C
Copy the result
Alt + Shift + X
Clear all fields

Shortcuts work while the focus is inside the tool. Every action is also available as a button.

How to use it

  1. Type or paste the expression, for example */15 * * * * or cron(0 18 ? * MON-FRI *).
  2. Choose the dialect of the scheduler that will run it. The same text can mean different things in different schedulers.
  3. Choose the time zone the scheduler uses. Unix cron uses the zone of the server or of CRON_TZ; EventBridge rules use UTC.
  4. Read the sentence, the next ten run times and the table of fields. An invalid expression is marked at the exact characters.

Worked example: two dialects, two meanings

The Unix expression 0 0 1,15 * 5 restricts both day fields. Classic cron then runs the job when either matches, so it runs at midnight on the 1st and the 15th and on every Friday; in October 2026 that is October 1, 2, 9, 15, 16, 23 and 30. The tool says so under the description.

In Quartz the same idea needs a question mark in one of the day fields, and the day of week counts from 1 for Sunday. The expression 0 15 10 ? * 6L means 10:15:00 on the last Friday of every month:

Next runs of 0 15 10 ? * 6L (Quartz, UTC), from October 1, 2026
Fri 2026-10-30 10:15:00+00:00
Fri 2026-11-27 10:15:00+00:00
Fri 2026-12-25 10:15:00+00:00

October 31, 2026 is a Saturday, so the last Friday of October is the 30th.

Common expressions (Unix crontab)

Frequently used five-field expressions
ExpressionRuns
* * * * *Every minute
*/5 * * * *Every 5 minutes: 00, 05, 10 … 55
*/15 * * * *Every 15 minutes
0 * * * *At the start of every hour
0 */2 * * *Every 2 hours, at minute 0
0 0 * * *Every day at midnight (same as @daily)
30 8 * * 1-5At 08:30 Monday to Friday
0 9 * * 1Every Monday at 09:00
0 0 1 * *At midnight on the first day of every month
0 0 1 1 *At midnight on January 1 (same as @yearly)

Steps count from the start of the field, not from when the job was installed: */7 in the minute field runs at 0, 7, 14 … 56 and then again at 0, so the last gap of each hour is 4 minutes.

Dialects and their rules

Differences between the four dialects
Unix crontabSpring (6 fields)QuartzAWS EventBridge
Fieldsminute hour day month weekdaysecond first, then the Unix fivesecond … weekday, optional yearminute … weekday, then year
Day of week0-7, 0 and 7 are Sunday0-7, 0 and 7 are Sunday1-7, 1 is Sunday1-7, 1 is Sunday
Both day fields setEither may match (OR)Both must matchNot allowed: one must be ?Not allowed: one must be ?
L, W, #NoYesYesYes
YearsNo fieldNo field1970-20991970-2199
Shortcuts@hourly, @daily, @weekly, @monthly, @yearlyThe sameNoneNone

L in the day-of-month field is the last day of the month, L-3 three days before the last day (the 28th in a 31-day month), 15W the weekday nearest the 15th without leaving the month, and LW the last weekday. In the day-of-week field, with Quartz and EventBridge numbering, 6L is the last Friday and 2#1 the first Monday; in Spring, which counts from 0 for Sunday, they are the last Saturday and the first Tuesday. L alone means Saturday in Quartz and EventBridge. EventBridge documents L but not L-3, so the tool refuses L-3 there.

Unix cron accepts a step only after * or a range, so 5/10 is an error there; Quartz and Spring read it as “every 10 starting at 5”. In Quartz a range may wrap around, such as 20-2 for the hours from 20:00 to 02:59; the EventBridge documentation uses the same 20-2 in an example.

Time zones and clock changes

Run times are calculated on the local clock of the chosen zone with the time zone data of your browser. When clocks go forward, a time such as 02:30 does not exist that night; when they go back, 01:30 occurs twice.

The tool follows the rule that Amazon EventBridge Scheduler documents: a run at a time that does not exist is skipped and listed as skipped, and a time that occurs twice runs once, at its first occurrence. This is a convention, and schedulers differ: cronie runs fixed-time jobs from a skipped hour immediately after the change and runs jobs that repeat more often than hourly normally, and the Quartz documentation only warns that such times can be skipped or repeated. Avoid the hours around 02:00 local time for daily jobs, or schedule in UTC.

Common mistakes

  • Pasting a Quartz or Spring expression into crontab: the first field is then read as minutes and the whole schedule shifts.
  • Numbering weekdays the Unix way in Quartz or EventBridge, where 1 is Sunday and 2 is Monday.
  • Setting both day fields in Unix cron and expecting both to apply. 0 0 13 * 5 runs on every 13th and every Friday, not only on Friday the 13th.
  • Forgetting that EventBridge rules run in UTC, or that a server’s cron uses the server’s time zone rather than yours.
  • Expecting */90 in the minute field to mean every 90 minutes; a step never crosses its field.

Sources

Frequently asked questions

How do I run a cron job every 5 minutes?
Use */5 * * * * in crontab. It runs at minute 0, 5, 10 and so on of every hour. In Quartz and Spring add the seconds field in front: 0 */5 * * * ? or 0 */5 * * * *. In EventBridge use cron(0/5 * * * ? *) or the rate expression rate(5 minutes).
What does the question mark mean in a cron expression?
In Quartz, Spring and EventBridge, ? means “no specific value” and is allowed only in the day-of-month and day-of-week fields. Quartz and EventBridge require it in exactly one of them, because they cannot combine a day of month with a day of week.
Why does my crontab job run on more days than expected?
If both the day-of-month and the day-of-week field are restricted, classic cron runs the job when either matches. To run only on Friday the 13th, schedule it on the 13th and test the weekday in the command, for example with [ "$(date +\%u)" = 5 ]; the backslash is needed because % is special in a crontab line.
Which time zone does cron use?
Unix cron uses the time zone of the server, or the one set with CRON_TZ in cronie. EventBridge rules always use UTC; EventBridge Scheduler lets you choose a zone. Choose the same zone here to see the real run times.
Is my expression sent anywhere?
No. The expression is parsed and the run times are calculated in your browser; nothing is sent. If this page shows ads, the ad script runs in the same page, but the tool never passes your input to it.

Last updated: October 5, 2026