Paste any cron expression to get a plain-English explanation — plus a breakdown of each of the five time fields and what it matches.
What is the Cron Expression Explainer?
Cron expressions are the terse scheduling language behind automated jobs on Linux servers, CI pipelines, and tools like GitHub Actions: five fields — minute, hour, day of month, month, day of week — that together describe when something runs. “30 9 * * 1” means 9:30 every Monday, but that is obvious only after you’ve memorized the format, and one misplaced asterisk can turn “every hour” into “every minute”.
This reader translates any standard 5-field expression (or handy presets like @daily and @hourly) into plain English, then shows a field-by-field table explaining what each position matches. It validates as it goes: out-of-range values, wrong field counts, and unsupported syntax are flagged with clear messages instead of silently misbehaving. Developers use it to double-check schedules before deploying, to decode inherited crontabs, and to learn the format without memorizing man pages. Note the classic gotcha it helps you avoid: when both day-of-month and day-of-week are restricted, cron runs when either matches, not both. Everything runs locally in your browser.
How to use the Cron Expression Explainer
- Paste a cron expression such as “30 9 * * 1” or a preset like “@daily” into the input.
- Click Explain to get the plain-English description of the schedule.
- Read the field table to see what each of the five positions means and which values yours sets.
- Check for warnings about common gotchas, like the day-of-month/day-of-week OR behavior.
- Copy the explanation into documentation or a pull request so reviewers understand the schedule.
Cron Expression Explainer use cases
Auditing crontabs
Decode a server’s cron jobs to confirm nothing runs at a surprising time. An inherited crontab full of cryptic expressions becomes a readable schedule in seconds, which is the first step of any cleanup.
CI scheduling
Verify a GitHub Actions or Jenkins cron trigger fires when you intend before merging. Catching ‘every minute’ instead of ‘hourly’ in review saves an embarrassing incident and a flooded notification channel.
Debugging missed runs
Check whether “0 0 29 2 *” really means what you think — it runs only on leap-day midnights. The plain-English reading exposes the assumptions that asterisks hide so effectively.
Learning cron
Experiment with expressions and read the explanations to internalize the five-field format. It is faster and far more forgiving than trial-and-error on a production server. Each experiment builds lasting intuition.
Documentation
Paste the plain-English schedule into runbooks so on-call engineers don’t have to parse asterisks at 3 AM. “At 09:30 on Monday” beats “30 9 * * 1” in an incident.
Tips
- Fields are minute, hour, day of month, month, day of week — in that order, always.
- “*/15” in the minute field means every 15 minutes; lists like “1,15” and ranges like “9-17” are supported.
- @reboot runs once at startup, not on a schedule — there is no recurring time to explain.
- When both day-of-month and day-of-week are restricted, cron fires when EITHER matches.