Programming tool

Cron Expression Converter

Paste a cron expression to read it in plain English and see its next run times, or build a cron schedule from readable options. Everything runs locally in your browser.

Five fields separated by spaces: minute, hour, day of month, month, day of week. Aliases such as @daily and @hourly also work.

Schedule in plain English

At 9:00 AM, Monday through Friday

Next 5 runs

Calculating in your local timezone.

Field breakdown

FieldValueMeaning
Minute0Minute 0
Hour99 AM
Day of month*Every day of the month
Month*Every month
Day of week1-5Monday through Friday

What is a cron expression?

A cron expression is a compact, five-field string that tells a scheduler when to run a job. It originated with the Unix cron daemon and is now used by Linux crontabs, CI pipelines, cloud schedulers, Kubernetes CronJobs, and many application frameworks. Each field narrows down the minutes at which the job fires; a job runs whenever the current time matches every field.

Field layout

Fields are separated by spaces and always appear in the same order. Reading left to right:

*Minute0-59
*Hour0-23
*Day of month1-31
*Month1-12 or JAN-DEC
*Day of week0-7 or SUN-SAT

In the day-of-week field both 0 and 7 mean Sunday. Month and day names use their first three letters (JAN, FEB, MON, TUE) and are not case sensitive.

Special characters

CharacterMeaning
*Any value. The field matches every minute, hour, day, and so on.
,List separator. 1,15 in the day-of-month field means the 1st and the 15th.
-Range. MON-FRI or 1-5 in the day-of-week field means Monday through Friday.
/Step. */15 in the minute field means every 15 minutes; 1-10/2 means every 2nd value from 1 to 10.
?Accepted as an alias for * in the day fields for compatibility with Quartz-style expressions.

Common cron examples

ExpressionMeaning
* * * * *Every minute
*/5 * * * *Every 5 minutes
0 * * * *Every hour, on the hour
0 */6 * * *Every 6 hours
0 0 * * *Every day at midnight
30 8 * * *Every day at 8:30 AM
0 9 * * 1-5Weekdays at 9:00 AM
0 22 * * 0,6Saturday and Sunday at 10:00 PM
0 0 1 * *First day of every month at midnight
0 0 1,15 * *The 1st and 15th of every month at midnight
0 0 1 1 *January 1 at midnight (once a year)
*/10 9-17 * * 1-5Every 10 minutes during business hours on weekdays

Schedule aliases

Many cron implementations accept shorthand names for common schedules. This tool accepts them as input and expands them to the equivalent five-field expression:

AliasEquivalent
@yearly or @annually0 0 1 1 *
@monthly0 0 1 * *
@weekly0 0 * * 0
@daily or @midnight0 0 * * *
@hourly0 * * * *

@reboot runs once at startup and has no time-based schedule, so it cannot be described or converted.

Frequently asked questions

Does this tool support a seconds field?

No. It follows the standard five-field format used by Unix cron, crontab, GitHub Actions, and most cloud schedulers. Six-field expressions with seconds (Quartz, Spring) and seven-field expressions with a year are reported as errors rather than guessed at.

How are timezones handled?

The next run times are calculated in your browser's local timezone, which is shown next to the list. A real scheduler evaluates the expression in its own timezone, often UTC, so a job written for a server may fire at a different wall-clock time than you see here.

What happens when both day of month and day of week are set?

Standard cron treats the two day fields as an OR when both are restricted. The expression 0 0 1 * 1 runs on the 1st of every month and on every Monday, not only on Mondays that fall on the 1st. This tool follows that rule and notes it in the description. If either field starts with * (including steps such as */2) the fields are combined with AND instead, which matches the behavior of Vixie cron used on most Linux systems.

What do @daily, @hourly, and the other aliases mean?

They are shorthand for common five-field schedules: @hourly is 0 * * * *, @daily (or @midnight) is 0 0 * * *, @weekly is 0 0 * * 0, @monthly is 0 0 1 * *, and @yearly (or @annually) is 0 0 1 1 *. The tool accepts them as input and expands them for you.

Why does a schedule show no upcoming runs?

Some combinations never occur, such as day 30 in February or day 31 in April. The tool searches about five years ahead and reports when nothing matches instead of listing incorrect dates.

Can I write “every 90 minutes” as a cron expression?

Not with a single standard expression. Minute steps must divide the hour, and hour steps restart at midnight each day. For intervals that do not fit, schedule the job with two expressions or use a scheduler that supports interval triggers.

Is my expression sent to a server?

No. Parsing, describing, and calculating run times all happen in your browser.