Jenkins cron - syntax, examples & the H modifier
At 04:30, every day.
Next runs · UTC
- —
- —
- —
- —
- —
Calendar
September 2026 · UTC
0 runs
About this tool
H “hash” modifier that spreads job firings across the available range - preventing the top-of-the-hour load spike that hits when every Jenkins job uses 0 * * * *. It does NOT support L, W, ? or #.Jenkins cron field syntax
MIN HOUR DOM MONTH DOW
H * * * *
Field Range
minute 0-59
hour 0-23
day-month 1-31
month 1-12 or JAN-DEC
day-week 0-7 or SUN-SAT (0 and 7 = Sunday)All standard cron operators (*, ,, -, /) work. Comment lines start with #.
The Jenkins H modifier
Jenkins-specific. H means “a value chosen by hash of the job name” - deterministic per-job but spread across the range. Common patterns:
H * * * *- every hour at a stable random minute.H/15 * * * *- every 15 minutes, starting at a hash-determined offset.H 2 * * *- daily at 02:H (some random minute between 02:00 and 02:59).H H * * *- daily at a hash-determined hour and minute.H(0-30) * * * *- random minute in the first half of the hour.H 0 * * 1-5- every weekday at midnight (just hash on the minute).
H in the day-of-month or month field is valid but rarely useful - those values change rarely so hashing has limited spreading effect.
Pipeline triggers block
pipeline {
agent any
triggers {
cron('H/15 * * * *')
}
stages { ... }
}
// Multi-line cron for monthly + nightly:
pipeline {
agent any
triggers {
cron('''
H 2 * * * // nightly at 02:H
H H 1 * * // monthly on the 1st at hash time
''')
}
}Freestyle 'Build periodically'
In the Freestyle job UI, paste your cron lines directly into the “Build periodically” box. Jenkins validates them on save and shows the next firing time in the help text below the field. Comments and TZ prefixes are accepted.
Jenkins cron pitfalls
- SCM polling vs. cron - both can fire a build. Use a
whenblock to avoid duplicate runs. - JVM timezone - defaults to the controller JVM's timezone. Set via TZ prefix or JVM property.
- Concurrency - by default a single job doesn't run concurrently; subsequent triggers queue. Set the build to allow concurrency if you want overlap.
- No L/W/# - use multi-cron or a runtime date check inside the build.
Examples
- 0 18 * * *Every day at 18:00
- 0 */5 * * *Every 5 hours
- 0 18 * * 1-5Weekdays at 18:00
- 0 0 1 * *Once a month, on the 1st at midnight
Cheatsheet
Full cheatsheet| Field | Req. | Range | Wildcards |
|---|---|---|---|
| minute | yes | 0-59 | , - * / |
| hour | yes | 0-23 | , - * / |
| day of month | yes | 1-31 | , - * / |
| month | yes | 1-12 or JAN-DEC | , - * / |
| day of week | yes | 0-6 or names; some dialects use 0-7 or 1-7 — see Dialects | , - * / |
Frequently asked questions
Syntax
What does the H modifier do in Jenkins cron?
H is Jenkins' hash modifier. It uses a hash of the job name to deterministically pick a value within a range - so a job with H/15 * * * * runs every 15 minutes but at a stable, hash-derived minute (e.g., 7, 22, 37, 52) instead of 0/15/30/45. Spreads load across many jobs without coordination.
Can I add comments to a Jenkins cron expression?
Yes - lines starting with # are treated as comments and ignored. Useful when configuring multi-line cron schedules in a Freestyle job's 'Build periodically' field or a pipeline triggers block.
How many fields does Jenkins cron use?
Jenkins uses five fields: minute, hour, day of month, month, and day of week. It has no seconds or year field.
Jenkins dialect referenceTiming
How do I run a Jenkins job once per hour without a load spike?
Use H * * * *. Jenkins chooses one stable minute for the job instead of scheduling every job at minute zero.
How does H/15 * * * * behave in Jenkins?
It runs every 15 minutes from a stable hash-derived offset. The offset spreads jobs across the hour and remains deterministic for that job.
Jenkins H referenceCan Jenkins limit H to part of a field range?
Yes. H(0-30) * * * * picks a stable minute from 0 through 30, allowing load spreading within a bounded window.
Can Jenkins use a fixed cron time instead of H?
Yes. 0 9 * * 1-5 runs at exactly 09:00 on weekdays, but many identical fixed schedules can create a simultaneous load spike. Expression: 0 9 * * 1-5
Days and months
Why doesn't Jenkins cron support L?
Jenkins uses five cron fields plus its H hash modifier, but not Quartz-style L, W, ?, or #. For month-end, trigger daily and gate the work at runtime by checking whether tomorrow falls in the next month; this handles leap years safely.
How do I run a Jenkins job on weekdays?
Use H 9 * * 1-5 to run at a stable minute during the 09:00 hour from Monday through Friday.
How does Jenkins combine day-of-month and day-of-week?
Jenkins uses AND semantics when both day fields are restricted. This differs from Vixie cron, which uses OR semantics.
Dialect day rulesTimezones and DST
How do I set the timezone for a Jenkins cron?
Prefix the cron line with TZ=America/New_York (Jenkins 2.x supports per-trigger TZ). Or set the JVM timezone via -Duser.timezone=... on the controller. By default, Jenkins uses the controller's JVM timezone.
Platforms
Does Jenkins support cron aliases such as @daily?
Yes. Jenkins supports calendar aliases and hashes their timing to spread load; @midnight selects a stable time from 00:00 through 02:59.
Where does cron go in a Jenkins declarative pipeline?
Put it in the triggers directive as cron('H/15 * * * *'). Jenkins then evaluates the five-field schedule for that pipeline job.
Debugging
Why is a Jenkins cron trigger not running when expected?
Check the controller timezone, saved trigger configuration, field count, and next-run preview. Also verify that another build is not queued or already occupying the job.
Jenkins pitfallsCrontap
Can Crontap replace a Jenkins HTTP scheduling trigger?
Crontap can invoke an HTTP endpoint on a cron schedule, but Jenkins-specific H must be replaced with a concrete minute before handoff.
Write the cron here. Run it on Crontap.
Point Crontap at any URL. Pick any cron. Done.
WordPress, Shopify, Railway, Cloud Run, Vercel, HubSpot, Ghost, your own box. If it answers HTTP, Crontap can drive it on a clock you can read, in the timezone that actually matters, and page you when something breaks.
1.9k+ teams · Free forever tier · No credit card