Cron Expression Explainer

Quick answer: Cron Expression Explainer is a free online cron expression explained that lets you paste any cron expression to get a plain-English explanation — plus a breakdown of each of the five time fields and what it matches. Free with no signup or download: get results instantly, all inside your browser.

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

  1. Paste a cron expression such as “30 9 * * 1” or a preset like “@daily” into the input.
  2. Click Explain to get the plain-English description of the schedule.
  3. Read the field table to see what each of the five positions means and which values yours sets.
  4. Check for warnings about common gotchas, like the day-of-month/day-of-week OR behavior.
  5. 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.

Frequently asked questions

What is a cron expression?
It is a compact string of five fields — minute, hour, day of month, month, day of week — that defines a recurring schedule. The cron daemon reads these expressions and runs the associated command whenever the current time matches all five fields.
What do the five fields mean, in order?
Minute (0–59), hour (0–23), day of month (1–31), month (1–12), day of week (0–7, where both 0 and 7 mean Sunday). An asterisk means “every possible value” for that field, which is why “* * * * *” runs every single minute.
What are presets like @daily?
Shortcuts for common schedules: @yearly/@annually (midnight Jan 1), @monthly (midnight on the 1st), @weekly (midnight Sunday), @daily/@midnight (midnight every day), @hourly (start of every hour), and @reboot (once at startup, not on a schedule). They keep crontabs readable at a glance.
Why did my job run more often than expected?
The usual cause is a bare asterisk in the minute field: "* 9 * * *" runs every minute during the 9 AM hour, not once at 9:00. Another classic is setting both day-of-month and day-of-week, which cron treats as OR, not AND.
Can I use seconds or years in the expression?
Standard Vixie/ISC cron uses exactly five fields with one-minute granularity and no year field. Some systems (like Quartz or AWS EventBridge) add seconds or years — this reader covers the standard five-field format used on Linux and in most CI systems.
What timezone does cron use?
The system's local timezone where the cron daemon runs, which is a frequent source of confusion on cloud servers set to UTC. Always confirm the server's timezone when a schedule seems off by hours — the expression itself carries no zone information.
Is my expression sent to a server?
No. Parsing and explanation happen entirely in JavaScript in your browser, so your schedules stay private. Nothing is uploaded, logged, or stored — you can safely paste expressions from production crontabs. Your infrastructure details always remain entirely on your own device.