Developer

Cron Expression Describer

Translate a numeric cron expression into a field-by-field description and preview the next five run times in your local time.

Loading interactive tool…

Embed this tool on your site

About this tool

The Cron Expression Describer breaks a numeric cron expression into a short field-by-field sentence, so '30 9 * * *' reads as 'Minute 30, hour 9.' and '0 6 1 1,7 *' as 'Minute 0, hour 6, on day-of-month 1, in January, July.' It also lists the next 5 run times, calculated minute by minute in your browser's local time zone, so you can check when a job will actually fire. Five fields are read as minute, hour, day-of-month, month and day-of-week; six fields are read with a leading seconds field. Numbers, *, ranges (9-17), lists (0,12) and steps (*/15) are understood. There is no time-zone selector, and @daily-style shortcuts, names such as MON or JAN, ? and L are not supported. Only the number of fields is validated. Known issues: day-of-week numbers are named one day early in the sentence (1 shows as Sunday), and when both day-of-month and day-of-week are set the run list requires both to match, unlike standard cron, so check the run list against the field values.

Why use it

  • Describes each cron field in words as you type — no memorization required.

  • Shows the next 5 scheduled runs in your local time for quick verification.

  • Understands ranges, lists and step values such as 9-17, 0,12 and */15.

  • Example chips load common schedules with one click.

  • Runs entirely in the browser; nothing you type is sent to a server.

How to use

  1. Type a cron expression (e.g. '30 9 * * *') into the Cron Expression field, or click one of the example chips such as */5 * * * * or 0 0 1 * *.
  2. Read the description that appears under the field as you type; it names each non-wildcard field.
  3. Review the Next 5 run times list, shown in your browser's local time zone.
  4. For day-of-week schedules, trust the numbers and the run list rather than the weekday name in the sentence, which is currently off by one day.
  5. Paste only the five or six schedule fields; a full crontab line with a command after the schedule is rejected with 'Enter 5 or 6 space-separated cron fields'.

When it helps

  • Checking when a numeric cron schedule will next fire before deploying it.
  • Documenting what a cron expression does in plain language.
  • Debugging cron job timing issues by seeing upcoming run times.
  • Learning cron syntax by entering expressions and reading the descriptions.
  • Reviewing an inherited crontab during onboarding or an audit, one schedule at a time.

Examples

Every 15 minutes

Input
*/15 * * * *
Expected result
Minute every 15 minutes, hour every hour.

Twice a day

Input
0 0,12 * * *
Expected result
Minute 0, hour 0, 12.

First of January and July

Input
0 6 1 1,7 *
Expected result
Minute 0, hour 6, on day-of-month 1, in January, July.

Six fields with seconds

Input
0 30 9 * * *
Expected result
At second 0, minute 30, hour 9.

Tips

  • Always check the Next 5 run times before deploying — a one-character mistake (e.g. `0 9 * * 0` vs `0 9 * * 1`) can shift your job from Mondays to Sundays.
  • Cron has no awareness of timezones. Most schedulers use UTC by default; this tool shows runs in your browser's zone, so convert before comparing.
  • Avoid running jobs at the top of the hour exactly (e.g. `0 * * * *`). Spread them with random offsets like `7 * * * *` to prevent thundering herd issues on shared infrastructure.
  • For jobs that must run every N minutes where N does not divide 60 evenly (e.g. every 13 minutes), do not rely on `*/13` — it resets at the top of each hour. Use a one-shot scheduler instead.
  • Quartz cron (used by Spring, Java, AWS EventBridge) starts with a seconds field; standard POSIX cron does not. Mismatching format is the most common cron bug in cloud workloads.
  • Day-of-month and day-of-week are OR'd in classic cron, not AND'd. `0 0 1 * 1` means the 1st of any month OR any Monday; this tool's run list shows only days that match both, so do not rely on it for such schedules.
  • When your machine moves between DST and standard time, jobs scheduled in the skipped hour are silently dropped, and jobs in the duplicated hour can run twice. Schedule sensitive jobs at 03:00 or later to dodge most DST oddities.

Frequently Asked Questions

What is a cron expression?
A cron expression is a string of 5 or 6 fields that specifies when a scheduled job should run: minute, hour, day of month, month, day of week (and optionally seconds).
Does it understand @daily, @hourly and other special strings?
No. Only space-separated fields are accepted; @daily and similar shortcuts show 'Enter 5 or 6 space-separated cron fields'. For reference, @daily equals '0 0 * * *', @hourly '0 * * * *', @weekly '0 0 * * 0' and @monthly '0 0 1 * *'.
Does it support step values like */15?
Yes. Step values (e.g. */15 for every 15 minutes), ranges (1-5), and lists (1,3,5) are recognised in both the description and the run list. Names such as MON or JAN appear in the description but produce no run times.
What is the 6th field for?
When you enter six fields, the tool treats the first as seconds, as Spring and Quartz do. The run list ignores the seconds field and checks the last five fields only.
Does this support AWS EventBridge cron format?
Not reliably. EventBridge's six fields are minutes, hours, day-of-month, month, day-of-week and year, and it uses ? — the tool reads a six-field expression as seconds-first and does not understand ?, so EventBridge expressions are misread.
Which time zone are the run times in?
Your browser's local time zone, formatted with your locale. There is no time-zone selector and no start-time field; the list starts from the next minute after you open or edit the expression.
Why does the weekday name look wrong?
The description maps day-of-week numbers to names one place too early, so 1 is shown as Sunday and 1-5 as Sunday–Thursday. The Next 5 run times use the correct mapping (0 = Sunday, 1 = Monday), so check those dates.
Why does my Spring/Quartz cron need a seconds field?
Quartz Scheduler requires a leading seconds field because it supports sub-minute precision. Standard Unix cron (Linux crontab) does not, so a Quartz expression pasted into Linux cron will misalign.

Explore the category

Glossary

Cron expression
A 5- or 6-field string that specifies a recurring schedule. Standard POSIX uses minute, hour, day-of-month, month, day-of-week.
Standard (POSIX) cron
The original Unix cron format with 5 fields, used by /etc/cron, crontab, anacron, and most Linux schedulers.
Quartz cron
An extended 6 or 7-field cron used by Quartz Scheduler (Java) and AWS EventBridge. Adds a seconds field as field 1 and supports special characters like ? and L.
Step value
A `/N` suffix meaning every Nth value (e.g. */15 in minutes = every 15 minutes starting at 0).
Range
Two values joined by `-` (e.g. 1-5 in day-of-week = Monday through Friday).
List
Comma-separated values (e.g. 1,3,5) meaning the schedule fires when any listed value matches.
Day-of-week vs day-of-month
Two independent fields. Standard cron OR's them: 0 0 1 * 1 = 1st of month OR Monday. Quartz uses ? to disambiguate.
@reboot
A special directive (cron-implementation-dependent) that runs the job once when the cron daemon starts, typically at boot.
UTC offset
Difference between local time and UTC. Cron schedulers that interpret expressions in a non-UTC zone must factor in DST shifts.
A LITTLE HELP. A LOT DONE.
Good tools.
Great flow.

Your shortcut to the everyday. Create, convert, calculate,
and get back to what you love.

✓ Free to use✓ No sign-up✓ 500+ possibilities