Skip to content
brownie.tools

Cron Expression Parser

Explain Standard, Quartz, and AWS schedules with field details and up to eight local and UTC run times.

Preview policy: nonexistent local times are skipped. Repeated times use the selected policy. “Runs twice?” marks ambiguous local times. Scheduler implementations can differ; this preview does not claim to reproduce Vixie cron or systemd catch-up rules. AWS uses EventBridge Scheduler syntax; legacy EventBridge rules use UTC only. The search horizon is two years.

minute hour day month weekday; macros such as @daily

Using now; refreshes every minute. Choose a local date and time to pause updates.

Quick Presets

Quick Presets

Special Characters Reference
*
Every value in the field
,
List: JAN,MAR or 1,3,5
-
Range: MON-FRI or 9-17
/
Step: */15 (every 15 units)
?
Quartz/AWS: no constraint in one day field
L
Quartz/AWS: last day or last specified weekday
W
Quartz/AWS: nearest weekday, staying in the month
#
Quartz/AWS: nth weekday, such as MON#2

Runs locally in your browser. Nothing is uploaded or sent to a server.

Enter a schedule in Cron Expression and choose its Dialect to get a plain-English explanation, field details, and up to eight upcoming runs. Standard uses five fields; Quartz adds seconds and an optional year, while AWS EventBridge uses six fields ending in year. Choose Time zone to see local results alongside UTC. Set Reference date and time in your device's local zone, and choose whether repeated daylight saving times appear once or twice. Calculations run on your device.

Updated

How do you parse a cron expression and read its next runs?

Enter 0 9 * * MON-FRI in Cron Expression with Standard (5 fields) selected to see a schedule for 09:00 Monday through Friday. Expand Field Breakdown to inspect each position, then read the upcoming times in your chosen Time zone and UTC. Enter the schedule alone, without a shell command.

For a worked interval example, choose UTC and enter */15 * * * *. With a reference instant corresponding to 10:07 UTC, the first four matches are 10:15, 10:30, 10:45, and 11:00 UTC. The minute values are 0, 15, 30, and 45 in every hour. The search excludes the reference instant itself: at exactly 10:15 UTC, the next match is 10:30, rather than another 10:15.

Standard five-field schedules, interpreted in the selected time zone
ExpressionMatching times
* * * * *Every minute, at second 0
0 * * * *Minute 0 of every hour
0 0 * * *Midnight each day
0 9 * * MON-FRI09:00 Monday through Friday
0 0 1 * *Midnight on the first of each month

Which cron dialect and field order should you choose?

Choose Dialect before pasting a schedule, because changing it loads a weekday example. Standard accepts exactly five fields: minute, hour, day of month, month, and weekday. Minutes range from 0–59, hours from 0–23, days of month from 1–31, and months from 1–12. Standard weekday numbers use Sunday = 0 or 7 and Monday = 1 through Saturday = 6.

Quartz uses second, minute, hour, day of month, month, weekday, and an optional year. AWS EventBridge uses minute, hour, day of month, month, weekday, and year; its sixth field is not seconds. Both modes number Sunday as 1 and Saturday as 7, and require ? in exactly one of the two day fields. Named weekdays avoid confusing these numbering systems.

To preview every 30 seconds, select Quartz and enter */30 * * * * ?. That matches seconds 0 and 30 of every minute. Entering six fields under Standard produces a field-count error, even though some cron systems support a seconds extension. This page previews schedules; it does not execute tasks or install them in a scheduler.

What do stars, lists, ranges, and steps mean?

An asterisk selects every allowed value. A comma joins values, so 0,30 in the minute field selects two minutes per hour. An ascending range includes both endpoints: MON-FRI includes Monday and Friday. Month names JAN through DEC and weekday names SUN through SAT are case-insensitive.

A slash advances from the start of its range. For example, 1-30/5 selects 1, 6, 11, 16, 21, and 26; */5 in minutes starts at 0. Neither expression means five minutes after the reference. Zero steps, descending ranges, and out-of-range values produce validation errors. Use Field Breakdown to compare the entered value with its explanation before reading the resulting dates.

How do day restrictions and special calendar rules work?

In Standard mode, two restricted day fields use a union unless either raw value starts with *. For example, 0 0 1 * MON matches each month's first day and every Monday. A first day that is also Monday yields one matching midnight. If either day field starts with an asterisk, both day checks must pass instead.

Quartz and AWS use ? to leave one day field unconstrained. Their calendar extensions include L for the last day of the month, LW for its last weekday, 15W for the weekday nearest day 15, and MON#2 for the second Monday. For example, 0 0 9 ? * MON#2 in Quartz selects 09:00 on the second Monday. Nearest-weekday matching stays inside the month rather than moving into an adjacent one.

How do reference time, time zone, and DST affect results?

Time zone initially uses the zone detected from your browser. Select UTC or another available named zone to change where the expression is evaluated. Reference date and time has a different role: it is interpreted in your device's local zone, even when the schedule zone is different. To reproduce the 10:07 UTC example, enter the device-local date and time corresponding to that UTC instant. Now restores the current reference and refreshes it every minute.

The DST preview policy skips nonexistent local times during a forward clock change. During a backward change, repeated times appear once by default; the second policy includes both occurrences. DST diagnostics mark skipped or ambiguous local times encountered by the preview. The displayed UTC line helps distinguish two occurrences of the same local clock time. These settings describe this preview's policy, so check your scheduler's own behavior before deployment.

Why might a valid expression show fewer than eight runs?

The tool returns up to eight matching instants and searches no more than two years ahead. A sparse schedule may have fewer matches in that window. This does not automatically mean the expression is invalid. By contrast, 0 0 31 FEB * cannot match a date, because February never contains day 31; the tool reports that the selected months cannot contain the day.

In Standard mode, macros expand into five fields: @hourly selects minute 0, @daily and @midnight select daily midnight, and @weekly selects Sunday midnight. @monthly selects the first of each month; @yearly and @annually select January 1 at midnight. @reboot produces a message explaining that startup has no recurring schedule. For a separate date representation, use the Unix Timestamp Converter; browse Developer Tools for other inspection utilities.

How to Use Cron Expression Parser

  1. Dialect

    Choose Standard (5 fields), Quartz (6–7 fields), or AWS EventBridge (6 fields). Changing Dialect replaces the expression with that dialect's weekday example.

  2. Cron Expression

    Enter only the schedule fields, without a command. For Standard, try */15 * * * * or open Quick Presets and choose Every 15 Minutes. Read the Schedule explanation and expand Field Breakdown.

  3. Time zone

    Select UTC or an available named zone. The initial selection uses your browser's detected time zone. Each upcoming run includes both the selected zone and UTC.

  4. Reference date and time

    Choose a starting date and time in your device's local zone. The search returns matches strictly after that instant. Click Now to return to the current reference, which refreshes every minute.

  5. DST preview policy

    Choose Skip gaps; repeated times run once or Skip gaps; repeated times run twice. Review the scheduled runs and any DST diagnostics before transferring the expression to your scheduler.

Frequently Asked Questions