cronwizard.

Paste an expression, a few lines, or an entire crontab. Each line is parsed independently, in the timezone you choose.

Cron expression parser

4 schedules parsed · TZ: America/New_York
# L1 — Sample crontab — paste yours here
L2 · variable PATH = /usr/bin:/bin
# L4 — Daily backup at 3am
L5 0 3 * * * → /opt/scripts/backup.sh
At 03:00.
# America/New_York UTC in
1 2026-04-30 Thu 03:00 2026-04-30 Thu 07:00 22h 15m
2 2026-05-01 Fri 03:00 2026-05-01 Fri 07:00 1d 22h
3 2026-05-02 Sat 03:00 2026-05-02 Sat 07:00 2d 22h
4 2026-05-03 Sun 03:00 2026-05-03 Sun 07:00 3d 22h
5 2026-05-04 Mon 03:00 2026-05-04 Mon 07:00 4d 22h
# L7 — Weekday reports every 5 minutes
L8 */5 9-18 * * 1-5 → /opt/scripts/report.sh
Minutes 0,5,10,15,20,25,30,35,40,45,50,55 past hours 9,10,11,12,13,14,15,16,17,18, on Mondays, Tuesdays, Wednesdays, Thursdays and Fridays.
# America/New_York UTC in
1 2026-04-29 Wed 09:00 2026-04-29 Wed 13:00 4h 15m
2 2026-04-29 Wed 09:05 2026-04-29 Wed 13:05 4h 20m
3 2026-04-29 Wed 09:10 2026-04-29 Wed 13:10 4h 25m
4 2026-04-29 Wed 09:15 2026-04-29 Wed 13:15 4h 30m
5 2026-04-29 Wed 09:20 2026-04-29 Wed 13:20 4h 35m
# L10 — Weekly cleanup on Sundays
L11 @weekly → /opt/scripts/cleanup.sh
At 00:00, on Sundays.
# America/New_York UTC in
1 2026-05-03 Sun 00:00 2026-05-03 Sun 04:00 3d 19h
2 2026-05-10 Sun 00:00 2026-05-10 Sun 04:00 10d 19h
3 2026-05-17 Sun 00:00 2026-05-17 Sun 04:00 17d 19h
4 2026-05-24 Sun 00:00 2026-05-24 Sun 04:00 24d 19h
5 2026-05-31 Sun 00:00 2026-05-31 Sun 04:00 31d 19h
# L13 — This NEVER runs (February has no 31st)
L14 0 0 31 2 * → /tmp/never
At 00:00, on day 31 of the month, in February.
  • ⚠ February has no day 31. This expression will NEVER run.
  • ⚠ Day 31 doesn't exist in February. Those months are skipped.
No upcoming runs (impossible expression or too infrequent).
# L16 — At system boot
L17 @reboot → /opt/scripts/init.sh
Runs once at system boot. not a recurring schedule
Load examples: single line · multi-line · sample crontab

What this tool does

cronwizard is a free, browser-based parser for Unix cron expressions and full crontab files. Paste any schedule and you get a plain-English description, the next upcoming runs in the timezone you pick, and warnings for the mistakes that bite people in production: impossible dates, day-of-month vs day-of-week ambiguity, and schedules that fire far more often than the author probably intended.

Nothing is sent to a server you don't control: the parser, the timezone math, and the next-run computation all happen on this page. There is no signup, no API key, no rate limit, and no tracking.

Cron expression syntax in 30 seconds

A standard Unix cron expression has five fields, separated by spaces:

┌──────── minute       (0–59)
│ ┌────── hour         (0–23)
│ │ ┌──── day of month (1–31)
│ │ │ ┌── month        (1–12 or jan–dec)
│ │ │ │ ┌ day of week  (0–6 or sun–sat; 7 = Sunday too)
│ │ │ │ │
* * * * *  command-to-run

Each field accepts a single value (5), a list (1,15,30), a range (9-17), a step (*/15), or a wildcard (*). Shortcuts like @daily, @hourly, @weekly, @monthly, @yearly, and @reboot are also accepted.

Common cron expressions

Expression Means
* * * * * Every minute
*/5 * * * * Every 5 minutes
0 * * * * Every hour, on the hour
0 3 * * * Every day at 03:00
0 9 * * 1-5 Weekdays at 09:00
0 0 1 * * First day of every month at midnight
0 0 * * 0 Every Sunday at midnight
*/15 9-17 * * 1-5 Every 15 min during business hours, weekdays

Frequently asked questions

What is a cron expression?

A cron expression is a string of five fields — minute, hour, day-of-month, month, day-of-week — that tells a Unix scheduler when to run a command. For example, 0 3 * * * means every day at 3:00 AM.

Why does my cron job run at the wrong time?

The most common cause is a timezone mismatch. Traditional cron daemons run in the system's local timezone, but managed services interpret expressions differently: GitHub Actions always uses UTC, AWS EventBridge uses UTC, and Kubernetes CronJobs default to UTC unless spec.timeZone is set. Always confirm which timezone your scheduler is using before debugging the expression itself.

What does */5 * * * * mean?

It runs every 5 minutes, every hour, every day. The */5 in the minute field means "every 5 starting from 0", so it fires at :00, :05, :10, :15, and so on.

What happens when day-of-month and day-of-week are both set?

Standard Unix cron (Vixie cron) combines them with OR, not AND. The job runs if either the day-of-month or the day-of-week matches. So 0 0 1 * 1 runs on the 1st of every month and every Monday — not only on Mondays that fall on the 1st. This is one of the most frequent sources of cron bugs in production.

Can I use a cron expression like 0 0 31 2 *?

You can write it, but it will never execute. February has no 31st day, so the schedule has no valid match. Most cron daemons silently skip these instead of warning you. cronwizard flags them explicitly.

Does this tool send my crontab anywhere?

The parser runs on the page that serves it. Nothing is logged, stored, or shared with third parties. You can verify this by reading the source — it's a single PHP file.