Skip to main content

Cron Syntax

How to write cron expressions for recurring tasks.

Format

A cron expression has 5 fields:

* * * * *
minute hour day month weekday
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_seconds to any value from 0 (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.