Cron Syntax
How to write cron expressions for recurring tasks.
Format
A cron expression has 5 fields:
| Field | Values | Description |
|---|---|---|
| Minute | 0-59 |
Minute of the hour |
| Hour | 0-23 |
Hour of the day (UTC) |
| Day | 1-31 |
Day of the month |
| Month | 1-12 |
Month of the year |
| Weekday | 0-6 |
Day of the week (0 = Sunday) |
Special Characters
| Character | Meaning | Example |
|---|---|---|
* |
Any value |
* * * * * = every minute
|
, |
List |
0,30 * * * * = at :00 and :30
|
- |
Range |
0 9-17 * * * = every hour 9am-5pm
|
/ |
Step |
*/15 * * * * = every 15 minutes
|
Common Examples
| Expression | Meaning |
|---|---|
* * * * *
|
Every minute |
0 * * * *
|
Every hour |
0 0 * * *
|
Every day at midnight UTC |
0 6 * * *
|
Every day at 6:00 AM UTC |
0 9 * * 1-5
|
Weekdays at 9:00 AM UTC |
0 0 * * 0
|
Every Sunday at midnight |
0 0 1 * *
|
First day of every month |
*/15 * * * *
|
Every 15 minutes |
0 */2 * * *
|
Every 2 hours |
30 4 * * *
|
Every day at 4:30 AM UTC |
Timezone
All cron expressions run in UTC. Convert your local time to UTC when setting up tasks.
For example, if you want a task to run at 9:00 AM CET (Central European Time):
- CET is UTC+1, so 9:00 AM CET = 8:00 AM UTC
- Use:
0 8 * * *
Minimum Interval
The minimum interval depends on your plan:
| Plan | Minimum |
|---|---|
| Free | Every hour (0 * * * *) |
| Pro |
Every minute (* * * * *)
|
Jitter
When many tasks share the same schedule (for example, hundreds of tasks all set to 0 * * * *), they would otherwise all
fire at the exact top of the hour — hammering your backend and creating a load spike.
Jitter
smooths this out by delaying each run by a small random offset.
A task with jitter_seconds
set to 30
runs at a random point between the
scheduled time and 30 seconds after it. The offset is re-rolled on every run, so repeated
runs of the same task spread evenly rather than always landing on the same second.
- Free plans: a fixed 15 seconds of jitter is always applied. Free tasks run hourly at most, so this is well within the interval and keeps shared schedules from spiking. This is not configurable.
-
Pro plans:
jitter is opt-in. Set
jitter_secondsto any value from0(disabled, the default) up to just under your task's interval (maximum 3600). A one-minute task can jitter up to 59 seconds.
Jitter only applies to recurring cron tasks. One-time scheduled tasks run at their exact time, and retries keep their own backoff timing. Because runs stay within the scheduled minute (or the configured window), jitter is fully consistent with Runlater's minute-level precision.