Back to Utilities

Cron Helper

Describe cron expressions in plain English and preview the next execution times.

Advertisement
Loading...

What this tool does

Cron is a time-based job scheduler used in Unix-like operating systems to run commands automatically at specified intervals. A cron expression is a string of five (or six, with seconds) fields representing minute, hour, day of month, month, and day of week. This tool parses cron expressions, explains them in plain English, and previews the next several execution times so you can verify the schedule before deploying.

The parser supports standard cron syntax including ranges (1-5), steps (*/15), lists (1,3,5), and special characters (@yearly, @monthly, @weekly, @daily, @hourly, @reboot). It also handles day-of-week and day-of-month interactions correctly, where specifying both restricts the match to days that satisfy both fields.

Usage Example

# Every 5 minutes
*/5 * * * *
# At 2:30 AM every day
30 2 * * *
# Weekdays at 9 AM
0 9 * * 1-5
# First day of every month at midnight
0 0 1 * *
# Every Sunday at 3:30 PM
30 15 * * 0

Common Edge Cases

  • When both day-of-month and day-of-week are specified (not *), the job runs when EITHER field matches, not when both match. This is a common source of confusion.
  • The day-of-week field uses 0-7 where both 0 and 7 mean Sunday. Check your cron implementation for the exact range.
  • Some systems (Vixie cron, cronie) use 24-hour time, so 9 means 9 AM and 21 means 9 PM. Be careful when porting between systems.
  • DST (Daylight Saving Time) transitions can cause jobs to run at unexpected times or be skipped. Spring forward (2 AM becomes 3 AM) often skips 2:30 AM jobs.
  • Quartz Scheduler uses 6-field expressions with seconds as the first field, while standard cron uses 5 fields. The parser detects this from the number of fields.

FAQ

What is the difference between 0 and 7 in the day-of-week field?
Both represent Sunday. Most cron implementations accept 0-7, where 0 and 7 are Sunday, 1 is Monday, and so on. Some implementations only accept 0-6.
Why did my cron job not run on the first of the month?
If your expression specifies both day-of-month (1) and day-of-week (*), the job runs when EITHER field matches, so it runs every day, not just on the first. Use a single field or specify day-of-month without day-of-week.
How do I run a job every 6 hours?
Use the step syntax: 0 */6 * * * runs at midnight, 6 AM, noon, and 6 PM. Without the 0 prefix, */6 would match any minute in hours 0, 6, 12, 18.
Advertisement