Cron Expression Generator
Build and decode cron schedule expressions visually — get human-readable descriptions and next run times.
Last updated: March 25, 2026
Find this tool useful? Support the project to keep it free!
Buy me a coffeeWhat is Cron Expression Generator?
A cron expression is a string of 5 (or 6) space-separated fields that defines a recurring time schedule for automated task execution. Originally from Unix cron daemons, cron expressions are now the universal scheduling syntax across Linux servers, cloud functions (AWS Lambda, Google Cloud Scheduler, Azure Functions), CI/CD platforms (GitHub Actions, GitLab CI), Kubernetes CronJobs, and application-level schedulers (Laravel, Celery, Quartz).
The five standard fields represent: Minute (0-59), Hour (0-23), Day of Month (1-31), Month (1-12), and Day of Week (0-7). Extended formats add a Seconds field. Special values include * (every), , (list), - (range), and / (step). The expression "0 9 * * 1" means "at 09:00 every Monday" — but reading this intuitively requires practice. This tool generates cron expressions from visual controls and, equally usefully, decodes existing expressions into plain-English descriptions.
How to Use Cron Expression Generator
Use the visual schedule builder to select timing preferences (every hour, specific days, etc.)
Or type a cron expression directly into the input field to decode it
Read the human-readable description ("Runs at 12:00 PM on weekdays") below the expression
Review the "Next 5 Run Times" to verify the schedule is correct before using it
Copy the cron expression with the Copy button for use in your scheduler
Common Use Cases
- Scheduling a Node.js script to run every night at 2 AM for database cleanup
- Setting up a GitHub Actions workflow to run on a weekly schedule ("0 8 * * 1")
- Creating a Kubernetes CronJob for periodic batch data processing
- Configuring AWS EventBridge (CloudWatch Events) scheduled rules for Lambda triggers
- Setting up a WordPress scheduled task (WP-Cron) for daily email digest sends
- Scheduling Google Cloud Scheduler jobs for API data synchronization
- Configuring a Celery beat scheduler in a Django application for periodic tasks
- Decoding an existing cron expression in a legacy system to understand what it does
Example Input and Output
Common cron expressions and their plain-English meaning:
0 9 * * 1-5
0 0 1 * *
*/15 * * * *
0 0 * * 0
0 2 * * *At 09:00, Monday through Friday (weekdays)
At midnight on the 1st day of every month
Every 15 minutes
At midnight on Sunday (weekly)
At 02:00 every dayClient-Side Processing
All expression parsing, validation, and next-run-time calculation runs locally in your browser. No cron expressions or schedules are sent to our servers.
Test Before Deploying
Always verify the "Next 5 Run Times" before deploying a cron schedule. A common mistake is confusing "0 * * * *" (runs at :00 of every hour) with "* * * * *" (runs every single minute). Seeing the actual upcoming timestamps removes all ambiguity.
Avoid Common Pitfalls
Remember that "0 9 * * 1" and "0 9 1 * *" are completely different: the first runs every Monday at 9 AM; the second runs on the 1st of every month at 9 AM. When both day-of-month and day-of-week are non-wildcard, most cron implementations use OR logic — the job runs on either condition.
Frequently Asked Questions
What is the difference between "0 0 * * 0" and "0 0 * * 7"?
What does */ mean in a cron expression?
How do I run a job every weekday (Monday to Friday)?
What is the 6-field cron format with seconds?
Can I use L (last) and W (nearest weekday) in cron?
What timezone does cron use?
How This Tool Works
The expression generator builds a cron string from individual field values. The expression decoder uses the cronstrue library to generate plain-English descriptions from any valid 5 or 6-field cron expression. Next run times are calculated using cron-parser, which implements accurate scheduling logic including month boundary handling (months with different day counts) and daylight saving time transitions. All calculations are performed in the user's local timezone by default.
Technical Stack