Crontab Expression Explainer

Parses a standard 5-field cron expression (minute, hour, day of month, month, day of week) and translates it into a plain-English schedule description, recognizing common shorthand like every-N-minutes, hourly, daily at a specific time, weekday/weekend ranges, and monthly dates, with month and day names accepted alongside numbers. A free online tool from Staaarter, right in your browser.

Runs locallyUpdated 2026-07-27

Overview

Introduction

A pasted cron line like "0 9 * * 1-5" is fast to write once you know the syntax, but slow to read back, especially months later or in someone else's script where the schedule intent isn't obvious at a glance.

This tool parses the five standard cron fields and turns them into a plain-English sentence describing exactly when the job runs, so reviewing or auditing an existing crontab doesn't require mentally re-deriving each field.

What Is Crontab Expression Explainer?

A cron expression parser and natural-language explainer covering all five standard fields (minute, hour, day of month, month, day of week), including wildcards, lists, ranges, step values, and month/day names.

It recognizes common shorthand patterns, every minute, every N minutes, hourly, a specific daily time, weekday-only or weekend-only schedules, and a fixed monthly date, and phrases those naturally, falling back to a more literal per-field description for unusual combinations.

How Crontab Expression Explainer Works

Each of the five fields is split on commas into individual parts, and each part is parsed as a wildcard, a single value, a range, or a stepped variant of either, with month and day-of-week names resolved to their numeric equivalents and validated against that field's valid range.

The minute and hour fields are combined first into a time phrase (recognizing the every-minute, every-N-minutes, specific-time, and hourly-at-a-given-minute shapes specially), then day-of-month, day-of-week, and month restrictions are appended as additional clauses only when they're not left as a wildcard, including cron's day-of-month/day-of-week OR quirk when both are restricted at once.

When To Use Crontab Expression Explainer

Use it when reviewing an unfamiliar crontab or a script's embedded cron line and you want a quick, reliable read on exactly when it fires, without mentally parsing five terse fields.

It's also useful when documenting a scheduled job (in a README, runbook, or PR description) and you want an accurate plain-English description rather than writing one by hand and risking a mismatch with the actual schedule.

Features

Advantages

  • Validates every field's values against cron's real ranges (0-59 for minutes, 1-31 for day of month, etc.), catching an out-of-range value that would otherwise install silently and either fail or run at an unintended time.
  • Accepts month and day-of-week names (JAN-DEC, SUN-SAT) as well as numbers, matching what real-world crontabs actually contain.
  • Explicitly calls out cron's day-of-month/day-of-week OR-interaction instead of silently describing only one of the two restrictions.

Limitations

  • Only supports the standard 5-field format; a 6-field expression with a seconds field (as used by some non-cron schedulers) is rejected rather than guessed at.
  • Phrasing for unusual combinations, like a list mixing a stepped range with individual values, falls back to a more literal field-by-field description rather than fully natural prose.
  • It describes the schedule's meaning, not its real-world effect. It can't tell you whether the job's command itself will succeed or how long it takes to run.

Examples

A weekday morning job

Input

0 9 * * 1-5

Output

At 09:00, on weekdays (Monday through Friday).

Minute and hour are both single values, producing a specific time, and the day-of-week range 1-5 is recognized as the common weekdays-only pattern.

A frequent health check

Input

*/5 * * * *

Output

Every 5 minutes.

A stepped wildcard in the minute field with the hour field left as a wildcard is recognized as the every-N-minutes shorthand.

A monthly billing run

Input

0 0 1 * *

Output

At 00:00, on the 1st of the month.

Minute and hour are both 0 (midnight) and day-of-month is a single value, so the day-of-week field stays a wildcard and only the day-of-month clause is appended.

Best Practices & Notes

Best Practices

  • Paste the exact line from the crontab, including the schedule fields only (not the trailing command), for the most reliable parse.
  • When a schedule uses both day-of-month and day-of-week restrictions, read the explanation's "or" clause carefully. It's easy to assume cron means "and" when it actually means "either."
  • Cross-check an explanation against the companion Crontab Generator when building a new schedule from scratch, since one builds a line and the other reads one back, and they should agree.

Developer Notes

The parser resolves each comma-separated field part into one of six shapes: a bare wildcard, a stepped wildcard (*/N), a single value, a range (A-B), a stepped range (A-B/N), or a stepped single value (A/N, an uncommon but valid Vixie cron extension meaning "start at A, then every N units"). Day-of-week accepts both 0 and 7 for Sunday, normalizing 7 to 0 before building the description. Common shapes (every minute, every N minutes, a specific HH:MM time, hourly at a given minute) get dedicated natural-language phrasing in the time-of-day builder; everything else falls back to a literal per-atom join so the description never silently misrepresents an unusual expression.

Crontab Expression Explainer Use Cases

  • Auditing an existing server's crontab to confirm each job runs on the schedule its comment or documentation claims
  • Understanding a cron line pasted into a support ticket, Slack message, or ops runbook without manually working through each field
  • Generating an accurate plain-English schedule description for documentation or a PR description that adds a new scheduled job

Common Mistakes

  • Assuming a comma between day-of-month and day-of-week restrictions means "and," when cron's actual behavior is "or" once both fields are restricted away from *.
  • Misreading day-of-week 0 as Monday instead of Sunday. Cron's day-of-week numbering starts at 0 for Sunday, not 1.
  • Overlooking that a stepped range like 10-30/5 doesn't mean "every 5 minutes forever," it's scoped to only the 10-30 window within whatever the field's full range is.

Tips

  • If the explanation falls back to a literal per-field description, the expression is likely combining several syntax features in a single field. Consider whether a simpler, equivalent expression exists.
  • Pair this tool with the Crontab Generator when converting a legacy cron line into presets plus flock locking and log redirection.

References

Frequently Asked Questions