Cron Every 90 Minutes
Ninety minutes takes two cron lines — the exact interleaved pair with live next runs, or one EventBridge rate rule.
History
Valid expressions you run are kept here — on this device only.
The plain-English description appears here.
| # | UTC | UTC time | DST |
|---|---|---|---|
| Upcoming runs for a valid expression appear here. | |||
—Press ? for shortcuts
Platform variants
Classic cron
Classic cron cannot express this — minute steps cannot cross the hour; install the pair 0 0-21/3 * * * and 30 1-22/3 * * *
Quartz
Quartz cannot express this — no single cron trigger steps 90 minutes; register two triggers: 0 0 0-21/3 * * ? and 0 30 1-22/3 * * ?
AWS EventBridge
Cron expression: rate(90 minutes)
rate() counts a fixed 90 minutes from the schedule's start time.
Kubernetes
Kubernetes cannot express this — a single CronJob cannot step 90 minutes; create one per line: 0 0-21/3 * * * and 30 1-22/3 * * *
GitHub Actions
GitHub Actions cannot express this — one schedule line cannot step 90 minutes; add both 0 0-21/3 * * * and 30 1-22/3 * * *
Also covers: every 1.5 hours
Do it offline:$ (crontab -l; echo "0 0-21/3 * * * /path/to/job"; echo "30 1-22/3 * * * /path/to/job") | crontab -
How to use it
- Install both lines together: 0 0-21/3 * * * covers the on-the-hour legs, 30 1-22/3 * * * the half-past legs between them.
- Point both entries at the same command — the CLI line below appends the pair in one go.
- On EventBridge replace the pair with rate(90 minutes) — a fixed hour and a half from the schedule's start.
Every 90 minutes does not fit one cron line: a minute step wraps inside its field at the hour boundary, so the obvious */90 quietly runs hourly. The honest classic answer is a pair of interleaved lines, both previewed below; EventBridge's rate(90 minutes) covers the intent in a single rule.
Examples
0 0-21/3 * * *describes On the hour, every 3 hours, between 00:00 and 21:00
next 1 2026-08-01T03:00:00.000Z
next 2 2026-08-01T06:00:00.000Z
next 3 2026-08-01T09:00:00.000Z
next 4 2026-08-01T12:00:00.000Z
next 5 2026-08-01T15:00:00.000Z
note Classic cron cannot express "Every 90 Minutes" in one line — these runs preview the stand-in expression "0 0-21/3 * * *", not the exact intent.Line one alone: eight runs a day, three hours apart, from 00:00. Its note says explicitly that this previews half a pair, not a finished schedule.
30 1-22/3 * * *describes At 30 minutes past the hour, every 3 hours, between 01:00 and 22:59
next 1 2026-08-01T01:30:00.000Z
next 2 2026-08-01T04:30:00.000Z
next 3 2026-08-01T07:30:00.000Z
next 4 2026-08-01T10:30:00.000Z
next 5 2026-08-01T13:30:00.000ZLine two fills the gaps: 01:30, 04:30, onward. Interleaved, the merged sequence steps by exactly 90 minutes all day — sixteen firings, not eight.
Every example on this page is executed against the same engine that powers the tool, on every build.
Gotchas worth knowing
Why */90 cannot work
A step never leaves its field: minutes wrap at 59, so */90 matches only minute 0 — hourly — while the read-back claims a 90-minute rhythm. The mismatch is the tell. Two offset lines, 180 minutes apart each, are the smallest exact classic encoding.
Common errors
Field 1 (minute): step 90 is larger than its 0–59 range — only 0 ever matches.- This warning is the page's reason to exist: parse succeeds, description echoes the wish, runs land hourly at :00 — three signals disagreeing. Trust the warning and preview; install the pair or a rate rule.
FAQ
Why do the lines use /3 for a 90-minute interval?
Each line fires every three hours — 180 minutes — offset by half that. Two interleaved combs make one 90-minute sequence; merge the example lists to see it.
Does the pattern stay aligned across midnight?
Yes: 22:30 to 00:00 is exactly 90 minutes, closing the cycle daily — 24 hours splits into sixteen even slots. An interval like 100 minutes would drift.
Can Kubernetes or GitHub Actions do this with one entry?
No — both read plain five-field cron, where no line crosses an hour boundary. Create two CronJobs or two workflow schedule entries; only EventBridge collapses it into one rate rule.