Cron Expression Parser
Runs in your browser — your text is not sent anywhere to use this tool.
Save this tool
Keep Cron Expression Parser handy
Use your browser's Share menu, then “Add to Home Screen”.
Read a cron expression in plain English, and see exactly when it will next run.
- Paste your cron expression — five fields, or a shorthand like @daily.
- Read the plain-English description to check it says what you intended.
- Check the next run times against what you expected. If they disagree, the expression is wrong, not the list.
- Change the timezone if your server runs somewhere other than UTC — cron means wall-clock time, so the answer moves with it.
What it means
Next runs
About this tool
A cron expression is five fields and no forgiveness. */15 3 * * 1-5 is either exactly what you meant or a job that runs ninety-six times a day instead of four, and nothing about the syntax tells you which. This reads the expression back to you as a sentence, then does the thing that actually catches mistakes: it shows you the next times the job will really fire. The run times are the point. A description can be read the way you already believe it works — the dates cannot. If you expected a Monday and the list says Tuesday, you have found the bug before it found you. It understands the whole of standard crontab: ranges, lists, steps, three-letter names for months and weekdays, and the @daily family of shorthands. It also warns about the one rule nobody guesses. When you set both a day of the month and a day of the week, cron runs when either matches — so 0 0 13 * FRI is not Friday the 13th, it is every 13th plus every Friday. That single misunderstanding is behind more surprise emails than every other cron mistake put together. Everything happens in your browser. Nothing about your schedule is sent anywhere.
Frequently asked questions
What do the five fields mean?
In order: minute (0–59), hour (0–23), day of month (1–31), month (1–12), and day of week (0–7, where both 0 and 7 mean Sunday). An asterisk means every value of that field.
Why does my job run on days I did not ask for?
Almost always the day-of-month and day-of-week rule. When both fields are set to something other than *, cron runs when either one matches rather than both. So 0 0 13 * FRI fires on every 13th and on every Friday. To get Friday the 13th you need a check inside the job itself — cron cannot express it.
What does */15 actually mean?
Every 15th value of that field, counting from the start. In the minute field that is :00, :15, :30 and :45 of every hour. It is not "every 15 minutes from now" — the schedule is fixed to the clock, so a job started at 07:20 still next runs at 07:30.
Which timezone do the run times use?
Whichever you pick, and it matters. A crontab means wall-clock time in the server's timezone, so 0 3 * * * is three in the morning there — and it stays three in the morning across a daylight-saving change even though one of those days is 23 hours long. Set the timezone to match your server, not to your own.
Does it support seconds, or L and W?
No, deliberately. Six-field expressions with seconds are Quartz, and L, W and # are Quartz and Spring extensions. Accepting them here would tell you an expression is fine when the cron you are pasting it into will reject it.
Help improve this tool
Found a bug, want a change, or need a tool we don't have?
You have an unsent draft.
Thanks — that's with us. You'll find the reply in your inbox.Go to my messages