CodeKitHub
Codetools

Cron Expressie Generator

Laatst bijgewerkt:

Een cron-expressie is een string met vijf velden (minuut, uur, dag-van-de-maand, maand, dag-van-de-week) die een scheduler zoals Unix cron, crontab, of een CI/CD-pipeline precies vertelt wanneer een taak moet draaien — bijvoorbeeld `*/15 9-17 * * MON-FRI` betekent "elke 15 minuten, tussen 9 en 17 uur, van maandag tot en met vrijdag." Deze tool werkt beide kanten op: bouw een schema met eenvoudige dropdowns en krijg de cron-string, of plak een bestaande cron-expressie en zie direct een uitleg in gewone taal plus de volgende 5 keer dat hij daadwerkelijk zal draaien. Het volgt de standaard 5-veld POSIX/Vixie cron-syntax gebruikt door Unix, Linux crontab, en de meeste taakschedulers — zie de crontab(5) man page voor de canonieke specificatie. Alles draait lokaal in je browser; niets wat je typt wordt ergens geüpload.

Description
Next 5 runs
    Builder
    Minute
    Hour
    Day of month
    Month
    Day of week
    Syntax legend
    • * — any value
    • , — value list separator (e.g. 1,3,5)
    • - — range of values (e.g. 1-5)
    • / — step values (e.g. */15 = every 15)

    Wat is deze tool?

    Een cron-expressie is een compacte, vijf-veld schemastring — `minuut uur dag-van-de-maand maand dag-van-de-week` — gebruikt door de Unix `cron`-daemon en vrijwel elke taakscheduler die daarop is gemodelleerd (crontab, Kubernetes CronJobs, GitHub Actions `schedule:`, Airflow, Jenkins). Elk veld accepteert een asterisk (`*`, betekent "elke waarde"), een specifiek getal, een door komma's gescheiden lijst (`1,15,30`), een bereik (`9-17`), een stap (`*/15`, betekent "elke 15 eenheden"), of — voor maand en weekdag — een driletterige naam (`JAN`, `MON`) in plaats van een getal.

    De canonieke definitie van deze syntax is de Linux crontab(5) man page, die precies dezelfde vijf velden, speciale tekens (`* , - /`), en de acht `@`-afkortingsstrings (`@reboot`, `@yearly`/`@annually`, `@monthly`, `@weekly`, `@daily`/`@midnight`, `@hourly`) documenteert die de meeste cron-implementaties, waaronder Vixie cron (de versie op de meeste Linux-distributies), ondersteunen als aliassen voor veelvoorkomende schema's.

    Deze tool implementeert precies dat standaard 5-veld formaat — het formaat dat je direct in `crontab -e` op een Linux- of macOS-server zou zetten, of in het `schedule:`-veld van een Kubernetes CronJob. Het implementeert geen Quartz cron-syntax, wat een ander, 6- of 7-veld formaat is gebruikt door Java's Quartz Scheduler en door sommige leveranciertools (zie de vergelijkingssectie hieronder voor wanneer je dat nodig hebt).

    Waarom gebruiken?

    • Je hebt net een productie-crontab geërfd met een regel zoals `17 3 * * 0` en geen commentaar dat het uitlegt — plak het hier voordat je iets aanraakt om te zien dat het eigenlijk "elke zondag om 3:17 uur" is, geen typfout.
    • Je schrijft een GitHub Actions workflow met een `schedule:` cron-trigger en twijfelt of `0 */6 * * *` echt elke 6 uur betekent, beginnend om middernacht — check de volgende 5 uitvoertijden om het te bevestigen voordat je de YAML commit.
    • Je hebt een cron-taak ingesteld met zowel een dag-van-de-maand als een dag-van-de-week beperking, zoals `0 4 8 * MON`, en de taak start op dagen die je niet verwachtte — deze tool toont het OR-niet-AND unie-gedrag waar bijna iedereen de eerste keer over struikelt.
    • Je bouwt een Kubernetes CronJob en hebt de exacte `schedule:`-string nodig voor "elke 15 minuten, alleen kantooruren, doordeweeks" zonder velden handmatig te tellen — gebruik de dropdown-builder in plaats van hem met de hand te schrijven.
    • Je weet niet zeker of een schedulerconfig standaard cron of Quartz cron gebruikt omdat de documentatie alleen "cron expression" zegt — check of het 5 velden heeft (deze tool) of 6-7 velden met `?`/`L`/`W`/`#`-tekens (Quartz) voordat je tijd verspilt aan het debuggen van een formaatmismatch.
    • 100% clientside: je scheduling-logica verlaat nooit je browser.

    Hoe te gebruiken

    1. Om een expressie te vertalen: typ of plak een 5-veld cron-string (of een @-afkorting zoals `@daily`) in het invoerveld.
    2. Lees de uitleg in gewone taal en de volgende 5 berekende uitvoertijden eronder — beide worden live bijgewerkt terwijl je typt.
    3. Om er in plaats daarvan een te bouwen: open de Builder-sectie, kies een modus (elke / elke N / specifieke waarde) voor elk van de vijf velden, en klik op "Genereer expressie."
    4. De gegenereerde expressie vult het invoerveld erboven en voedt direct terug naar de uitleg- en volgende-uitvoertijden-panelen.
    5. Gebruik de syntaxlegenda onderaan als snelle referentie voor `*`, `,`, `-`, en `/`.
    6. Kopieer de uiteindelijke expressie met de Kopieer-knop en plak hem in je crontab, CI-config, of scheduler.

    Voorbeeld

    Invoer

    */15 9-17 * * MON-FRI

    Uitvoer

    Om 09:00, 09:15, 09:30, 09:45, 10:00 ... 17:45, op maandag, dinsdag, woensdag, donderdag, vrijdag

    Deze expressie draait elke 15 minuten, maar alleen binnen het uurbereik 09:00–17:59, en alleen op werkdagen — een typisch "kantooruren" polling-schema.

    Standaard cron versus Quartz cron

    "Cron-syntax" is geen enkele universele standaard — de twee formaten die je het vaakst tegenkomt verschillen in aantal velden en in wat een paar speciale tekens betekenen. Gebruik deze tabel om te bevestigen dat je de juiste gebruikt voor je doelscheduler.

    AspectStandaard cron (deze tool)Quartz cron
    Aantal velden5 (minuut uur dom maand dow)6 of 7 (voegt seconden toe, en optioneel jaar)
    Gebruikt doorLinux/macOS crontab, Kubernetes CronJob, GitHub ActionsJava Quartz Scheduler, sommige enterprise-schedulers
    Dag-van-de-maand + dag-van-de-week beide ingesteldMatcht op AAN EEN VAN BEIDE (unie/OF)Vereist `?` in één van de twee velden — kan niet beide op een waarde tegelijk zetten
    Speciale extra tekensGeen naast `* , - /`Voegt `?`, `L` (laatste), `W` (dichtstbijzijnde weekdag), `#` (n-de weekdag van de maand) toe
    Planning op secondeniveauNiet ondersteundOndersteund (eerste veld)

    Veelvoorkomende schema-recepten

    Een handvol expressies dekt de meeste praktijksituaties voor planning — het is de moeite waard om deze op het zicht te herkennen in plaats van ze steeds opnieuw af te leiden.

    • `*/5 * * * *` — elke 5 minuten, de hele dag. Gangbaar voor health checks en lichte polling-taken.
    • `0 */6 * * *` — elke 6 uur, op het hele uur (00:00, 06:00, 12:00, 18:00). Een veelgebruikte standaard voor periodieke sync- of opruimtaken.
    • `0 2 * * *` — eenmaal per dag om 2 uur 's nachts. De klassieke tijd voor nachtelijke back-ups, wanneer verkeer het laagst is.
    • `0 9 * * 1-5` — 9 uur 's ochtends, alleen van maandag tot en met vrijdag. Standaard voor rapportages of digests alleen tijdens kantooruren.
    • `0 0 1 * *` — middernacht op de 1e van elke maand, gelijk aan de afkorting `@monthly`. Gebruikt voor maandelijkse facturatieruns of gebruiksresets.
    • `*/15 9-17 * * MON-FRI` — elke 15 minuten, maar alleen tijdens kantooruren doordeweeks — combineert een stap, een bereik, en een weekdagbereik in één expressie.

    Gerelateerde tools

    Werk je met configs, schema's of timestamps? Deze tools combineren goed met de cron-generator.

    → Timestamp Converter · Wereldklok Converter · Datum Calculator

    Veelgestelde vragen

    Wat is een cron-expressie?

    Een cron-expressie is een tekststring van 5 velden (`minuut uur dag-van-de-maand maand dag-van-de-week`) die een terugkerend schema specificeert voor de Unix `cron`-daemon en compatibele schedulers. Elk veld kan `*` zijn (elke waarde), een getal, een door komma's gescheiden lijst, een bereik (`a-b`), of een stap (`*/n`); maand- en weekdagvelden accepteren ook driletterige namen zoals `JAN` of `MON`. De volledige specificatie staat in de crontab(5) man page.

    Wat gebeurt er als zowel dag-van-de-maand als dag-van-de-week beperkt zijn?

    Dit is een bekende cron-valkuil: volgens POSIX cron-semantiek draait een taak, wanneer ZOWEL het dag-van-de-maand- als het dag-van-de-week-veld beperkt zijn (niet `*`), als AAN EEN VAN BEIDE voorwaarden wordt voldaan — het is een unie (OF), geen doorsnede (EN). Bijvoorbeeld, `0 4 8 * MON` draait om 4 uur zowel op de 8e van elke maand ALS op elke maandag, niet alleen op maandagen die toevallig op de 8e vallen. Deze tool implementeert precies dat unie-gedrag bij het berekenen van volgende uitvoertijden.

    Standaard cron versus Quartz cron — welke heb ik nodig?

    Deze tool genereert standaard 5-veld POSIX/Vixie cron-syntax — het formaat gebruikt door Linux/macOS `crontab`, Kubernetes CronJobs, GitHub Actions `schedule:`, en de meeste Unix-afgeleide taakuitvoerders. Quartz cron, gebruikt door Java's Quartz Scheduler en door tools daarop gebouwd (sommige enterprise-schedulers, oudere Spring Batch-configs), is een ander 6- of 7-veld formaat dat een voorafgaand secondenveld toevoegt en de betekenis van sommige speciale tekens verandert (`?` voor "geen specifieke waarde" in dagvelden, `L`/`W`/`#` voor "laatste dag," "dichtstbijzijnde weekdag," en "n-de weekdag van de maand"). Als het aantal velden van jouw scheduler 6 of 7 is, of je documentatie noemt `?`, `L`, `W`, of `#`, heb je een Quartz-specifieke tool nodig — expressies van deze generator zullen daar niet correct geparsed worden. Als het precies 5 velden zijn (of een `@daily`-achtige afkorting), zit je goed hier.

    Wat betekenen de afkortingen @yearly, @monthly, @weekly, @daily en @hourly?

    Dit zijn niet-standaard maar breed ondersteunde afkortingsstrings die uitgebreid worden naar veelvoorkomende 5-veld expressies: `@yearly`/`@annually` = `0 0 1 1 *` (eens per jaar, 1 januari om middernacht), `@monthly` = `0 0 1 * *` (1e van elke maand om middernacht), `@weekly` = `0 0 * * 0` (elke zondag om middernacht), `@daily`/`@midnight` = `0 0 * * *` (elke dag om middernacht), `@hourly` = `0 * * * *` (elk uur precies). Deze tool parset ze allemaal en behandelt ze precies als hun uitgebreide 5-veld equivalent.

    Kan ik dag/maand-namen gebruiken in plaats van getallen?

    Ja. Het maandveld accepteert driletterige namen `JAN` tot en met `DEC`, en het dag-van-de-week-veld accepteert `SUN` tot en met `SAT` (hoofdletterongevoelig), verwisselbaar met getallen. Dag-van-de-week-getallen lopen van 0-6 met 0 = zondag; sommige implementaties accepteren ook 7 voor zondag, wat deze tool normaliseert naar 0. Bereiken en lijsten werken ook met namen, bijv. `MON-FRI` of `JAN,JUN,DEC`.

    Wordt mijn cron-expressie naar een server gestuurd?

    Nee. Parsing, de uitleg in gewone taal, en de berekening van volgende uitvoertijden gebeuren allemaal lokaal in JavaScript in je browser. Niets wat je typt of genereert verlaat ooit je apparaat.

    In welke tijdzone worden de volgende uitvoertijden berekend?

    Deze tool berekent volgende uitvoertijden met de lokale tijdzone van je browser, aangezien standaard cron zelf geen ingebouwd tijdzoneveld heeft — de daadwerkelijke daemon of scheduler die je taak uitvoert gebruikt welke tijdzone het hostsysteem (of, voor GitHub Actions en vergelijkbare cloud-schedulers, UTC) heeft ingesteld. Als de tijdzone van je server afwijkt van die van je browser, verschuif dan mentaal de weergegeven tijden, of controleer de tijdzoneconfiguratie van je scheduler apart.

    Hoe plan ik een taak om alleen op de laatste dag van de maand te draaien?

    Standaard 5-veld cron heeft geen directe "laatste dag van de maand" syntax — dat is een van de functies die Quartz cron toevoegt met zijn `L`-teken. In standaard cron is de gebruikelijke omweg de taak elke dag van de 28e-31e in te plannen (`0 0 28-31 * *`) en het script zelf te laten controleren of de datum van morgen naar een nieuwe maand overgaat voordat het daadwerkelijk zijn logica uitvoert.

    Kan ik iets plannen om te draaien op een raar interval, zoals elke 10 minuten?

    Ja, met de stap-syntax: `*/10 * * * *` draait elke 10 minuten, beginnend vanaf :00 (dus op :00, :10, :20, :30, :40, :50). Houd er rekening mee dat stappen altijd tellen vanaf de minimumwaarde van het veld, dus `*/10` in het minuutveld komt nooit uit op :05 of :15 — als je zo'n offset nodig hebt, gebruik dan een expliciete kommalijst, bijv. `5,15,25,35,45,55`.

    Waarom lijkt mijn cron-taak twee keer tegelijk te draaien, of helemaal niet, rond een zomertijdwissel?

    Standaard cron plant tegen kloktijd op het hostsysteem, en DST-overgangen creëren óf een overgeslagen uur (voorjaar) óf een herhaald uur (najaar). Een taak gepland tijdens het overgeslagen of herhaalde uur kan die dag nul of twee keer draaien, afhankelijk van hoe je cron-daemon dit specifiek afhandelt. Kritieke infrastructuurtaken draaien op servers ingesteld op UTC (dat geen DST heeft) om dit volledig te vermijden.

    Gerelateerde tools