Sponsored placement
What Is a Cron Expression?
A cron expression is a string of five (or six) fields that defines when a scheduled job should run. It was invented for the Unix cron daemon in the 1970s and remains the universal scheduling format for server tasks, CI/CD pipelines, cloud functions, and background workers. The five standard fields are: minute, hour, day of month, month, and day of week — in that order.
Each field accepts a specific number, a wildcard (*) to mean every value, a range (1-5), a list of values (1,3,5), or a step (*/15 for every 15 minutes). Combining these produces expressions like 0 9 * * 1 (run at 9:00 AM every Monday) or */5 * * * * (run every five minutes).
Cron expressions are used in Linux crontab files, GitHub Actions schedules (on: schedule), AWS CloudWatch Events and EventBridge, GCP Cloud Scheduler, Kubernetes CronJob manifests, Node.js task runners (node-cron, cron), Python (APScheduler, Celery beat), and virtually every backend scheduling system.
- Field 1 — Minute: 0–59
- Field 2 — Hour: 0–23 (UTC in most cloud schedulers)
- Field 3 — Day of month: 1–31
- Field 4 — Month: 1–12 (or JAN–DEC)
- Field 5 — Day of week: 0–6 or SUN–SAT (0 and 7 both mean Sunday)
Common Cron Expressions Reference
These are the most commonly used cron patterns. Use this as a quick reference before building custom schedules.
- * * * * * — Run every minute
- 0 * * * * — Run at the start of every hour
- 0 9 * * * — Run every day at 9:00 AM
- 0 9 * * 1 — Run every Monday at 9:00 AM
- 0 9 1 * * — Run on the 1st of every month at 9:00 AM
- 0 9 1 1 * — Run on January 1st at 9:00 AM
- */15 * * * * — Run every 15 minutes
- 0 0,12 * * * — Run at midnight and noon every day
- 0 9-17 * * 1-5 — Run hourly between 9 AM and 5 PM on weekdays
GitHub Actions Cron Schedule Syntax
GitHub Actions uses the same five-field cron syntax in the on: schedule section of workflow files. All GitHub Actions schedules run in UTC. The minimum interval for scheduled workflows is every 5 minutes (*/5 * * * *). GitHub also notes that scheduled workflows may be delayed by up to 15 minutes during periods of high load.
AWS EventBridge uses a slightly different format that adds a sixth field for year and uses ? instead of * for day-of-month or day-of-week (because EventBridge does not support specifying both simultaneously). The generator in this tool produces the standard five-field format; check your platform's documentation for any required variations.
Why marketers use this tool
- Build cron expressions without memorizing the five-field syntax
- Preview the next run times to confirm the schedule is correct
- Copy ready-to-use cron strings for Linux crontab, AWS EventBridge, and GitHub Actions
Frequently Asked Questions
What is a cron expression?
A cron expression is a five-field string that defines when a scheduled job should run. The fields represent minute, hour, day of month, month, and day of week. Wildcards (*), ranges (1-5), lists (1,3,5), and steps (*/15) let you express virtually any schedule in a compact format.
How do I run a cron job every 5 minutes?
Use the expression */5 * * * *. The */5 in the minute field means every 5 minutes starting from minute 0. This produces runs at :00, :05, :10, :15, :20, :25, :30, :35, :40, :45, :50, :55 of every hour.
What time zone does cron use?
Linux crontab uses the timezone of the server where it runs. Most cloud schedulers (GitHub Actions, AWS EventBridge, GCP Cloud Scheduler) default to UTC. Always check your platform documentation and consider explicitly stating the timezone to avoid daylight saving time surprises.
What is the difference between day of month and day of week?
Day of month (field 3) specifies dates like the 1st, 15th, or last day. Day of week (field 5) specifies named days like Monday or Friday. Using both in a single expression is interpreted as OR in traditional cron (the job runs when EITHER condition is true). Some platforms (like AWS EventBridge) require you to use ? for whichever field you do not want to specify.
Can I use cron expressions in GitHub Actions?
Yes. Add an on: schedule section to your workflow file with a cron: key: on: { schedule: [{ cron: "0 9 * * 1" }] }. This example runs the workflow every Monday at 9:00 AM UTC. The minimum interval is every 5 minutes; GitHub may delay execution by up to 15 minutes under load.