Cron Expression Parser

Parse Unix cron expressions and see exactly when they fire.

Type a cron expression and get a human-readable explanation field by field, plus the next few firing times so you can sanity-check the schedule before deploying it. Saves you from running production jobs ten minutes too early because you misread an asterisk.

Common use cases: verifying a cron line in a Kubernetes CronJob manifest, decoding a schedule pulled from a legacy crontab, learning the syntax by experimenting with combinations, and confirming exactly when "every other Tuesday at 3" actually fires.

Cron Expression

Enter a cron expression (e.g., * * * * *)

Cron Syntax Reference

FieldRangeSpecial Characters
Minutes0–59* , - /
Hours0–23* , - /
Day of Month1–31* , - /
Month1–12* , - /
Day of Week0–6 (Sun–Sat)* , - /

Frequently asked questions

What do the five fields actually mean?
In order: minute (0–59), hour (0–23), day of month (1–31), month (1–12), day of week (0–6, Sunday is 0). * means "every", */N means "every Nth", A-B means "range", A,B,C means "list".
What's the gotcha with day-of-month and day-of-week together?
When both fields are non-*, most cron implementations treat them as OR, not AND. So 0 12 1 * 1 runs at noon on the 1st of every month and on every Monday — not just on a Monday that falls on the 1st.
Why does my schedule drift around DST changes?
Classic cron runs in the server's local time. When clocks spring forward, the 2 a.m. hour is skipped; when they fall back, it runs twice. For predictable schedules, run cron in UTC or use a scheduler that explicitly handles DST (Kubernetes CronJob with timeZone, GitHub Actions schedule, etc).
How do extensions like @hourly, @daily and "L" work?
@hourly, @daily, @weekly, @monthly, @yearly are shortcuts most cron implementations accept. L in the day-of-month field means "last day of the month"; 5L in day-of-week means "last Friday." Not every cron supports these — check your runtime.