Cron schedules need a timezone
The same five fields can describe different instants. Check both the expression and the scheduler’s clock rules.
Read the five fields in order
The supported grammar is minute, hour, day of month, month and weekday. Asterisk means every value, a comma forms a list, a dash forms a range and a slash forms a step. The builder intentionally rejects Quartz syntax, seconds, named fields and macros so the preview has a narrow, visible contract.
For example, 0 9 * * 1-5 means 09:00 Monday through Friday in the chosen timezone. It is not inherently 09:00 UTC. Copying it into a scheduler whose zone differs will change the actual execution time.
*/15 * * * * every quarter hour 0 9 * * 1-5 weekday mornings 0 0 29 2 * leap-day midnight
Inspect transitions in UTC and local time
An IANA timezone such as America/New_York carries seasonal offset rules. In spring, some local wall-clock times do not occur; in autumn, some occur twice. The parser applies its own DST behavior, which may not match every cron daemon or hosted scheduler.
Use the upcoming-date preview to compare zoned dates with their UTC instants. For critical jobs, reproduce spring and autumn transitions with the exact scheduler you deploy. A UTC schedule avoids seasonal UTC offsets but changes its local wall-clock hour when daylight time changes.
Two day fields can widen a schedule
This builder follows cron-parser OR semantics when both day of month and weekday are restricted. An expression can run when either field matches, rather than requiring both. Do not use it as an implicit “first Monday” rule.
The tool previews dates only. It does not run jobs, retry failures or ensure exactly-once execution. Production tasks should be idempotent, with explicit monitoring and a plan for delayed or duplicated invocations.
Check a schedule across a daylight-saving boundary
Preview a daily local-time job using the bundled cron-parser 5.x behavior. Compare UTC instants with the named timezone before configuring your scheduler.
Input
30 2 * * * Timezone: America/New_York Start: 2026-03-07T00:00:00Z
Expected output
2026-03-07T07:30:00.000Z 2026-03-08T07:30:00.000Z 2026-03-09T06:30:00.000Z 2026-03-10T06:30:00.000Z 2026-03-11T06:30:00.000Z
In spring the parser adjusts the missing 02:30 wall-clock time. The fall example checks 01:30 across the repeated hour. These are previews from this parser, not an exactly-once execution guarantee; reproduce them in the scheduler you deploy.
| UTC instant | America/New_York |
|---|---|
2026-03-07T07:30:00.000Z | 7 Mar 2026, 02:30:00 GMT-5 |
2026-03-08T07:30:00.000Z | 8 Mar 2026, 03:30:00 GMT-4 |
2026-03-09T06:30:00.000Z | 9 Mar 2026, 02:30:00 GMT-4 |
2026-03-10T06:30:00.000Z | 10 Mar 2026, 02:30:00 GMT-4 |
2026-03-11T06:30:00.000Z | 11 Mar 2026, 02:30:00 GMT-4 |
| UTC instant | America/New_York |
|---|---|
2026-10-31T05:30:00.000Z | 31 Oct 2026, 01:30:00 GMT-4 |
2026-11-01T05:30:00.000Z | 1 Nov 2026, 01:30:00 GMT-4 |
2026-11-02T06:30:00.000Z | 2 Nov 2026, 01:30:00 GMT-5 |
2026-11-03T06:30:00.000Z | 3 Nov 2026, 01:30:00 GMT-5 |
2026-11-04T06:30:00.000Z | 4 Nov 2026, 01:30:00 GMT-5 |
Keep the references close
Primary documentation supports the technical details above. Check it alongside the behavior of your own runtime and deployment.
Open Cron expressions →