Cron expressions are one of those things that should be simple but somehow never are. Is 0 */2 * * * every 2 hours or every 2 minutes? Does 1-5 in the day-of-week field mean Monday through Friday or Sunday through Thursday? And what exactly does L mean again?
Instead of guessing and waiting to see if your cron job fires at the right time, use the Cron Expression Generator to build and verify your schedules visually.
What This Tool Does
Visual Field Editor — Click through each of the 5 cron fields (minute, hour, day of month, month, day of week) with dropdown selectors. No memorizing field positions or valid ranges.
11 Common Presets — One-click presets for the schedules you actually use: every minute, every 5 minutes, hourly, daily at midnight, weekdays at 9 AM, weekly on Monday, monthly on the 1st, quarterly, twice daily, every 6 hours, and yearly on January 1st.
Plain English Description — Every expression is translated into readable English so you can verify it means what you think it means. 0 9 * * 1-5 shows as “At 09:00 on every day-of-week from Monday through Friday.”
Next 5 Runs — See exactly when your cron job will fire next. No more deploying a schedule and waiting to see if it triggers at the right time. This is probably the most useful feature — it catches off-by-one errors and timezone confusion before they hit production.
Copy Button — One click copies the expression to your clipboard, ready to paste into your crontab, GitHub Actions workflow, or Spring @Scheduled annotation.
Cron Syntax Quick Reference
A cron expression has 5 fields separated by spaces. In order: minute (0-59), hour (0-23), day of month (1-31), month (1-12), and day of week (0-6, where 0 is Sunday). The asterisk * means “every,” a comma separates individual values, a hyphen defines ranges, and a slash sets intervals.
For example, 30 8 * * 1 means “at 8:30 AM every Monday.” And 0 */4 * * * means “every 4 hours, on the hour.”
Real-World Examples
Running database backups nightly? 0 2 * * * — every day at 2 AM. Sending a weekly report email? 0 9 * * 1 — every Monday at 9 AM. Clearing temp files every 6 hours? 0 */6 * * *. Processing batch jobs on the first of each month? 0 0 1 * *.
I use cron expressions constantly with Spring Boot’s @Scheduled, Kubernetes CronJobs, and GitHub Actions workflows. Having a quick way to verify the expression before deploying saves real time and prevents those “why didn’t my batch job run last night” surprises.
Try It Now
Open the Cron Expression Generator, pick a preset or build your own expression, and verify the next run times before deploying.
FAQ
Does this support the 6-field or 7-field cron format? This tool uses the standard 5-field Unix cron format. Some systems (like Quartz Scheduler used in Java) add a seconds field or a year field — those aren’t covered here. For most use cases (crontab, Kubernetes CronJobs, GitHub Actions), 5 fields is what you need.
Are the “next run” times accurate? Yes, the next 5 runs are calculated based on the current time in your browser’s timezone. Keep in mind that your server’s timezone may differ — always verify your server’s timezone setting matches what you expect.
Can I use this for GitHub Actions cron schedules? Yes. GitHub Actions uses standard 5-field cron syntax in the schedule trigger. One thing to note: GitHub Actions cron runs in UTC, so adjust your hours accordingly if your local timezone differs.
What does the asterisk (*) mean? It means “every.” So * * * * * means every minute of every hour of every day. In context, 0 * * * * means “at minute 0 of every hour” — i.e., once per hour on the hour.
Can I test cron expressions for past dates? The tool shows future runs only, calculated from the current time. For historical analysis, you’d need a different approach like checking system logs (grep CRON /var/log/syslog).