Yueser

Cron Expression

Not sure the expression is right? Seeing exactly when it will fire next is the clearest check.

What the five parts mean

minute (0-59) hour (0-23) day (1-31) month (1-12) weekday (0-7; both 0 and 7 are Sunday). Does not support @daily macros like these and second-level fields (that's Quartz's six-field format).

When to use it

  • You inherited someone's crontab or CI schedule and need to confirm when */15 9-18 * * 1-5 actually fires — whether it runs through lunch and whether weekends really stay quiet.
  • After editing an expression, verify the next 8 runs land where you expect, especially around the 31st, February and month ends, which are hard to reason about by eye.

When not to

  • You are writing a Quartz or Spring @Scheduled expression with six fields (seconds first), or an AWS EventBridge six-field expression: field order and timezone rules differ, and this tool requires exactly five.
  • You need the @daily or @reboot macro, L/W/# extensions, or a chosen IANA timezone: none are supported; consult crontab(5) or change the timezone of the system or scheduler.
Limits and privacy

Parsing and projection run locally in your browser using your machine's timezone; the server's setting is unknown. Limits: exactly five fields, supporting digits, *, ranges, lists and /steps — no JAN/MON names, no @daily macros, no L/W/#/? and no seconds; when both day fields are restricted they are ANDed (Vixie cron ORs them); at most 8 runs within a two-year horizon.

Frequently asked

Which timezone does it use?

Your browser's local timezone. The page will not and cannot convert to the server's. Most crontabs run in UTC or the system timezone: VPS images are usually UTC and containers almost always are, so the same 0 9 * * * differs by eight hours between Beijing and a UTC host. Check the target machine with date and timedatectl before shipping. Around a DST change, a skipped local time does not run and a repeated local time can run twice.

Are @daily and @reboot supported? What about Quartz ? and seconds?

None of them. Write @daily as 0 0 * * * and @weekly as 0 0 * * 0; @reboot depends on a boot event that an expression cannot describe. Quartz's ? (unspecified), L (last day), W (nearest weekday), # (nth weekday) and the seconds field belong to a different grammar. This tool parses five fields only, supporting digits, *, ranges, lists and /steps — not names like JAN or MON.

What happens when both day-of-month and day-of-week are restricted?

This tool ANDs them: both must match, so 0 0 1 * 1 means the 1st that is also a Monday, which happens every few years. Standard Vixie cron ORs them: either condition fires the job. This is the easiest difference to get wrong, and it is a common reason a job appears not to run. Restrict only one field and put * in the other; for anything more complex, decide in the scheduler or in code.