Cron Expression Explainer

Paste a cron expression to see what it actually means, and exactly when it runs next.

Runs 100% in your browserNothing is uploaded to a serverFree forever

Expression

┌── 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) * * * * *

Link copied!

Examples

In plain English

Next five runs

    Field by field

    About this cron explainer

    A cron expression is five space-separated fields — minute, hour, day of month, month, day of week — and the reason it is worth a tool is that reading one back is genuinely error-prone. This explainer turns the expression into a sentence and, more usefully, lists the next five times it will actually fire, which is the fastest way to catch a mistake. Each field accepts a wildcard (*), a single value, a list (1,15), a range (MON-FRI) and a step (*/5), plus the three-letter month and day names and the @daily-style shorthands.

    One behaviour catches people out often enough to be worth stating plainly: when both the day-of-month and day-of-week fields are restricted, cron runs the job when either matches, not both. So 0 0 1 * MON fires on the 1st of the month and on every Monday. This tool says so in the description rather than quietly implying "and".

    Run times are worked out in UTC, because a crontab is almost always a server's crontab and servers are almost always on UTC. That matters more than it sounds: read 0 3 * * * against a Denver clock instead and you are told 3am when the job really fires at 8pm the day before — a seven-hour error in the single number you came here for, and it looks perfectly correct. So each run is listed in UTC with your own local time printed beside it, and the Show times in selector will re-render the whole list into any IANA zone if the box you care about keeps a different clock. Everything is still computed in your browser; nothing is uploaded.