Updated 2026-04

Cron Expression Generator

Build or decode 5-field cron expressions used by Linux crontab, GitHub Actions, AWS EventBridge, Kubernetes CronJobs, and Jenkins. Includes plain-English explanation and next firing times.

Cron Expression Generator



Mode

min hour day-of-month month day-of-week (POSIX 5-field)

Common patterns

Share with friends

How to use

  1. 1 Choose Parse to decode an existing cron expression, or Build to assemble one field by field.
  2. 2 For Parse: enter a 5-field expression like 0 9 * * 1-5 (minute, hour, day-of-month, month, day-of-week).
  3. 3 For Build: fill in each field with a value, range (1-5), list (1,3,5), step (*/15), or asterisk for any.
  4. 4 Click Explain to see a plain-English schedule and the next 5 firing times in UTC.
  5. 5 Use a preset (every minute, hourly, daily midnight, weekdays 9 AM) as a starting point.

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.