Cron Expression Explainer

Translate cron expressions into plain English and see the next scheduled run times.

Minute
Hour
Day
Month
Weekday
Common Presets

📐 How to Use

  1. Type or paste a cron expression (e.g. "0 9 * * 1").
  2. The plain-English description updates instantly.
  3. See the next 5 scheduled run times displayed below.
  4. Use the preset buttons for common schedules like "every day at midnight" or "every hour".

🎯 When to Use This

  • Reading a schedule you inherited in a crontab or a Kubernetes CronJob, where something like */7 in the hour field is not obvious.
  • Checking before a deploy that a job you just edited will next fire when you believe it will, rather than twelve hours later.
  • Spotting that a schedule meant for weekdays was written with the wrong day numbers, by reading the next five dates it produces.
  • Converting a vague requirement like every quarter hour into an expression, by trying a preset and adjusting one field at a time.

❓ Frequently Asked Questions

QWhat is a cron expression?
A cron expression is a string of 5 fields (minute, hour, day-of-month, month, day-of-week) used to schedule recurring tasks. Example: "0 9 * * 1" means "every Monday at 9:00 AM".
QDoes this support 6-field expressions?
Yes — if you provide 6 fields, the first is treated as seconds (common in tools like Quartz Scheduler).
QWhat do * and ? mean?
"*" means every possible value for that field. "?" means no specific value (used in day-of-month and day-of-week to avoid conflicts).

ℹ️ About This Tool

A cron expression is five fields read left to right: minute, hour, day of month, month and day of week. Its sharpest edge is the relationship between the two day fields. When both are restricted rather than left as a star, traditional cron runs the job when either matches rather than when both do, so 0 0 13 * 5 fires on the thirteenth and on every Friday. The expression carries no timezone either; the daemon's own zone decides, which is why a schedule can shift twice a year.

This parser handles stars, question marks, ranges, comma lists and step values, and treats a six-field expression as a Quartz-style one by discarding the leading seconds field. Next run times are found by stepping forward one minute at a time from the next minute and testing each candidate, searching up to a year ahead, then displayed in your browser's local timezone.

⚠️ Notes & Limits

  • A field mixing a list with a range, such as 1,3-5, is misread, because the dash is tested before the comma and only part of the field survives.
  • The Quartz extensions L, W and # for last day, nearest weekday and nth weekday of the month are not parsed at all.
  • Run times are computed in your browser's timezone, which is rarely the server's, and the search stops a year ahead, so a rare schedule returns fewer than five.
  • Seconds in a six-field expression are discarded rather than honored, so both the description and the run times describe the minute only.