Schedule explainer

Explain cron schedules before they wake production

Paste a 5-field or 6-field cron expression, choose a timezone and see the next occurrences, field breakdown and controlled parser diagnostics. The evaluator runs locally and never schedules a job.

  • No backend scheduler
  • Timezone and DST caveats
  • Strict mode diagnostics

A private review surface for schedules

Cron syntax is compact enough to hide mistakes. This playground expands minutes, hours, day-of-month, month, day-of-week and optional seconds into a readable review surface before a schedule reaches CI, Kubernetes, Cloud Scheduler or a server crontab.

The page does not run jobs, call a backend, fetch project config, store schedules, write URL state or send custom analytics payloads with your expression, timezone, date or occurrence list.

Cron workbench

Start from a preset, edit the expression and compare field semantics with upcoming local and UTC run times.

Clean

Every 15 minutes during a weekday working window in Europe/Warsaw.

Schedule input

Evaluation result

Normalized*/15 9-17 * * 1-5
Next runs8
TimezoneEurope/Warsaw
Duration47 ms

Diagnostics

DST caveat

Local timezone schedules can skip or repeat wall-clock times during daylight saving transitions.

Europe/Warsaw

Field breakdown

Second0

Fixed: runs only when the field equals this value.

Minute*/15

Step: repeats through the field at the configured interval.

step
Hour9-17

Range: accepts values between the lower and upper bound.

range
Day of month*

Wildcard: accepts every value in this field.

wildcard
Month*

Wildcard: accepts every value in this field.

wildcard
Day of week1-5

Range: accepts values between the lower and upper bound.

range

Next occurrences

1 8 Jun 2026, 11:15:00 2026-06-08T11:15:00 8 Jun 2026, 09:15:00 2026-06-08T09:15:00.000Z
2 8 Jun 2026, 11:30:00 2026-06-08T11:30:00 8 Jun 2026, 09:30:00 2026-06-08T09:30:00.000Z
3 8 Jun 2026, 11:45:00 2026-06-08T11:45:00 8 Jun 2026, 09:45:00 2026-06-08T09:45:00.000Z
4 8 Jun 2026, 12:00:00 2026-06-08T12:00:00 8 Jun 2026, 10:00:00 2026-06-08T10:00:00.000Z
5 8 Jun 2026, 12:15:00 2026-06-08T12:15:00 8 Jun 2026, 10:15:00 2026-06-08T10:15:00.000Z
6 8 Jun 2026, 12:30:00 2026-06-08T12:30:00 8 Jun 2026, 10:30:00 2026-06-08T10:30:00.000Z
7 8 Jun 2026, 12:45:00 2026-06-08T12:45:00 8 Jun 2026, 10:45:00 2026-06-08T10:45:00.000Z
8 8 Jun 2026, 13:00:00 2026-06-08T13:00:00 8 Jun 2026, 11:00:00 2026-06-08T11:00:00.000Z

Copyable cron-parser snippet

import { CronExpressionParser } from 'cron-parser/dist/CronExpressionParser';

const expression = "*/15 9-17 * * 1-5";
const interval = CronExpressionParser.parse(expression, {
  currentDate: "2026-06-08T09:00:00.000Z",
  tz: "Europe/Warsaw",
  strict: false,
});

const nextRuns = interval.take(8).map((run) => run.toDate().toISOString());
console.log(nextRuns);

Cron review notes

Five fields and six fields mean different things

Classic cron uses minute, hour, day-of-month, month and day-of-week. Some JavaScript schedulers also support a leading seconds field. This page makes that difference visible instead of guessing.

Dialects are not portable by default

Unix crontab, node libraries, Kubernetes, GitHub Actions and Cloud Scheduler can differ on seconds, aliases, macros, timezones and special characters. Treat this as parser evidence, then verify the target runtime.

Timezone review is part of schedule review

A daily local-time schedule can shift around DST transitions. Compare local and UTC columns before promising exact operational timing.

Use these routes when schedule review connects to dates, release ranges or environment configuration.