cron.protodex· free expression explainer + builder
Plain English ↔ Cron · No signup · No ads

Cron Expression Explainer

Paste a cron expression to see what it means in English, or type English to get cron back. Plus the next 10 run times and the systemd timer equivalent.

① Cron expression
every 15 min, 9-5 Mon-Fri 9am Monday 1st of month midnight every 6 hours 2:30am Sunday new year midnight @daily @hourly
② In English

③ Next 10 runs (UTC)
④ Systemd timer equivalent

Want to know if your cron actually ran?

Free open-source heartbeat monitoring — set up in 2 min:

FAQ

What's the difference between 5-field and 6-field cron?

5-field (minute hour day-of-month month day-of-week) is standard Linux/Unix cron — the kind in /etc/crontab. 6-field adds a leading "second" field — used by Quartz scheduler (Java) and some other systems. This tool defaults to 5-field.

What does the asterisk mean?

* means "every value" for that field. So * * * * * = every minute, every hour, every day, every month, every day of the week. To limit, use specific values, ranges (1-5), lists (1,15,30), or steps (*/10 = every 10).

Why does my cron not run at the expected time?

Most common: timezone. System crons run in the server's local timezone (often UTC on cloud VMs). If you wrote a cron for IST or PST, check timedatectl on Linux or set TZ=Asia/Kolkata at the top of your crontab.

How do I run a cron every Sunday at 2am?

0 2 * * 0 or 0 2 * * SUN — both work. Day-of-week field: 0 (or 7) = Sunday, 1 = Monday, ..., 6 = Saturday.

What's the difference between @daily and 0 0 * * *?

Identical. @daily, @hourly, @weekly, @monthly, @yearly are shortcut aliases. Most modern cron implementations support them. Some embedded/BusyBox cron may not — use the 5-field form to be safe.

What is systemd timer and why use it over cron?

On systemd-based Linux (most modern distros), timers are an alternative to cron with three advantages: (1) tightly integrated with services and journaling — journalctl -u my-timer gets you logs; (2) missed runs persist across reboots if Persistent=true is set; (3) randomized delays via RandomizedDelaySec to avoid thundering herds. Use timers for production services; keep cron for quick ad-hoc scripts.