Pikkola Cron Studio, tool No. 16

Say the schedule in a sentence.

A cron expression is five numbers and a promise. This page reads it back: the sentence, each field, and the next ten times it will actually run, on your clock and in UTC. Build one with dropdowns, then take it away in the dialect your platform wants.

Open the studio no upload
5 to 7
fields read
10
runs ahead
6
platforms
0
requests sent
Departure boardlive
0 9 * * 1-5
At 09:00, on weekdays.
01Fri 14 Nov, 09:00in 9h
02Mon 16 Nov, 09:00in 3d
03Tue 17 Nov, 09:00in 4d
04Wed 18 Nov, 09:00in 5d
05Thu 19 Nov, 09:00in 6d
Asia/Seoul10 ahead

Studio

Paste an expression, read what it meant

Everything below updates as you type. The simulation runs against your browser's own clock and time zone rules, not a guess made elsewhere.

At 09:00, on weekdays.

Field Written Means
Next runs

    Builder

    Five dropdowns, one line out

    Pick the parts, watch the expression assemble, then send it up to the studio to see when it runs.

    The five fields
    Expression
    0 9 * * 1-5

    At 09:00, on weekdays.

    Platforms

    The same line in six dialects

    Each card is built from the expression above. Copy takes the whole block, comments included.

    Linux crontab

    # At 09:00, on weekdays.
    0 9 * * 1-5 /usr/bin/env your-script.sh

    Runs on the server's own clock.

    GitHub Actions

    on:
      schedule:
        - cron: '0 9 * * 1-5'

    Actions schedules are UTC.

    AWS EventBridge

    cron(0 9 ? * 1-5 *)

    Six fields, UTC, question mark in one day field.

    Kubernetes CronJob

    spec:
      schedule: "0 9 * * 1-5"

    The controller reads the cluster time zone unless you set spec.timeZone.

    node-cron

    cron.schedule('0 9 * * 1-5', runJob);

    node-cron reads the server's local time zone.

    Celery

    crontab(minute='0', hour='9', day_of_week='1-5')

    Celery beat reads day_of_week with Sunday as 0.

    Syntax

    The whole language, in nine rows

    Cron is small. Almost everything that goes wrong is one of these tokens read the wrong way.

    TokenWhat it doesExample
    *Any value in this field* * * * *
    ,A list. No spaces around the commas0 9,18 * * *
    -A range, both ends included0 9 * * 1-5
    /A step*/15 * * * *
    ?No specific value0 9 ? * 1-5
    LLast day of the month, or the last given weekday0 0 L * *
    #The nth weekday of the month0 0 * * 2#2
    JANMonth and weekday names, three letters, any case0 0 1 JAN *
    7 fieldsSeconds first, and a year at the end0 0 9 * * 1-5 2027

    Why this one

    Reading a schedule should not need a second tab and a guess.

    The next run, not a mnemonic.

    Most cron pages tell you what each position means. This one tells you the date, the hour and how long from now, so a mistake shows up as a time you did not want rather than a rule you misread.

    Your clock and UTC, side by side.

    A server in Frankfurt and a team in Seoul disagree about what 02:30 means. Both readings sit under the expression, and the daylight saving change is applied from the browser's own rules.

    Nothing is sent anywhere.

    The expression stays in the tab. No account, no analytics, no request with your schedule in it. The page works with the network off.

    No account. No upload. No copy of your schedule.

    The expression lives in the address bar and in this tab. Closing it throws the rest away.

    Read the privacy note

    Questions

    Asked with the cursor in the field

    Does this send my expression anywhere?

    No. Parsing, matching and the run simulation all happen in the page. There is no server to send it to, and the content security policy blocks every other origin.

    Which cron dialects does it read?

    Five fields for a standard crontab, six when the first field is seconds (Quartz, Spring, node-cron with seconds), seven when a year is appended. It accepts lists, ranges, steps, names, question marks, L for the last day and 5#2 for the second Friday.

    How do day of month and day of week combine?

    As in Vixie cron: when both are restricted, a day matches if either one matches. Quartz instead wants a question mark in one of them and treats the other alone. This page follows the crontab rule, and says in the tags when both are set.

    What happens on the night the clocks change?

    The simulation uses the browser's time zone database. A run that falls in the hour skipped in spring is skipped; a run in the hour repeated in autumn is listed once. Look at the first run after a change if the job matters.

    How far ahead does it look?

    Eight years, which covers a 29 February and most yearly schedules. With a year field it stops at the last year you wrote.

    Can I send an expression to someone?

    Yes. The address bar keeps the expression as you type, so copying the URL is enough. The language comes along too, not the theme.

    Why is the EventBridge line different?

    EventBridge wants six fields in UTC, a question mark in one of the two day fields, and 0/n instead of */n. The card does the translation, and the note says what changed. Check the time zone before you save the rule.