Free Cron Expression Tester
Type a cron schedule to read it in plain English and see its next five runs, in UTC or your own time zone.
Minute
Hour
Day
Month
Weekday
What is a Cron Expression Tester?
A cron expression is five fields, minute, hour, day of month, month and day of week, that tell a scheduler when to run a job. This tester reads an expression in plain English and lists the next five times it will fire.
Run times come from cron-parser, which follows Vixie cron, the version behind most Linux crontabs, and also understands seconds, L, # and @ shortcuts. The plain-English reading comes from cronstrue. Times can be shown in UTC, as most servers and CI systems run, or in your own time zone.
Key Features
The Next Five Runs, Not Just a Description
A list of real dates and times shows mistakes a description hides, such as a job that runs on Fridays as well as the 13th.
UTC or Your Own Time Zone
Switch between UTC, which servers and CI runners usually use, and your browser’s zone, including daylight saving changes.
Extended Syntax Understood
A leading seconds field, L for the last day, # for the nth weekday, names like MON and JAN, and @daily-style shortcuts all work.
Errors Point at the Field
A value out of range, the wrong number of fields or a date that never exists is reported specifically, with the allowed range.
Runs in Your Browser
Expressions are parsed locally, so job names and schedules from private systems aren’t uploaded.
Perfect for everyone
- Developers writing crontabs
- DevOps engineers scheduling Kubernetes CronJobs and CI workflows
- Anyone checking when a scheduled job will really run
How to Use the Cron Expression Tester
Type the expression, pick a time zone, and check the next runs.
Type or Paste the Expression
Enter five fields separated by spaces, or six with seconds first, or a shortcut such as @daily. The reading and runs update as you type.
Choose UTC or Your Time Zone
Use UTC for servers, containers and CI systems, which usually run in UTC. Use your time zone for a crontab on your own machine.
Read the Plain-English Line
Check that the sentence matches what you meant, such as Monday through Friday rather than every day.
Check the Next Five Runs
The list shows real dates and times. If the first run is further away than you expected, look again at the day fields.
Cron Expressions and Their Next Runs
Every answer is the tester’s output in UTC mode, computed from Sunday 25 October 2026 at 00:00 UTC. Read the expression and guess the first run before revealing it.
“*/15 9-17 * * 1-5”
“0 9 * * 1-5”
“0 0 13 * 5”
“0 0 L * *”
“0 0 * * 5#3”
“@daily”
“30 0 9 * * MON”
“0 */6 * * *”
“60 * * * *”
“* * * *”
Cron Fields and Operators
Five fields, read left to right, and four operators cover nearly every schedule. These are the rules the tester applies.
Minute, 0 to 59
The first field is the minute within the hour. 0 means on the hour and 30 means half past.
“Which minute does 0 9 * * * run at?”
Hour, 0 to 23
The second field uses a 24-hour clock, so 13 is 1 p.m. and 0 is midnight.
“What time is hour 18?”
Day of Month, 1 to 31
The third field picks dates. A day that doesn’t exist in a month, such as the 31st in April, is simply skipped that month.
“Does 0 0 31 * * run in April?”
Month, 1 to 12 or JAN to DEC
The fourth field picks months by number or by three-letter name. 1-3 is the first quarter.
“Which months does 1-3 cover?”
Day of Week, 0 to 7 or SUN to SAT
The fifth field picks weekdays, where both 0 and 7 mean Sunday. 1-5 is Monday to Friday.
“Which day is 7?”
Star, Comma and Dash
A star means every value, a comma lists values, and a dash gives a range. 1,15 is the 1st and 15th, and 9-17 is nine to five.
“What does 1,15 mean in the day field?”
Slash for Steps
A slash steps through a range: a star with /15 in the minute field runs every 15 minutes. Steps restart at each hour or day.
“Does */25 in the minute field run evenly every 25 minutes?”
Day of Month OR Day of Week
When both day fields are restricted, a day matching either one runs. 0 0 13 * 5 runs on every Friday and on every 13th.
“Is 0 0 13 * 5 only Friday the 13th?”
L and the Hash Mark
L in the day field means the last day of the month, and 5#3 in the weekday field means the third Friday. They’re extensions, not standard crontab.
“Which writes the second Monday?”
Shortcuts and Seconds
@hourly, @daily, @weekly, @monthly and @yearly replace common expressions. Some schedulers add a seconds field at the front, making six fields.
“What is @weekly as five fields?”
Cron Expressions for Common Schedules
Copy one of these as a starting point, then paste it above to check the next runs in your time zone.
Every Five Minutes
A step in the minute field fires at :00, :05, :10 and so on. It suits health checks and queue polling.
“How do you run a job every five minutes?”
Every Hour, on the Hour
A zero minute with stars elsewhere runs at the top of every hour. Shift the minute to spread load, such as 17 for quarter past.
“How do you run a job hourly?”
Every Night at 2:30
A fixed minute and hour run once a day. Nightly backups and cleanups usually live in the small hours.
“How do you run a job at 02:30 every day?”
Weekdays at Nine
A weekday range in the last field skips Saturday and Sunday. Reports and reminders often use this.
“How do you run a job at 09:00 Monday to Friday?”
Every Sunday at Midnight
A single weekday value runs once a week. Both 0 and 7 mean Sunday.
“How do you run a job weekly on Sunday at midnight?”
First Day of Every Month
Day 1 in the third field runs at the start of each month. Invoices and monthly rollups commonly start here.
“How do you run a job at 06:00 on the first of each month?”
Twice a Day
A comma in the hour field lists both times. This runs at 08:00 and 20:00.
“How do you run a job at 08:00 and 20:00?”
Every 15 Minutes During Business Hours
Combine a minute step with hour and weekday ranges. The last run of the day is 17:45.
“How do you poll every quarter hour from 9 to 5 on weekdays?”
Quarterly
List the first month of each quarter in the month field. This runs on 1 January, April, July and October.
“How do you run a job at the start of each quarter?”
Last Friday of the Month
Standard crontab can’t say this, but schedulers that support L accept 5L in the weekday field. Otherwise, run every Friday and check the date in the script.
“What do L-aware schedulers accept for the last Friday?”
Cron Dialects You’ll Meet
Schedulers share the five-field idea but differ in the details. Check which one runs your job.
Linux crontab
Vixie cron and cronie read five fields in the server’s local time zone, with the OR rule for the two day fields. Shortcuts such as @reboot also work there.
Kubernetes CronJob
Uses standard five-field syntax and, since version 1.27, a timeZone field. Without it, schedules follow the controller manager’s time zone.
GitHub Actions
The schedule trigger takes five fields in UTC, and the shortest interval is every five minutes. Busy periods can delay scheduled runs.
AWS EventBridge
Uses six fields, minutes through year, and requires a question mark in either day-of-month or day-of-week. Expressions copied from crontab need converting.
Quartz and Spring
Java schedulers put seconds first and use a question mark for the unused day field. The tester reads the seconds field but not the question mark.
systemd Timers
systemd uses its own OnCalendar format, such as Mon..Fri *-*-* 09:00:00, not cron fields. Use the systemd OnCalendar previewer for those.
Cron Mistakes to Avoid
Most cron surprises come from time zones, the two day fields, and how steps restart.
Forgetting the Server Runs in UTC
A job written for 9 a.m. runs at 9 a.m. UTC on most servers, which may be the middle of the night for you. Check both zones here.
Setting Both Day Fields
Restricting both day-of-month and day-of-week runs on days matching either, not both. Leave one as a star unless you mean OR.
Expecting Steps to Run Evenly
*/25 in the minute field runs at 0, 25 and 50, then again at 0, so the gaps are 25, 25 and 10 minutes.
Daylight Saving Gaps
A 2:30 a.m. job may not run on the night clocks go forward, or run twice when they go back. Schedule outside 1 a.m. to 3 a.m. local time, or use UTC.
Every Minute by Accident
A star in the minute field runs the job 60 times an hour. For hourly, put 0 in the minute field.
Day 31 in Short Months
0 0 31 * * skips every month without a 31st. Use L for the last day where your scheduler supports it.
Copying Between Dialects
A Quartz or EventBridge expression has extra fields and question marks that crontab rejects. Convert it field by field.
Overlapping Runs
Cron starts the next run even if the last one hasn’t finished. Use a lock such as flock, or Kubernetes’ concurrencyPolicy, for long jobs.
Time Zones and Cron
Cron fields say nothing about time zones, so the scheduler’s own clock decides when a job fires.
Crontab Uses the Server’s Zone
A Linux crontab runs in the system time zone unless the file sets CRON_TZ, which cronie supports. Check timedatectl on the server.
Containers Usually Run in UTC
Docker images rarely set a time zone, so cron inside a container fires in UTC. Set TZ in the image if a job must follow local time.
Kubernetes Has a timeZone Field
CronJob’s spec.timeZone takes an IANA name such as Europe/Berlin. Without it, the schedule follows the controller manager’s zone.
CI Schedules Are UTC
GitHub Actions and most hosted CI systems read cron in UTC with no zone option. Convert your local time before writing the expression.
UTC Avoids Daylight Saving Surprises
In UTC, every day has exactly 24 hours, so jobs never skip or double. Convert to local time only when a human-facing deadline needs it.
Watch the Offset Change
A job at 14:00 UTC is 10:00 in New York in summer and 09:00 in winter. The My time zone view shows the shift on the dates it happens.
When to Test a Cron Schedule
Before a schedule goes live, and whenever a job runs at the wrong time.
Writing a Crontab Entry
Check the next runs before saving with crontab -e, so a backup or cleanup job fires when you expect.
Scheduling a Kubernetes CronJob
Confirm the schedule in UTC, the usual cluster zone, and compare it with your local working hours.
Setting Up a CI Workflow
Test a GitHub Actions schedule so nightly builds run after the day’s merges, not in the middle of them.
Explaining an Inherited Schedule
Paste an expression from an old server and read it in plain English before changing anything.
Debugging a Missed Run
Compare the listed runs with your logs to see whether the schedule or the job itself was wrong.
Planning Maintenance Windows
Make sure batch jobs avoid business hours, backups and deploy windows in every time zone you serve.
Learning Cron Syntax
Change one field at a time and watch both the description and the run list respond.