Cron Expression Parser — Translate Cron to English
Paste a 5-field cron expression and get a plain-English schedule plus the next 5 run times — with a warning when the day-of-month/day-of-week OR-rule will surprise you.
Last reviewed 2026-10-19. Rates change — verify against the official sources linked below before relying on these figures.
What this is based on
- Standard 5-field cron: minute hour day-of-month month day-of-week. Supports *, lists (1,2,3), ranges (1-5) and steps (*/15, 9-17/2).
- Names (MON, JAN) and macros (@daily, @hourly) are not supported — convert them to numbers first.
- When BOTH day-of-month and day-of-week are restricted, cron treats them as OR — one of the most common scheduling bugs.
- Next-run times are computed in your browser's local timezone; production crons typically run in server time (usually UTC).
The OR-rule that schedules jobs wrong
Setting both day-of-month and day-of-week is the classic cron trap: '0 9 1 * 5' does NOT mean '9am on the 1st if it's a Friday' — it means '9am on the 1st AND on every Friday'. Cron ORs the two fields when both are restricted. If you meant AND, run daily and check the condition inside the job.
Reading a cron line without counting fields
Minute, hour, day-of-month, month, day-of-week — five fields, left to right. Most mistakes come from miscounting: '30 9' is 9:30, not 30:09 (which doesn't exist). The other classic: 0-6 vs 0-7 for day-of-week — both 0 and 7 mean Sunday, so '1-5' is your Mon–Fri range.
Step syntax: '*/15' means every 15 from the range start, '9-17/2' means 9, 11, 13, 15, 17. Try pasting '*/15 9-17 * * *' above and read the next runs — five seconds of experimenting builds more intuition than any table.
Timezones — the invisible bug
A cron fires in the timezone of whatever runs it. Your laptop's crontab uses local time; most servers default to UTC; CI systems have their own settings. '9:00 Monday' in UTC is 4am Eastern — the tool shows your local interpretation, so always check what timezone the actual scheduler uses.
Frequently asked questions
- What does '0 9 * * 1-5' mean?
- 9:00 AM, Monday through Friday — weekday-only schedules use the 5th field with ranges like 1-5.
- Why did my job run on BOTH the 1st and Fridays?
- Because cron ORs day-of-month and day-of-week when both are set. '0 9 1 * 5' = on the 1st of the month AND every Friday. For AND semantics, schedule daily and gate inside the script.
- How do I run something every 15 minutes?
- */15 in the minute field: '*/15 * * * *'. For every 15 minutes only in working hours: '*/15 9-17 * * *'.
- Does cron support seconds?
- Standard cron doesn't — the 6-field variants (Quartz, systemd timers, some schedulers) add a leading seconds field. This parser covers the classic 5-field format.
Related calculators
Test a regular expression against your text with instant results: all matches, their positions, capture groups and flag support — runs locally, nothing sent anywhere.
Paste JSON to validate and pretty-print it — with error location (line and column) when it's broken, plus key count, depth and size stats. Runs entirely in your browser.
Paste a GitHub Actions workflow YAML and catch the top-5 CI/CD risks: unpinned actions, script injection, pull_request_target abuse, secrets in run steps and write-all permissions.