Cron expression explainer

Explain a Vixie crontab(5) five-field schedule. Not Quartz. Nothing is uploaded.

Docify's cron explainer reads a crontab(5) five-field expression (minute hour day-of-month month day-of-week) in your browser. The dialect is Vixie cron as documented for Debian cron 3.0pl1: *, lists, numeric ranges, steps after * or a-b, one three-letter month or weekday name, and the @yearly / @daily nicknames. If both day fields are restricted, Vixie ORs them. Explain is a button, not as-you-type. Not Quartz, not Jenkins, not a next-run calculator. Nothing is uploaded.

Expression
Explanation

How it works

  1. Explain is a button, not as-you-type. Load sample fills 30 4 1,15 * 5 (the crontab(5) OR example) and does not run Explain. Copy writes the explanation. Nothing is uploaded.
  2. A line is five whitespace-separated fields: minute (0–59), hour (0–23), day of month (1–31), month (1–12), day of week (0–7; 0 and 7 are Sunday). * is first–last. A list is comma-separated numbers or ranges. A range is a-b with a ≤ b. A step is */n or a-b/n only. Month and weekday accept one three-letter English name (jan dec, sun sat); lists or ranges of names are rejected.
  3. @yearly, @annually, @monthly, @weekly, @daily, @midnight, and @hourly expand to the Vixie nicknames before the same parse. @reboot is rejected (startup, not a schedule).
  4. If both day fields are restricted (neither begins with *), the days are OR-ed. If a day field begins with *, both must match (AND). Debian crontab(5) uses the first character, so */2 is star-like. Rejected: seconds or year fields, Quartz ? / L / W / #, Jenkins H, cronie ~, a username or command, month 0, and day-of-month 0. No next-run times.

FAQ

Does this explainer upload anything?
No. Explain and copy run in your browser. The page does not send the expression to a server.
Which cron dialect is this?
Vixie crontab(5) five-field schedule as shipped by Debian cron 3.0pl1 (Paul Vixie). Fields are minute (0–59), hour (0–23), day of month (1–31), month (1–12), and day of week (0–7; 0 and 7 are Sunday). * means first–last. Lists and numeric ranges are allowed. Steps are only after * or a-b (*/15, 0-23/2). One three-letter English name is allowed for month or weekday (jan, sun); lists or ranges of names are not. @yearly, @annually, @monthly, @weekly, @daily, @midnight, and @hourly expand to the Vixie nicknames. Explain is a button, not as-you-type.
How do day-of-month and day-of-week interact?
If both day fields are restricted (neither begins with *), Vixie cron ORs them. Example: 30 4 1,15 * 5 runs at 04:30 on the 1st and 15th, and also at 04:30 every Friday. If a day field begins with * (Debian crontab(5) checks the first character, so */2 is star-like), both day fields must match (AND). 0 0 */2 * sun is midnight on Sundays that also fall on an odd day-of-month. This page does not compute the next fire time and has no timezone or DST table.
Is this Quartz, Jenkins, or systemd?
No. Six- or seven-field expressions (seconds / year), Quartz ? L W #, Jenkins H, cronie ~ randomization, @reboot (no schedule), a crontab username, and a command after the five fields are rejected. Month 0 and day-of-month 0 are rejected even though some crontab(5) tables list them — they do not match a calendar date here.

Related