Cron expression explainer
Runs in your browser; nothing is uploaded
Type a cron expression to read it in plain words and see the next times it runs. Works with Linux crontab, GitHub Actions, Kubernetes CronJobs and Spring's six-field cron.
minute · hour · day of month · month · day of week
Every 15 minutes.
| Field | Written | Allows |
|---|---|---|
| Minute | */15 | 0, 15, 30, 45 |
| Hour | * | any |
| Day of month | * | any |
| Month | * | any |
| Day of week | * | any |
Common schedules
Next runs
…
Servers usually run cron in UTC, and GitHub Actions always does. Check which time zone yours uses.
How cron expressions work
A cron expression is a schedule written as five fields: minute, hour, day of the month, month and day of the week. 30 2 * * 1 means minute 30 of hour 2, any day of the month, any month, on Mondays: 02:30 every Monday. Crontab on Linux, GitHub Actions schedule, Kubernetes CronJobs and most job schedulers use this format.
Each field takes a value, a list (1,15), a range (1-5), a step (*/15 means every 15th value from the start, 9-17/2 every second hour from 9 to 17) or * for any value. Months and days can be written as names: JAN, MON-FRI. Day of the week runs from 0 (Sunday) to 6, and 7 is Sunday too.
One rule surprises people: when both day of the month and day of the week are restricted, cron runs on days matching either one, not both. 0 0 13 * 5 runs on every 13th and on every Friday, not only on Friday the 13th. The explanation spells this out with "or".
Spring and Quartz use six fields, with seconds first, and ? for a day field that isn't used. This tool reads those too. Quartz's L, W and # aren't standard cron and are reported as such.
How to use this tool
- 1Type or paste an expression, or pick a common schedule.
- 2Read what it means in words, and check the field table for exactly which values each field allows.
- 3Check the next runs, in your time or in UTC, which is what most servers and GitHub Actions use.
- 4Copy the expression, or share a link to it.
Troubleshooting
- Cron has 5 fields
- Count the fields: a missing or extra one is the most common mistake. Six fields are read as seconds first (Spring, Quartz).
- The job runs at the wrong hour
- The server's cron is probably in UTC. Switch Next runs to UTC to see the times it uses.
- It runs on more days than expected
- Both day fields are restricted, so a day matching either one runs. Set one of them to
*.
Frequently asked questions
What does */5 mean?
Every 5th value of the field, starting from its lowest: in the minute field, minutes 0, 5, 10 and so on to 55.
How do I run a job every 30 seconds?
Standard cron can't; its smallest unit is a minute. Spring and Quartz can, with a seconds field: */30 * * * * *.
Can testingapis.com check my API on a schedule?
Yes: Monitors and scheduled API test runs check your endpoints from our servers and alert you when they fail.