DevKit
Generator

Cron Expression Generator

Build cron expressions visually with a human-readable preview.

Last updated: August 2026

0 * * * *

At minute 0 of every hour

Share:

Was this tool helpful?

Reading a cron expression

Cron is the scheduler that has run background jobs on Unix systems for decades. A standard cron expression has five fields separated by spaces, in this order: minute, hour, day of month, month, and day of week. Each field accepts a number, a list, a range, or a step. The hard part is not writing the expression, it is reading it correctly a month later, which is exactly what a generator helps with.

*  *  *  *  *
|  |  |  |  |
|  |  |  |  +-- day of week (0-6, Sunday = 0)
|  |  |  +----- month (1-12)
|  |  +-------- day of month (1-31)
|  +----------- hour (0-23)
+-------------- minute (0-59)

Steps, ranges, and the examples that matter

The step syntax is where most confusion lives. */5 in the minute field means every 5 minutes, not at minute 5. A single number means exactly that value. Here are expressions you will reach for often:

*/5 * * * *     every 5 minutes
0 * * * *       at the top of every hour
30 2 * * *      every day at 02:30
0 9 * * 1-5     at 09:00 Monday through Friday
0 0 1 * *       at midnight on the 1st of each month

One real gotcha: when both day-of-month and day-of-week are set to something other than *, standard cron treats them as an OR, so the job runs when either matches. Keep one of them as a wildcard unless you truly mean that OR behavior.

Questions that come up

Which time zone does cron use? Classic system cron runs in the server local time zone, so a schedule can shift an hour across daylight saving changes. Many managed schedulers let you pin a time zone explicitly; if yours does, set it so 09:00 means 09:00 all year.

Why does my five-field expression fail in this tool?Some platforms add a seconds field at the front (six fields) or a year field at the end. Quartz-style schedulers in particular use six or seven fields. Confirm how many fields your runner expects before copying an expression over.

Can I run a job every 90 minutes? Not cleanly, because cron fields do not span across the hour boundary. A step like */90 in the minute field is invalid. You would schedule the specific minutes and hours, or run every 30 minutes and skip in code.