Cron Expression Explainer - Human Readable Cron
Translate cron expressions into plain English. Free cron explainer - paste any cron schedule and get a human-readable explanation instantly.
Three steps to get started
Enter a cron expression
Type or paste a 5-field cron expression into the input, or click one of the example presets to start quickly.
Read the explanation
The tool instantly translates the expression into plain English, showing what each field means and the combined schedule.
Check upcoming runs
See the next 5 scheduled run times based on your expression to verify the schedule is what you intended.
Understanding cron syntax
A cron expression is a five-field string that describes when a recurring task should run. Read left to right the fields are minute, hour, day of month, month, and day of week, and a job fires at every moment that satisfies all of them at once. 30 4 * * 1 therefore means 04:30 on Mondays.
The syntax dates to the original Unix cron daemon written by Ken Thompson in the 1970s, with the five-field form standardised by Paul Vixie's rewrite in 1987 - the version that became cronie on modern Linux and was codified in POSIX. It has outlived nearly every scheduling format proposed since, and today the same five fields drive Kubernetes CronJobs, GitHub Actions workflows, and AWS EventBridge rules.
The compactness that makes cron durable also makes it easy to misread. The most common production incident is the day-of-month and day-of-week fields being combined with OR rather than AND: 0 0 13 * 5 does not mean "Friday the 13th" - it fires on the 13th of every month and on every Friday. The second is step values that do not divide evenly, where 0 */7 * * * runs at 00:00, 07:00, 14:00, and 21:00, then restarts the cycle at midnight only three hours later.
Quick reference
* * * * *- every minute0 * * * *- every hour (at minute 0)0 0 * * *- daily at midnight0 9 * * 1-5- weekdays at 9 AM*/15 * * * *- every 15 minutes0 0 1 * *- monthly on the 1st at midnight0 0 * * 0- weekly on Sunday at midnight0 2 * * *- daily at 2 AM (common for backups)
Where cron expressions are used
- Linux/Unix crontab - the original cron daemon
- GitHub Actions -
on: schedule: - cron: "0 9 * * 1" - AWS EventBridge / CloudWatch Events - scheduled Lambda functions and step functions
- Kubernetes CronJobs - periodic batch workloads in clusters
- Node.js - libraries like node-cron and node-schedule
- Database jobs - pg_cron for PostgreSQL scheduled queries
Dialects and timezones
Not every scheduler speaks the same cron. The Quartz scheduler used by Java and by AWS EventBridge takes six fields, adding seconds at the front and a year field at the end, and it forbids specifying both day-of-month and day-of-week - one of them must be ?. Quartz also adds L for last, W for nearest weekday, and # for nth-of-month, so 0 0 12 ? * 6#3 is the third Friday. Vixie cron instead offers shorthands like @daily, @hourly, and @reboot, which Quartz does not understand.
Timezone is the other reliable source of surprise. A Linux crontab runs in the server's local zone, GitHub Actions and Kubernetes CronJobs default to UTC, and anything scheduled during the daylight-saving transition either runs twice or not at all. Jobs pinned to 02:00 in a zone that observes DST are the classic casualty, which is why many teams schedule sensitive work at 03:00 or run the daemon in UTC outright.
This explainer parses the standard five-field syntax and computes upcoming runs in your browser's local timezone, so compare that against your scheduler's configured zone before trusting the times. Parsing and next-run calculation both happen locally - no expression is transmitted anywhere.