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.

🔒 Your text stays in your browser - nothing is sent to our servers
How to Use

Three steps to get started

1

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.

2

Read the explanation

The tool instantly translates the expression into plain English, showing what each field means and the combined schedule.

3

Check upcoming runs

See the next 5 scheduled run times based on your expression to verify the schedule is what you intended.

About This Tool

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 minute
  • 0 * * * * - every hour (at minute 0)
  • 0 0 * * * - daily at midnight
  • 0 9 * * 1-5 - weekdays at 9 AM
  • */15 * * * * - every 15 minutes
  • 0 0 1 * * - monthly on the 1st at midnight
  • 0 0 * * 0 - weekly on Sunday at midnight
  • 0 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.

FAQ

Frequently Asked Questions

Related Tools