Cron syntax tester
Enter a cron expression to validate its syntax and see exactly what schedule it defines. The tool shows the human-readable meaning and the next run times so you can confirm it matches your intent.
5-field format: minute · hour · day of month · month · day of week
How it works
The plain-English line comes from the cronstrue library. The next-run list comes from the tool's own parser, which checks each of the five fields against its range (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), expands lists, ranges and steps, and steps forward through the calendar up to 5 years ahead. When both day fields are restricted, a day matches if either one matches, as in Vixie cron. Run times are shown in your browser's local time zone.
Processing runs in your browser
All parsing and scheduling calculations happen locally in your browser tab. Our servers are not involved at any point.
Related operations
For checking patterns inside log lines or schedules, try the regex tester. To work out the gap between two scheduled runs, use the date calculator. For converting cron timestamps to readable dates, see Unix timestamp.
Frequently asked questions
- How do I write a cron expression that runs every hour?
- Use 0 * * * *. This runs at minute 0 of every hour. The shorthand @hourly is equivalent.
- How do I run a cron job on weekdays only?
- Use 0 9 * * 1-5 to run at 09:00 Monday to Friday. The last field (day of week) set to 1-5 limits it to weekdays; set the first two fields to the minute and hour you want.
- Can cron expressions use month names?
- Yes. You can use abbreviated month names (JAN, FEB, MAR, etc.) and day names (SUN, MON, TUE, etc.) in place of numbers in the respective fields.
- Is there a cron expression for the last day of the month?
- Quartz-style schedulers accept L in the day-of-month field, and this tool describes 0 0 L * * as At 12:00 AM, on the last day of the month, though it shows no next-run preview for it. Classic 5-field cron (Vixie cron, cronie) has no last-day symbol; the usual workaround is 0 0 28-31 * * with a check in the command that tomorrow is the 1st.
Last reviewed September 30, 2026
Other pages for this tool
Related tools
- Background reading: Complete guide to developer tools