User Rating 0.0
Total Usage 0 times
minute hour day (month) month day (week)
Presets:
Is this tool helpful?

Your feedback helps us improve.

About

A mistyped cron expression can trigger a job every minute instead of every month. That single character error compounds: runaway processes, duplicated emails, overwhelmed databases, inflated cloud bills. The five-field crontab format (minute hour day-of-month month day-of-week) packs dense scheduling logic into terse syntax where */5 and 5 mean fundamentally different things. This converter parses each field against POSIX cron semantics, validates ranges (minute 0 - 59, hour 0 - 23, day 1 - 31, month 1 - 12, weekday 0 - 7), and produces unambiguous English. It also calculates the next 5 execution times so you can verify the schedule before deployment.

The tool handles lists, ranges, step values, month and weekday names (JAN - DEC, SUN - SAT), and common shorthand macros like @daily or @weekly. Limitation: it assumes the system timezone matches your local browser timezone. It does not model non-standard extensions like seconds fields or year fields found in Quartz or Spring schedulers.

crontab cron expression cron parser crontab converter cron to english cron schedule crontab syntax linux cron

Formulas

A standard POSIX cron expression consists of 5 whitespace-separated fields:

minute hour day-of-month month day-of-week

Each field accepts the following token types:

*wildcard (every valid value)
nexact value
a-brange from a to b inclusive
x/sstarting at x, every s steps
a,b,clist of specific values

Valid ranges per field:

minute [0, 59]
hour [0, 23]
day-of-month [1, 31]
month [1, 12]
day-of-week [0, 7] where 0 = 7 = Sunday

The parser first checks for macro aliases (@daily, @weekly, etc.) and expands them. Then each field is split by comma to produce a list of atoms. Each atom is classified as wildcard, range, step, or literal. Step values expand to an enumerated set: for */15 in the minute field, the set becomes {0, 15, 30, 45}. The English description is assembled by translating each field's set into natural language and combining them.

Reference Data

Cron ExpressionMeaningUse Case
* * * * *Every minuteHealth check ping
0 * * * *Every hour at minute 0Hourly log rotation
0 0 * * *Daily at midnightDatabase backup
0 6 * * 1-5Weekdays at 06:00Morning report email
*/15 * * * *Every 15 minutesCache refresh
0 0 1 * *First day of every month at midnightMonthly billing
0 0 * * 0Every Sunday at midnightWeekly cleanup
30 4 1,15 * *1st and 15th at 04:30Bi-monthly payroll
0 22 * * 1-5Weekdays at 22:00End-of-day ETL job
0 0 1 1 *January 1st at midnightAnnual license renewal
0 */2 * * *Every 2 hoursMonitoring alert digest
5 4 * * 0Sundays at 04:05Weekly analytics export
0 9-17 * * *Every hour 09:00 - 17:00Business-hours polling
0 0 */3 * *Every 3 days at midnightStaggered data sync
@rebootOnce at system startupService initialization
@hourlyEvery hour (alias for 0 * * * *)Quick shorthand
@dailyOnce a day (alias for 0 0 * * *)Nightly tasks
@weeklyOnce a week (alias for 0 0 * * 0)Weekly digest
@monthlyOnce a month (alias for 0 0 1 * *)Invoice generation
@annuallyOnce a year (alias for 0 0 1 1 *)Certificate renewal

Frequently Asked Questions

Both 0 and 7 represent Sunday in POSIX cron. This dual representation exists for historical compatibility. Most modern cron implementations (Vixie cron, cronie, systemd timers) treat them identically. The converter normalizes both to Sunday.
In standard Vixie cron, if both day-of-month and day-of-week are restricted (not *), the job runs when EITHER condition is met (OR logic), not when both are met. This is a common source of bugs. The converter flags this situation in its output. For example, 0 0 15 * 5 runs on the 15th of every month AND on every Friday, not only on Fridays that fall on the 15th.
No. This converter implements the standard POSIX 5-field format. Quartz Scheduler uses a 6-field format (adding seconds) and Spring adds a 7th field (year). Entering 6 or more fields will produce a validation error. Strip the seconds field before converting Quartz expressions.
Yes. The parser accepts three-letter English abbreviations: JAN through DEC for months (1 - 12) and SUN through SAT for weekdays (0 - 6). Matching is case-insensitive. Names can be used in ranges (e.g., MON-FRI) and lists (e.g., JAN,MAR,JUL) but not in step expressions like MON/2.
The converter uses your browser's local timezone via the JavaScript Date object. Server cron jobs typically run in the server's configured timezone (often UTC). If your server uses UTC and your browser is in UTC+5, the displayed next-run times will be offset by 5 hours from actual server execution. Always verify the timezone configured in your server's crontab or /etc/timezone.
The expression */n means "starting from the field minimum, every nth value." For the minute field, */20 expands to {0, 20, 40}. For a range with step like 10-40/15, it produces {10, 25, 40}. The step never wraps around; values exceeding the field maximum are discarded.