liminfo

Cron Expression Explainer

Free web tool: Cron Expression Explainer

*/15
Minute
9-17
Hour
*
Day (Month)
*
Month
1-5
Day (Week)

Human-Readable

Runs, every 15 minutes, hour 9 through 17, day of week 1 through 5

Next 5 Executions

  • 2/25/2026, 11:15:59 AM
  • 2/25/2026, 11:30:59 AM
  • 2/25/2026, 11:45:59 AM
  • 2/25/2026, 12:00:59 PM
  • 2/25/2026, 12:15:59 PM

Quick Reference

About Cron Expression Explainer

The Cron Expression Explainer parses any standard five-field cron expression and translates it into a human-readable description, a field-by-field visual breakdown, and a list of the next five scheduled execution times. The five fields — minute, hour, day-of-month, month, and day-of-week — each support the full cron syntax: wildcards (*), step values (*/15), comma-separated lists (1,3,5), and ranges (9-17). The tool also displays six common presets (@yearly, @monthly, @weekly, @daily, @hourly, and "every 5 min") as clickable buttons for quick experimentation.

DevOps engineers, system administrators, back-end developers, and platform teams rely on cron schedules for automated tasks such as database backups, log rotation, report generation, cache warming, and batch data processing. Misreading a cron expression is a common source of bugs — a missed asterisk or an off-by-one in a range can cause a job to fire every minute instead of once a day. This tool eliminates that ambiguity by explaining the expression in plain language before it is deployed.

The next-execution algorithm iterates forward from the current time in one-minute increments (up to 525,600 minutes / one year) and checks each candidate timestamp against the parsed fields using bitwise Set membership. It correctly handles the Unix cron convention for day-of-month and day-of-week: when both fields are specified (non-wildcard), a match on either field triggers execution (OR logic); when only one is specified, only that field must match (AND with wildcard). The explanation engine converts each field to a natural-language phrase, covering step, range, list, month name, and day-of-week name lookups.

Key Features

  • Parses all standard 5-field cron syntax: *, */n, ranges (a-b), lists (a,b,c), and combinations
  • Natural-language explanation ("Runs every 15 minutes, hour 9 through 17, on Monday through Friday")
  • Field-by-field visual breakdown showing the value and its position label
  • Next 5 execution times computed from the current local time and displayed in locale format
  • Six quick-reference presets: @yearly, @monthly, @weekly, @daily, @hourly, every 5 minutes
  • Handles Unix cron OR logic for simultaneous day-of-month and day-of-week specifications
  • Bilingual output — all labels and explanations switch between English and Korean
  • 100% client-side processing — no cron expression data is ever sent to a server

Frequently Asked Questions

What is a cron expression?

A cron expression is a string of five space-separated fields that defines a recurring schedule for automated tasks on Unix-like systems. The fields represent, in order: minute (0–59), hour (0–23), day of month (1–31), month (1–12), and day of week (0–6, where 0 is Sunday). For example, "0 2 * * *" means "run at 2:00 AM every day".

What does the asterisk (*) mean in a cron field?

An asterisk (*) is a wildcard meaning "every valid value" for that field. For example, * in the minute field means "every minute" (0 through 59), and * in the month field means "every month". Wildcards can be combined with step values: */15 in the minute field means "every 15 minutes".

What is a step value like */15 or 1-5/2?

A step value uses a slash to indicate frequency. */15 in the minute field means "at minute 0, 15, 30, and 45". A range with a step like 1-5/2 means "from 1 to 5, every 2 steps" — i.e., 1, 3, 5. This is useful for scheduling jobs at regular intervals within a bounded range.

How does cron handle day-of-month and day-of-week together?

When both the day-of-month and day-of-week fields are non-wildcard, standard Unix cron uses OR logic: execution happens if the day of month matches OR the day of week matches. When only one of them is specified (the other is *), only that field must match. This behavior can be surprising and is a common source of misconfiguration.

What does "*/15 9-17 * * 1-5" mean?

This expression runs every 15 minutes (minutes 0, 15, 30, 45), only during hours 9 through 17 (9 AM to 5 PM), on every day of the month, in every month, but only on Monday through Friday (weekdays 1–5). In plain English: "Every 15 minutes during business hours on weekdays."

How accurate are the next-execution times shown?

The tool computes next executions by iterating forward in one-minute steps from the current local time and checking each minute against the parsed cron fields. The results are as accurate as the system clock and correctly respect all standard cron field rules including the month and day-of-week names. Times are displayed using your browser's locale formatting.

What is the difference between @daily and "0 0 * * *"?

@daily (also written @midnight) is a cron shorthand for "0 0 * * *" — run once at midnight (00:00) every day. Other shorthands: @hourly = "0 * * * *", @weekly = "0 0 * * 0" (midnight Sunday), @monthly = "0 0 1 * *" (midnight on the 1st), @yearly = "0 0 1 1 *" (midnight on January 1st). This tool accepts these shorthands if you paste them manually as their equivalent expressions.

Can I use this tool to validate a cron expression before deploying it?

Yes — this is one of the primary use cases. Paste your cron expression into the input field and verify that the human-readable explanation and next-execution times match your intent. If the description says "every minute" when you expected "once a day", you can catch and fix the error before it runs in production.