Cron Expression Generator
Mode
min hour day-of-month month day-of-week (POSIX 5-field)
Share with friends
How to use
- 1 Choose Parse to decode an existing cron expression, or Build to assemble one field by field.
- 2 For Parse: enter a 5-field expression like 0 9 * * 1-5 (minute, hour, day-of-month, month, day-of-week).
- 3 For Build: fill in each field with a value, range (1-5), list (1,3,5), step (*/15), or asterisk for any.
- 4 Click Explain to see a plain-English schedule and the next 5 firing times in UTC.
- 5 Use a preset (every minute, hourly, daily midnight, weekdays 9 AM) as a starting point.
About Cron Expression Generator
FAQ
Q How do I run a cron job every 5 minutes?
Use <code>*/5 * * * *</code>. The */5 in the minute field means "every 5 minutes starting at 0" — so it fires at :00, :05, :10, :15, etc. Equivalent verbose form: <code>0,5,10,15,20,25,30,35,40,45,50,55 * * * *</code>.
Q What does cron expression 0 9 * * 1-5 mean?
It means "9:00 AM, every weekday (Monday through Friday)." Field by field: 0 (minute 0), 9 (hour 9), * (any day of month), * (any month), 1-5 (Monday through Friday). Common pattern for daily reports or business-hours notifications.
Q Why does my GitHub Actions cron run at a different time than expected?
GitHub Actions cron is in UTC. A schedule of <code>0 9 * * *</code> fires at 9 AM UTC, which is 4–5 AM Eastern Time depending on DST. Convert your local time to UTC before writing the cron, or document the schedule with the offset (e.g. "9 AM PT = 17:00 UTC during PST, 16:00 UTC during PDT").
Q Can I run a cron every 30 seconds?
Not with standard 5-field cron — the smallest unit is one minute. Workarounds: (1) use a 6-field cron format (Quartz, AWS EventBridge with seconds support); (2) run once per minute and have the script loop with a 30-second sleep internally; (3) use a job queue with delay (Sidekiq, Celery) instead of cron.
Q What is the difference between * and 0 in the minute field?
In the minute field, <code>*</code> means "every minute" (firing 60 times per hour); <code>0</code> means "at minute 0 only" (firing once per hour at the top). For most periodic tasks you want the specific time (0 in the minute and hour fields), not <code>*</code> which floods the system.
Q How do I run a job on the last day of the month?
Standard POSIX cron does not support "last day" — you'd use the <code>L</code> character which is a Quartz / Vixie cron extension, not in POSIX. Linux workaround: schedule on every late date and check inside the script with <code>date -d tomorrow +%d -eq 01</code> to detect month-end.
Q What does day-of-week 7 mean in cron?
Sunday — same as 0. The numbering is 0=Sunday, 1=Monday through 6=Saturday, and 7 is provided as an alias for Sunday so ranges like <code>5-7</code> (Friday–Sunday) work without wrapping. Some implementations also accept SUN, MON, etc.
Q Are GitHub Actions cron schedules guaranteed to run on time?
No. GitHub Actions runs scheduled workflows on a best-effort basis with delays of 0–60 minutes during high load. For time-critical jobs use AWS EventBridge or your own server with regular cron. GitHub explicitly states the schedule may not run during peak times — check the GitHub status page if your workflow is delayed.
Official resources
IEEE POSIX.1-2017 — crontab
Authoritative POSIX specification for the crontab utility and 5-field expression syntax.
GitHub Actions — Schedule events
Official GitHub docs for cron schedule triggers in Actions workflows.
AWS EventBridge Scheduler — Cron expressions
AWS reference for cron and rate expressions, including the 6-field format with seconds.
Kubernetes CronJob
Kubernetes documentation for CronJob resources and supported cron syntax.