Cron expression parser: understand any schedule at a glance
Cron expressions are compact but cryptic: 0 */6 * * 1-5 is hard to read even for experienced administrators. This cron expression parser turns each expression into a sentence, breaks it down field by field and calculates when it will actually run next, so you can confirm a schedule before deploying it.
Example
Expression: */15 9-17 * * MON-FRI
Description: Every 15 minutes, between 09:00 and 17:59, Monday through Friday
Field Value
Minute */15
Hour 9-17
Day of month *
Month *
Day of week MON-FRI
Next 10 runs (UTC), first three shown:
Mon, Sep 28, 2026, 09:00
Mon, Sep 28, 2026, 09:15
Mon, Sep 28, 2026, 09:30
The five cron fields
┌───────────── minute (0-59)
│ ┌─────────── hour (0-23)
│ │ ┌───────── day of month (1-31)
│ │ │ ┌─────── month (1-12 or JAN-DEC)
│ │ │ │ ┌───── day of week (0-7 or SUN-SAT, 0 and 7 = Sunday)
│ │ │ │ │
* * * * * command*– every value.5– a single value.1-5– a range.1,15– a list.*/10– a step: every 10th value.5-59/15means minutes 5, 20, 35 and 50.
Common cron expressions explained
| Expression | Meaning |
|---|---|
* * * * * | Every minute |
*/5 * * * * | Every 5 minutes |
0 * * * * | At the start of every hour |
0 2 * * * | Every day at 02:00 |
0 9 * * 1-5 | At 09:00 on weekdays |
30 18 * * 5 | At 18:30 every Friday |
0 0 1 * * | At midnight on the first day of every month |
0 0 1 1,4,7,10 * | Quarterly, at midnight on January 1, April 1, July 1 and October 1 |
Supported formats
- Standard 5-field expressions used by Linux crontab, Kubernetes CronJobs, GitHub Actions and most schedulers.
- 6 fields with seconds first, as used by Spring, Quartz and some Node.js libraries, and 7 fields with a trailing year. Both are explained with a "Not standard cron" warning, because a crontab line has exactly 5 fields.
- Macros:
@yearly,@monthly,@weekly,@daily,@hourlyand@reboot. - One expression at a time – the field takes one schedule. You can paste a whole crontab line: the command after the schedule fields is ignored for the description and the run list, but the visual builder only fills in from the bare schedule fields.
- Quartz specials
L,Wand#are described in words and flagged as "Not standard cron", like the Quartz?, but next run times cannot be calculated for them.
The day-of-month and day-of-week trap
When both day fields are restricted, classic cron runs the job if either matches, not both. 0 0 1,15 * 5 therefore runs on the 1st, the 15th and every Friday, not only on Fridays that fall on those dates. The next-run list makes this behavior visible immediately. As in Vixie cron, a day field that starts with * (such as */2) counts as unrestricted here, so 0 0 */2 * 1 runs only on Mondays that fall on an odd day of the month.
Time zones
Cron uses the time zone of the machine or service running it. Many servers and cloud schedulers, including GitHub Actions, run in UTC. Compare next run times in local time and UTC to make sure a "9 AM" job does not fire at 9 AM somewhere else. Around daylight-saving changes, local-time jobs can be skipped or run twice, another reason many teams schedule in UTC.
Need to build an expression instead of reading one? Use the crontab generator. To convert the listed times into Unix timestamps, try the Unix timestamp converter. Everything is calculated in your browser.