Free tool
Azure Functions cron expression generator and validator
Build a schedule with a few choices or paste an expression. You get the six-field NCRONTAB expression, what it means in words, and exactly when it runs next, in UTC and in your time zone.
Build a schedule
In words
Next 10 runs
In code
Or keep the schedule in an app setting and change it without a new deployment:
Common Azure Functions cron expressions
| Expression | Meaning | Try |
|---|---|---|
| 0 */5 * * * * | Every 5 minutes | |
| 0 */15 * * * * | Every 15 minutes | |
| 0 0 * * * * | Every hour | |
| 0 0 */2 * * * | Every 2 hours | |
| 0 0 2 * * * | At 02:00, every day | |
| 0 30 8 * * 1-5 | At 08:30 · Days of the week: Monday – Friday | |
| 0 0 9 * * 1 | At 09:00 · Days of the week: Monday | |
| 0 0 0 1 * * | At 00:00 · Days of the month: 1 | |
| 0 */5 8-17 * * 1-5 | Every 5 minutes between 08:00 and 17:59 · Days of the week: Monday – Friday | |
| */30 * * * * * | Every 30 seconds |
The six fields of an NCRONTAB expression
| # | Field | Allowed values |
|---|---|---|
| 1 | Second | 0–59 |
| 2 | Minute | 0–59 |
| 3 | Hour | 0–23 |
| 4 | Day of the month | 1–31 |
| 5 | Month | 1–12 or Jan–Dec |
| 6 | Day of the week | 0–6 (0 = Sunday) or Sun–Sat |
Special characters: * any value · , list (1,15) · - range (1-5) · / step (*/5). Names of days and months are in English.
Common mistakes with timer triggers
- /Six fields, not five. Azure starts with seconds, so the Linux cron */5 * * * * becomes 0 */5 * * * *.
- /Azure runs timer triggers in UTC. For local time, set the WEBSITE_TIME_ZONE app setting, which not every hosting plan supports.
- /If you set both the day of the month and the day of the week, both have to match. In Linux cron, either one is enough.
- /With a local time zone, runs around the daylight saving change can be skipped or repeated. Avoid scheduling important jobs between 02:00 and 03:00.
- /Do not leave RunOnStartup = true in production. The function then also runs on every restart and scale-out.
- /Keep the schedule in an app setting, for example TimerTrigger("%ImportSchedule%"), so you can change it without a new deployment.