Cron Expression Parser

Parses a standard 5-field cron expression, shows each field separately and works out the next run times. Every calculation runs in your browser.

Last updated:

Cron Expression
Order: minute hour day-of-month month day-of-week. E.g. 0 9 * * 1-5.
Presets

Results

Field breakdown

Minute
0
Hour
9
Day of month
*
Month
*
Day of week
1-5

Next 5 runs

    Times are shown in your browser's local time zone.

    When this parser earns its keep

    Auditing schedules you did not write

    A crontab is compressed intent, and the intent rarely survives in a comment next to it. Expanding each field and previewing the next runs turns "when does this actually fire?" from folklore into fact.

    Before scheduling anything between 01:00 and 03:00

    Twice a year, wall clocks in DST regions either skip or repeat an hour, and cron schedules sitting in that window inherit the chaos. The worked example below shows what happens to an innocent Sunday job.

    Reviewing a Kubernetes CronJob manifest

    A schedule that parses but means something else fails in the quietest possible way: the job just runs at the wrong times. Checking the next five runs before applying the manifest catches misread step values and day fields early.

    Worked example: the Sunday 02:30 job that skips a week

    A weekly maintenance task is scheduled as 30 2 * * 0 on a host in America/New_York. Most of the year this is fine. In March it is not.

    1. Field by field: minute 30, hour 2, any day of month, any month, day-of-week 0; Sundays at 02:30.
    2. US daylight saving time starts on the second Sunday of March; in 2026 that is March 8.
    3. On that night the local clock jumps from 02:00 straight to 03:00, so 02:30 never occurs.
    4. What happens next varies: vixie-cron heirs run the job right after the jump, simpler schedulers skip the week entirely.
    5. The reverse hour in November is no safer: 01:30 occurs twice, and only some implementations deduplicate the second pass.

    The robust fix is boring: keep recurring jobs out of the 01:00-03:00 local window, or schedule them in UTC where no jump exists. If the business genuinely requires local wall-clock time, pin the behaviour down explicitly with Kubernetes' spec.timeZone and test the two transition nights instead of hoping.

    Four mistakes worth avoiding

    Leaving the every-minute test schedule in place

    * * * * * is the standard way to smoke-test a job, and forgetting to change it back is the standard way to send 1,440 emails a day. Preview the parsed meaning after editing, not just before.

    Expecting 0 0 31 * * to run monthly

    Day-of-month 31 matches only months that have 31 days, which is seven months a year. February never qualifies. A true month-end job belongs on day 1 with the logic shifted, or on a scheduler that understands calendar arithmetic.

    Writing day-of-week 7

    POSIX defines the field as 0-6 with 0 as Sunday. Many implementations also accept 7, but not all, and a parser that rejects it does so at load time on the production host rather than on your laptop. Portable crontabs use 0.

    Pasting a six-field Quartz expression

    Quartz cron starts with a seconds field. Dropped into a five-field crontab, every value shifts one position: seconds become minutes, minutes become hours. The result usually still parses, which is exactly the problem.

    Tools commonly used alongside this one

    • Epoch / Unix Timestamp Converter Convert Unix epoch timestamps to readable dates and back. Seconds and milliseconds are auto-detected.
    • Kubernetes Resource Budget Calculator Estimate how many nodes you need, your packing efficiency, and the projected monthly cost from pod requests and node size.
    • Hash Generator (SHA) Compute SHA-1, SHA-256, SHA-384 and SHA-512 digests of text instantly. Via the Web Crypto API, in the browser.
    • HTML / Entity Encoder-Decoder Encode text to HTML entities or decode it back. Escape special characters to prevent XSS; in the browser, no signup.
    • HTML Viewer Paste HTML source and preview it live instantly. In a sandboxed, isolated frame; scripts are disabled for safety.

    Frequently Asked Questions

    What are the five fields of a cron expression?

    A standard cron expression has five fields, left to right: minute (0-59), hour (0-23), day of month (1-31), month (1-12) and day of week (0-6, 0 = Sunday). Each field can hold a star (*), a single value, a range (1-5), a list (1,3,5) or a step (*/15).

    Which cron format does a Kubernetes CronJob use?

    A Kubernetes CronJob uses standard 5-field Unix cron syntax in its schedule field. There is no seconds field. The time zone defaults to that of the kube-controller-manager; an IANA time zone can be set via the spec.timeZone field.

    What happens when day-of-month and day-of-week are both restricted?

    When neither field is a star, standard cron combines them with OR logic: the job runs when the day of month OR the day of week matches. This is a common misunderstanding and can cause a job to run more often than expected.

    What does */15 mean?

    The slash is a step value. In the minute field, */15 means "start at 0, every 15 minutes" — that is 0, 15, 30 and 45. */5 means every five units, and 10-30/5 matches between 10 and 30 in steps of five.

    Why are the next run times shown in local time?

    This tool computes the next runs in your browser's local time zone so they are easy to read. When a CronJob actually fires in production depends on the cluster's time zone or spec.timeZone — do not conflate the two.