Skip to content
Developer · Scheduling

Cron Expression Parser

Convert cron expressions to plain English and see when they fire next — with timezone support and special-character handling.

In-browser only 5 & 6 field IANA Timezones

Enter a 5-field or 6-field cron expression

Timezone
Show next
Examples

Enter a cron expression above

Results will appear as you type.

All processing happens in your browser. Your cron expressions are not transmitted to any server.

Guide

How to use this tool

  1. 1
    Enter your cron expression

    Type or paste a 5-field (or 6-field) cron expression into the input field. Results appear as you type.

  2. 2
    Read the plain-English description

    Below the input, you'll see a sentence explaining what your expression means — for example, "Every 15 minutes".

  3. 3
    Check the next run times

    A list shows the next 8 times your expression will fire, in your selected timezone. Adjust the count with the segmented control (5, 8, or 10).

  4. 4
    Change timezone if needed

    Use the timezone selector to view run times in a different timezone. UTC is one click away with the UTC toggle.

  5. 5
    Copy results

    Click the copy button next to the description or run-time list to paste them into tickets, docs, or messages.

  6. 6
    Try an example

    Not sure where to start? Click any example preset chip to see how common cron expressions are parsed.

Reference

Cron special characters

Cron special characters
CharacterNameValid inExampleMeaning
*WildcardAll fields* * * * *Every minute
/StepAll fields*/5 * * * *Every 5 minutes
-RangeAll fields0 9-17 * * *Every hour from 9 AM to 5 PM
,ListAll fields0 8,12,18 * * *At 8 AM, noon, and 6 PM
LLastDOM, DOW0 0 L * *Last day of the month at midnight
WNearest weekdayDOM only0 0 15W * *Nearest weekday to the 15th
#Nth weekdayDOW only0 0 * * 1#11st Monday of the month
?No specific valueDOM, DOW0 0 1 * ?Midnight on the 1st (no specific DOW)

Examples

Common cron expressions

Common cron expressions
ExpressionMeaning
*/5 * * * *Every 5 minutes
0 2 * * *At 2:00 AM every day
0 9 * * 1-5At 9:00 AM, Monday through Friday
0 0 1 * *At midnight on the 1st of every month
0 0 * * 1#1At midnight on the 1st Monday of every month

Frequently Asked Questions

What is a cron expression?
A cron expression is a string of 5 or 6 space-separated fields that defines when a scheduled task should run. The fields represent: minute, hour, day of month, month, and day of week (with an optional seconds field at the start). For example, */5 * * * * means "every 5 minutes".
What do the special characters mean?
  • * — every value (e.g., * in the hour field means "every hour")
  • / — step (e.g., */15 means "every 15")
  • - — range (e.g., 1-5 means "1 through 5")
  • , — list (e.g., 1,3,5 means "1, 3, and 5")
  • L — last (e.g., L in day-of-month means "last day of the month")
  • W — nearest weekday (e.g., 15W means "the weekday closest to the 15th")
  • # — nth occurrence (e.g., 2#3 means "the 3rd Tuesday")
  • ? — no specific value (used in day-of-month or day-of-week when the other is specified)
What's the difference between 5-field and 6-field cron?
A 5-field expression covers minute through day-of-week. A 6-field expression adds a seconds field at the beginning. 6-field is used by Quartz and some Java-based schedulers. This tool auto-detects which format you're using.
How does the tool handle day-of-month vs day-of-week conflicts?
When both fields are specified (neither is * or ?), different cron implementations behave differently. This tool uses OR logic (Vixie cron / Cronie default): the job runs if either the day-of-month or the day-of-week matches. A warning banner appears when this situation is detected.
What timezone are the run times in?
By default, run times are shown in your browser's local timezone. You can change this using the timezone selector. The UTC quick-toggle is always available.
Is my cron expression sent to a server?
No. All parsing, description generation, and run-time calculation happens entirely in your browser. Nothing leaves your device. This tool works offline once loaded.
Why do some run times seem to skip months?
If your expression specifies a day that doesn't exist in every month (e.g., 0 0 31 * *), those months are skipped. February never has a 31st day, so a "31st of every month" expression only fires in months that have 31 days.
Does this tool support named months (JAN, FEB) or named days (MON, SUN)?
No — this tool requires numeric values for month (1–12) and day-of-week (0–7). Named abbreviations like JAN or MON are not supported.
What cron implementations does this tool support?
The tool defaults to Vixie cron / Cronie semantics (the standard on most Linux distributions). 6-field expressions follow Quartz syntax. If you use a different cron implementation (e.g., BusyBox cron, systemd timers), behaviour may differ slightly.
How accurate is the plain-English description?
The description is generated using the cronstrue library, which is widely used and tested. It handles all standard cron special characters and produces grammatically correct output.

All processing happens in your browser. Your cron expressions are not transmitted to any server.