Cron every 45 minutes (and why */45 doesn't do it)
Every 45 minutes needs four cron lines, because */45 * * * * only fires at :00 and :45; this page lists them and their combined next runs, in your browser.
0 0-21/3 * * *45 0-21/3 * * *30 1-22/3 * * *15 2-23/3 * * *
0 0 0/3 * * ?0 45 0/3 * * ?0 30 1/3 * * ?0 15 2/3 * * ?
rate(45 minutes)
Next 10 runs (all lines combined)
Calculating in your browser...
- 1
- 2
- 3
At a glance
- Accepts
- Nothing to enter - the schedule is preset on the page
- Outputs
- The expression in Unix, Quartz/Spring and AWS form, plus its next 10 run times
- Where it runs
- Entirely in your browser, on your device
- What leaves your device
- Nothing - what you type stays in this tab
- Limits
- Run times use your browser's timezone or UTC; real schedulers can start a run late
- Account
- Not required - there is no sign-up
- Price
- Free, with no watermark and no usage cap
- Made by
- Visrut
What it means
*/45 * * * * does not run every 45 minutes. Steps restart every hour, so it matches minute 0 and minute 45 only: 10:00, 10:45, 11:00, 11:45. The gaps alternate between 45 and 15 minutes. A true 45-minute cycle repeats every 3 hours (0:00, 0:45, 1:30, 2:15, 3:00), so it takes four crontab lines, one for each minute offset.
When this is the right schedule
Use it when you really need an even 45-minute spacing, for example to match an API's rate window. The four lines below give exactly 32 runs a day, evenly spaced, aligned to midnight.
When to pick something else
Look elsewhere when approximately-every-45-minutes is fine; then 0,45 * * * * is simpler and honest about what it does. Or pick an interval that divides 60 (30) or a whole number of hours.
Things to watch
Why */45 behaves this way
crontab(5) says steps are evaluated only within their own field, giving */23 in the hour field as the example: it runs at hour 0 and hour 23, not every 23 hours. */45 in the minute field is the same: 0 and 45, then the minute counter wraps.
Same trap, other numbers
Any step that doesn't divide 60 evenly drifts: */7 runs at :00, :07 ... :56 and then :00 again, a 4-minute gap. For hours, */5 gives 0, 5, 10, 15, 20 and then 0, a 4-hour gap overnight. Paste one into the checker and it shows the uneven gap.
Use a rate where you can
AWS EventBridge has rate(45 minutes), which counts 45 minutes from the schedule's start instead of matching clock times. Quartz has a SimpleTrigger with a repeat interval for the same purpose; one cron line can't express it.
Frequently asked questions
What does */45 * * * * actually do?
It runs at minute 0 and minute 45 of every hour. The gap from :45 to the next :00 is only 15 minutes.
Can one cron expression run every 45 minutes?
Not in Unix, Quartz or Spring cron, because the minute pattern repeats every 3 hours and differs within that cycle. You need several lines, or a rate-based schedule.
Does the four-line version drift over days?
No. 45 minutes divides 24 hours exactly (32 runs), so the pattern restarts cleanly at midnight every day.