Crontab generator & cron-uitdrukking bouwen
Bouw, valideer en ontleed cron-uitdrukkingen in je browser. Live preview van de volgende run in lokale tijd of UTC. POSIX 5-veld syntaxis, presets, uitleg in begrijpelijk Nederlands. Gratis, privé, geen account nodig.
In begrijpelijke taal
—
Volgende 5 geplande runs
Wat is een cron-uitdrukking?
Een cron-uitdrukking is een vijf-veld string die een terugkerende planning definieert. Van links naar rechts zijn de velden minuut (0-59), uur (0-23), dag-van-de-maand (1-31), maand (1-12) en dag-van-de-week (0-6, waarbij 0 en 7 beide zondag betekenen). Elk veld accepteert een waarde, een lijst (`1,3,5`), een bereik (`1-5`), een wildcard (`*` betekent elke waarde) of een stap (`*/15` betekent elke 15). De combinatie bepaalt precies wanneer het geplande commando zal draaien — `0 9 * * 1-5` lees je bijvoorbeeld als "op minuut 0, uur 9, elke dag-van-de-maand, elke maand, dag-van-de-week maandag tot en met vrijdag" — oftewel in begrijpelijke taal: "doordeweeks om 9:00 uur".
Cron is ontstaan in Unix Version 7 in 1979 en de vijf-veld grammatica is in ruim vier decennia in essentie onveranderd gebleven — een bewijs van hoe goed ontworpen de oorspronkelijke syntaxis is. Vandaag worden cron-uitdrukkingen ver buiten het Unix crontab-bestand gebruikt: Kubernetes CronJobs, GitHub Actions workflows, AWS EventBridge rules, GitLab CI scheduled pipelines, Cloudflare Workers Cron Triggers en serverless platforms in elke cloud accepteren allemaal dezelfde vijf-veld grammatica. Cron één keer leren betekent dat je weet hoe je jobs plant in elke moderne infrastructuurcontext.
De POSIX-standaard definieert vijf operatoren: `*` (elke waarde), `,` (lijst met waarden), `-` (bereik), `/` (stap) en benoemde tokens voor maanden (JAN-DEC) en weekdagen (SUN-SAT). De meeste implementaties breiden ook vijf veelgebruikte snelkoppelingen uit: `@yearly` (`0 0 1 1 *`), `@monthly` (`0 0 1 * *`), `@weekly` (`0 0 * * 0`), `@daily` (`0 0 * * *`) en `@hourly` (`0 * * * *`). De Quartz-scheduler (een Java-bibliotheek) breidt dit uit met een optioneel seconden-veld en extra operatoren (`?`, `L`, `W`, `#`) — handig als je in Java/Spring werkt, maar niet portable naar standaard cron. Deze tool volgt de POSIX vijf-veld standaard omdat dat de dominante variant is en degene die je Linux-server, GitHub Actions runner en Kubernetes-cluster daadwerkelijk verstaan.
Eén bijzonderheid van POSIX cron verdient speciale aandacht: wanneer zowel dag-van-de-maand als dag-van-de-week beperkt zijn (geen van beide is `*`), draait de planning wanneer ÉÉN van beide matcht — OR-semantiek, geen AND. Dus `0 0 1 * 5` draait op de 1e van elke maand ÉN elke vrijdag, niet alleen op vrijdagen die toevallig op de 1e vallen. Dit is de meest voorkomende cron-verrassing; de preview van de volgende run in deze tool maakt het duidelijk door de werkelijke datums en tijden te tonen waarop de planning zal afgaan. Verifieer voordat je deployt.
Alle ontleding en berekening van de volgende run gebeurt volledig in je browser met JavaScript — geen uitdrukkingen, planningen of andere data worden ooit naar een server gestuurd. Deze tool ontleedt elke standaard POSIX cron-uitdrukking direct met uitleg in begrijpelijke taal en een preview van vijf runs, met volledige privacy.
Cron-uitdrukkingen zijn nauw verwant aan andere developer-tools. Cron jobs worden vaak gedebugd door Unix-timestamps te vergelijken met de verwachte runtijden, en complexe planningen worden vaak gedocumenteerd als JSON-configuratie die je kunt valideren met onze JSON-formatter. Voor een diepgaande gids die de OR-semantiek, tijdzone-valkuilen en veelvoorkomende cron-varianten behandelt met voorbeelden in Linux, Kubernetes en GitHub Actions, lees onze cron-planning referentie.
# Linux crontab entry — runs every 15 minutes
*/15 * * * * /usr/local/bin/poll-api.sh
# Kubernetes CronJob — weekdays at 9:00 AM UTC
apiVersion: batch/v1
kind: CronJob
metadata:
name: daily-report
spec:
schedule: "0 9 * * 1-5"
timeZone: "UTC"
jobTemplate:
spec:
template:
spec:
containers:
- name: report
image: report-runner:1.0
restartPolicy: OnFailure
# GitHub Actions workflow — hourly
on:
schedule:
- cron: '0 * * * *'
# AWS EventBridge — first of each month
ScheduleExpression: cron(0 0 1 * ? *)
# (Note: AWS uses the Quartz 6-field form with '?' for day-of-week) Belangrijkste functies
Live POSIX 5-veld parser
Strikte parser volgens POSIX cron: minuut (0-59), uur (0-23), dag-van-de-maand (1-31), maand (1-12 of JAN-DEC), dag-van-de-week (0-6 of SUN-SAT, waarbij 7 ook zondag accepteert). Alle standaardoperatoren (`*` `,` `-` `/`) en macro's (`@yearly` `@monthly` `@weekly` `@daily` `@hourly`) ondersteund.
Preview van de volgende 5 runs
Berekent de eerstvolgende vijf geplande runtijden vanaf je huidige lokale tijd. Wissel met één klik tussen Lokaal en UTC — de betrouwbaarste manier om tijdzone-verrassingen te vangen voordat je een crontab op een server in een andere regio deployt.
Beschrijving in begrijpelijk Nederlands
Elke geldige uitdrukking krijgt een leesbare uitleg: "Elke 15 minuten", "Doordeweeks om 9:00 uur", "Om 02:30 op dag 1 van de maand, in januari en juli". Maakt code review en overdracht moeiteloos — niet meer gokken wat `*/5 9-17 * * 1-5` precies doet.
Foutmeldingen op veldniveau
Ongeldige uitdrukkingen krijgen direct rode feedback met het overtredende veld gemarkeerd en een specifieke fout: "Fout in minuut: waarde buiten bereik [0, 59]: "60"". Geen stilzwijgende crontab-storingen meer die je drie dagen later ontdekt omdat het rapport niet draaide.
Presets voor veelgebruikte planningen
Elf one-click presets dekken de planningen die je daadwerkelijk gebruikt: elke minuut, elke 5/15 minuten, elk uur, dagelijks om middernacht of 9:00 uur, doordeweeks om 9:00 uur, wekelijks op zondag/maandag, eerste van elke maand en jaarlijks. Tik, tweak, ship.
Invoervelden per positie
Geen vijf-veld volgorde onthouden — vijf kleine invoervelden met labels Minuut, Uur, Dag van de maand, Maand en Dag van de week laten je één positie tegelijk bewerken zonder een waarde te laten vallen of de volgorde door elkaar te halen. De volledige uitdrukking bovenaan bouwt automatisch opnieuw op.
POSIX OR-semantiek correct afgehandeld
Wanneer zowel dag-van-de-maand als dag-van-de-week beperkt zijn, treedt de OR-regel in werking — `0 0 1 * 5` draait elke 1e ÉN elke vrijdag. De preview van de volgende run maakt dit zichtbaar voordat je deployt; geen verrassings-pagina's meer in het weekend.
100% privacy in de browser
Je cron-uitdrukkingen — die vaak infrastructuur-timing en interne planningspatronen prijsgeven — verlaten je browser nooit. Er wordt geen data naar een server gestuurd, geen logging, geen analytics. Je kunt dit verifiëren in het Netwerk-tabblad van je browser. Veilig voor productie-planningen en interne systemen.
Quartz-bewuste foutmeldingen
Plak je een Quartz-uitdrukking met `?` `L` `W` of `#`, dan legt de parser uit "Quartz-operatoren niet ondersteund — gebruik POSIX-syntaxis" zodat je weet dat je voor cron moet herschrijven in plaats van een stille storing te debuggen. Quartz-planningen draaien niet op Linux cron.
Cron-varianten & schedulers
Vixie cron (Linux-standaard)
5-veld POSIXDe standaard op de meeste Linux-distributies. Strikt POSIX met `CRON_TZ=` uitbreiding voor expliciete tijdzone. Dag-van-de-maand / dag-van-de-week OR-semantiek geldt. Het primaire doel van deze tool.
BSD cron
5-veld POSIXStandaard op macOS en de BSD-familie. POSIX-compatibel met kleine implementatieverschillen ten opzichte van vixie cron; de meeste uitdrukkingen werken identiek.
systemd-timers (OnCalendar)
calendar spec, geen cronAlternatief voor cron op systemd-gebaseerde Linux. Gebruikt `OnCalendar: 2026-*-* 09:00:00` syntaxis — leesbaarder voor niet-terugkerende planningen maar niet uitwisselbaar met cron-uitdrukkingen.
Quartz Scheduler (Java/Spring)
6 of 7 veldenVoegt seconden (verplicht) en jaar (optioneel) toe, plus operatoren `?`, `L`, `W`, `#`. Handig voor Java-apps maar niet portable naar Linux cron.
AWS EventBridge
6-veld Quartz-stijl met `?`Vereist dat dag-van-de-week of dag-van-de-maand `?` is (Quartz-conventie) in plaats van `*` wanneer slechts één van beide beperkt is. Uitdrukkingen porten niet rechtstreeks naar Linux cron.
Kubernetes CronJob
5-veld POSIX + timeZone-veldPOSIX 5-veld planning plus `spec.timeZone` veld (1.27+). Schoner dan leunen op de host-tijdzone van de kubelet. Uitdrukkingen porten rechtstreeks vanuit Linux cron.
GitHub Actions
5-veld POSIXDraait altijd in UTC. Best-effort timing — kan onder hoge belasting worden overgeslagen. Vermijd intervallen korter dan 15 minuten. Uitdrukkingen porten rechtstreeks vanuit Linux cron.
Voorbeelden van cron-uitdrukkingen
Elke 15 minuten
*/15 * * * *
Stap-operator: `*/15` in het minuut-veld betekent "elke 15 minuten vanaf minuut 0" — dus runs op :00, :15, :30 en :45 op elk uur van elke dag. Het meest gebruikte interval voor het pollen van API's, het verversen van caches en heartbeat-checks.
Doordeweeks om 9:00 uur
0 9 * * 1-5
Bereik `1-5` in het dag-van-de-week-veld betekent maandag tot en met vrijdag (1=ma, 5=vr). Draait precies om 09:00 — handig voor rapportages tijdens kantooruren, batchjobs die afhankelijk zijn van nachtelijke data en dagelijkse standup-reminders.
De eerste van de maand om middernacht
0 0 1 * *
Dag-van-de-maand `1`, alle andere lagere velden op nul. Gangbaar voor maandelijkse facturatie, log-rotatie en eindperiode-reconciliatie. Dag-van-de-maand en dag-van-de-week zijn alleen beide beperkt wanneer geen van beide `*` is — hier is dag-van-de-week `*` dus alleen de dag-van-de-maand telt.
Elke 5 minuten tussen 9:00 en 17:00, doordeweeks
*/5 9-17 * * 1-5
Combineert stap (`*/5`) met bereik (`9-17`) op verschillende velden. Handig voor monitoring alleen tijdens kantooruren of het leegtrekken van queues. Totaal: 12 runs/uur × 9 uur × 5 dagen = 540 runs per werkweek.
Per kwartaal: 1e van jan, apr, jul, okt om middernacht
0 0 1 JAN,APR,JUL,OCT *
Maandnamen in een door komma's gescheiden lijst. Kwartaalplanningen zoals financiële afsluiting, code-freeze reviews of compliance-audits. Je kunt namen en getallen mixen (`1,APR,7,10` ontleedt hetzelfde), maar houd één stijl aan voor de leesbaarheid.
POSIX OR-valkuil: 1e van de maand ÓF elke vrijdag
0 0 1 * 5
Wanneer ZOWEL dag-van-de-maand (`1`) ALS dag-van-de-week (`5`) beperkt zijn, draait POSIX cron de job als ÉÉN van beide matcht. Dus dit gaat af op de 1e van elke maand ÉN elke vrijdag — niet alleen vrijdagen die op de 1e vallen. Dit is de meest voorkomende cron-verrassing; de preview van de volgende run maakt het direct duidelijk.
Elke dag om 02:30 (rustige uren)
30 2 * * *
Specifieke waarden voor zowel uur als minuut, wildcards op de rest. Het venster 02:00-04:00 UTC is de facto de conventie voor nachtelijke batchjobs omdat het met geen enkele grote zakelijke regio overlapt qua kantooruren. Combineer met de UTC-toggle om te bevestigen dat de run valt waar je hem verwacht.
Macro-equivalent: @daily
@daily
De snelkoppeling `@daily` (ook `@midnight`) wordt uitgebreid naar `0 0 * * *` — elke dag om middernacht. Andere macro's: `@yearly` = `0 0 1 1 *`, `@monthly` = `0 0 1 * *`, `@weekly` = `0 0 * * 0`, `@hourly` = `0 * * * *`. Macro's zijn beknopt maar de vijf-veld vorm is beter portable tussen schedulers (sommige ondersteunen macro's, andere niet).
Zo bouw je een cron-uitdrukking
- 1
Typ of plak een cron-uitdrukking
Voer een vijf-veld cron-uitdrukking in het invoerveld hierboven (bijv. `*/15 * * * *`). De tool ontleedt en valideert terwijl je typt — groen vinkje voor geldig, rode fout met veldnaam voor ongeldig. Macro's zoals `@daily`, `@hourly`, enz. worden ook geaccepteerd.
- 2
Of pas de vijf veldinvoeren aan
Geen veld-volgorde onthouden — bewerk Minuut, Uur, Dag-van-de-maand, Maand of Dag-van-de-week los van elkaar via de gelabelde invoervelden. De volledige uitdrukking bovenaan updatet automatisch. Gebruik `*` voor wildcards, `*/N` voor stappen, `a-b` voor bereiken en `1,3,5` voor lijsten.
- 3
Kies een preset als startpunt
Tik op een preset (Elke 15 minuten, Doordeweeks om 9:00 uur, enz.) om een gangbare planning te laden, en pas daarna de velden aan tot het exact past. Elf presets dekken de patronen die je daadwerkelijk in productie gebruikt.
- 4
Verifieer de preview van de volgende run
Bekijk de vijf aankomende runtijden — wissel tussen Lokaal en UTC om te bevestigen dat de planning afgaat wanneer je het bedoelt. Dit is de betrouwbaarste manier om de POSIX dag-van-de-maand / dag-van-de-week OR-valkuil te vangen voordat hij je in productie bijt.
- 5
Kopieer en plak in je scheduler
Klik op Kopiëren om de uitdrukking op te halen. Plak in je crontab, systemd-timer, GitHub Actions `cron:`, AWS EventBridge, Kubernetes CronJob `schedule` of een andere cron-compatibele scheduler. Vergeet niet de tijdzone van de doel-scheduler te controleren — zie de sectie Aanbevolen aanpak hieronder.
Veelgemaakte cron-fouten
POSIX OR-val: beide dag-velden beperkt
Wanneer ZOWEL dag-van-de-maand ALS dag-van-de-week beperkt zijn, draait POSIX cron de job als ÉÉN van beide matcht — niet allebei. Dus `0 0 1 * 5` gaat af op de 1e van elke maand ÉN elke vrijdag, niet alleen op vrijdagen-die-op-de-1e-vallen. Gebruik `*` in één van de twee dag-velden wanneer je één conditie wilt, of schrijf een wrapper-script dat de AND-check uitvoert.
# Bedoeld: "eerste vrijdag van de maand" 0 0 1-7 * 5 # Werkelijk: gaat af op dag 1-7 van de maand ÓF elke vrijdag — beide condities
# Gebruik wrapper voor echte AND-semantiek 0 0 * * 5 [ $(date +\%d) -le 7 ] && /jouw-script # OF laat één conditie vallen en accepteer de ruimere planning
Tijdzonedrift tussen dev en prod
Cron-planningen op een Linux-server gebruiken de systeem-tijdzone, niet de lokale tijdzone van de schrijver. Een 9:00 uur cron op een server ingesteld op UTC gaat af om 4:00 's nachts in US-East. Ontwerp planningen altijd tegen de tijdzone van de doelserver — bij voorkeur UTC — en zet de tijdzone expliciet vast met `CRON_TZ=...` bovenaan de crontab.
# Geschreven door US East-dev, gedeployed op UTC-server 0 9 * * * /jouw-rapport.sh # Gaat af om 9:00 UTC = 4:00 US East — niet wat de dev bedoelde
# Zet tijdzone vast, of schrijf expliciet in UTC CRON_TZ=America/New_York 0 9 * * * /jouw-rapport.sh
Stap-operator verwarring: '*/15' versus '15'
`*/15` in minuut betekent "elke 15 minuten vanaf 0" (dus 0, 15, 30, 45). Alleen `15` betekent "alleen op minuut 15" — één run per uur. Beginners schrijven vaak `15` in de veronderstelling dat dat elke 15 minuten is; de uitleg in begrijpelijke taal van de tool maakt de fout duidelijk vóór de deploy.
# Bedoeld: elke 15 minuten 15 * * * * # Werkelijk: één keer per uur, op minuut 15 (4 runs/uur minder dan bedoeld)
# Correct */15 * * * * # Elke 15 minuten: minuut 0, 15, 30, 45 van elk uur
Zes-veld uitdrukking op POSIX-scheduler
Quartz/Spring/node-cron ondersteunen een optioneel seconden-veld op de eerste positie. Linux crontab, GitHub Actions, AWS EventBridge (grotendeels) en Kubernetes CronJob doen dat NIET — die verwachten vijf velden. Een zes-veld uitdrukking plakken breekt de planning stilzwijgend: je seconden worden minuten, minuten worden uren, enz.
# Quartz 6-veld gekopieerd naar Linux crontab 0 0 9 * * 1-5 # Linux leest: minuut=0, uur=0, dom=9, maand=*, dow=1-5 # = middernacht op dag 9 in maanden die overeenkomen met doordeweekse dagen — chaos
# POSIX 5-veld, laat de seconden weg 0 9 * * 1-5 # = doordeweeks om 9:00 uur
Dag-van-de-maand buiten bereik voor de maand
Cron valideert dag-van-de-maand niet tegen de werkelijke maand. `0 0 31 2 *` (31 februari) ontleedt prima maar matcht nooit — februari heeft hooguit 29 dagen. Beginners gaan ervan uit dat de parser dit opvangt; dat doet hij niet. De preview van de volgende run in deze tool toont "Geen geplande runs" wanneer een uitdrukking structureel geldig is maar logisch onmogelijk.
# 30 of 31 februari — draait nooit 0 0 30 2 * 0 0 31 2 * # Ontleedt maar er gaat geen planning ooit af
# Gebruik patroon 'laatste werkdag van februari' via script 0 0 28-29 2 * [ $(date -d tomorrow +\%m) = 03 ] && /jouw-script
Quartz-syntaxis aanzien voor POSIX
AWS-docs, Spring-tutorials en veel Stack Overflow-antwoorden tonen Quartz cron-uitdrukkingen met `?`, `L`, `W` of `#`. Die werken niet in Linux crontab. Kopieer je een zes-veld uitdrukking met `?` op de dag-van-de-week positie, dan wijst de Linux-parser hem af (of erger nog, ontleedt hem stilzwijgend verkeerd). Deze tool vangt Quartz-operatoren op en legt het verschil uit.
# Quartz: 'laatste vrijdag van de maand' — ongeldig in POSIX 0 0 ? * 6L *
# POSIX wrapper-script aanpak voor laatste-vrijdag 0 0 25-31 * 5 /jouw-script # Draait op vrijdag tussen de 25e en 31e van elke maand
Veelvoorkomende use cases
- Linux crontab-jobs
- Bouw en verifieer regels voor `/etc/crontab`, `/etc/cron.d/*` of per-gebruiker `crontab -e` bestanden. Gebruik de preview van de volgende run om te bevestigen dat de planning op het juiste tijdstip valt in de geconfigureerde tijdzone van je server voordat je opslaat.
- Kubernetes CronJob-planningen
- Genereer het `spec.schedule` veld voor een Kubernetes CronJob. Kubernetes 1.27+ ondersteunt ook `spec.timeZone` — gebruik de UTC-toggle om je planning in UTC te ontwerpen en zet daarna `timeZone` expliciet om de lokale tijd van de worker-node te omzeilen.
- GitHub Actions geplande workflows
- Bouw de `cron:` regel onder `on.schedule`. GitHub Actions draait altijd in UTC — zet de preview op UTC om je planning te bevestigen. Vermijd intervallen korter dan 15 minuten; de scheduler van GitHub slaat korte-interval-jobs onder belasting over.
- AWS EventBridge rules
- Stel de cron-uitdrukking samen voor een EventBridge geplande rule. Let op: AWS gebruikt Quartz-achtige zes-veld syntaxis met `?` voor dag-van-de-week — deze tool produceert POSIX vijf-veld, die je moet omzetten door seconden (`0`) voorop te zetten en de `*` in één van de twee dag-velden te vervangen door `?`.
- GitLab CI geplande pipelines
- Verifieer de cron-uitdrukking voor een geplande CI-pipeline in GitLab. GitLab gebruikt POSIX vijf-veld syntaxis — wat deze tool produceert — en een UI-datumkiezer, maar de cron-vorm geeft je fijnere controle voor niet-standaard intervallen.
- Cloudflare Workers Cron Triggers
- Bouw de `[triggers.crons]` regel in `wrangler.toml`. Cloudflare gebruikt POSIX vijf-veld syntaxis. Minimum interval is één minuut; de worker draait in UTC. Gebruik de preview om te verifiëren dat de trigger binnen je verwachte venster afgaat.
- Node.js node-cron planningen
- Bouw uitdrukkingen voor de `node-cron` bibliotheek, die zowel vijf-veld POSIX als een optioneel voorafgaand seconden-veld ondersteunt. Houd het op vijf velden tenzij je specifiek sub-minute precisie nodig hebt — zes-veld uitdrukkingen porten niet naar Linux crontab.
- Code review en documentatie
- Plak een cron-uitdrukking uit een PR of runbook om direct te zien wat hij doet — geen gokken meer bij `30 7 * * 1-5` of het erbij pakken van een referentiekaart. De uitleg in begrijpelijke taal is ook geweldig voor inline-opmerkingen en README-bestanden.
Cron-syntaxis referentie
- Veldvolgorde: M U D M W
- Minuut (0-59), Uur (0-23), Dag-van-de-maand (1-31), Maand (1-12), Dag-van-de-week (0-6, waarbij 7 ook = zondag). Het dag-van-de-week veld accepteert zowel numerieke (0-6) als benoemde (SUN-SAT, hoofdletterongevoelig) tokens.
- Operatoren
- `*` = elke waarde; `,` = lijstscheider (`1,3,5`); `-` = bereik (`1-5`); `/` = stap (`*/15`, `5/10`); namen: JAN-DEC voor maand, SUN-SAT voor dag-van-de-week (hoofdletterongevoelig).
- Macro's (aliassen)
- `@yearly` = `0 0 1 1 *`; `@annually` = `0 0 1 1 *`; `@monthly` = `0 0 1 * *`; `@weekly` = `0 0 * * 0`; `@daily` = `0 0 * * *`; `@midnight` = `0 0 * * *`; `@hourly` = `0 * * * *`. `@reboot` is een speciaal non-schedule (draait alleen bij boot) en wordt afgewezen met een toelichtende fout.
- POSIX dag-semantiek (OR-regel)
- Wanneer ZOWEL dag-van-de-maand ALS dag-van-de-week beperkt zijn (geen van beide is `*`), draait de planning wanneer ÉÉN van beide matcht — OR-semantiek. Als slechts één beperkt is, beslist die. Zijn beide `*`, dan matcht elke dag. Deze OR-regel geldt voor vixie cron, BSD cron en de meeste POSIX-implementaties; Quartz gebruikt `?` om AND versus OR te disambigueren.
- Zes-veld modus (Quartz-Lite)
- Heeft je invoer zes door spaties gescheiden tokens, dan behandelt de tool de eerste als seconden-veld (0-59). Handig voor Quartz, Spring `@Scheduled(cron=...)` en node-cron. NIET portable naar Linux crontab of POSIX-schedulers — die zouden je seconden als minuten interpreteren en alles één positie opschuiven.
- Verankering van de stap-operator
- `*/N` is verankerd aan de laagste waarde van het veld: `*/15` in minuut = `0,15,30,45`, niet "elke 15 vanaf nu". Met een niet-wildcard basis: `5/15` in minuut = `5,20,35,50`. Stap-waarden die het veldbereik niet gelijkmatig delen slaan er bij de wraparound één over — dat is correct, geen bug.
- Validatiegrenzen
- minuut ∈ [0,59], uur ∈ [0,23], dag-van-de-maand ∈ [1,31], maand ∈ [1,12], dag-van-de-week ∈ [0,7]. Waarden buiten bereik produceren een fout op veldniveau. De dag-van-de-maand wordt NIET gevalideerd tegen de maand (`0 0 31 2 *` ontleedt prima maar matcht nooit, want februari heeft geen dag 31 — de preview van de volgende run toont "Geen geplande runs").
- Quartz-operatoren afgewezen
- POSIX cron ondersteunt niet de Quartz-operatoren `?` (geen specifieke waarde), `L` (laatste), `W` (dichtstbijzijnde werkdag) of `#` (n-de weekdag). Deze tool wijst ze af met een duidelijke melding "Quartz-operatoren niet ondersteund" in plaats van ze stilzwijgend te ontleden als ongeldige POSIX. Voor Quartz-planningen gebruik je een Quartz-bewuste tool of de Spring scheduler.
- Jaar-cap op zoektocht naar volgende run
- De berekening van de volgende run zoekt tot 4 jaar vooruit; uitdrukkingen die minder vaak matchen (bijv. "29 feb" patronen) tonen "Geen geplande runs binnen de komende 4 jaar". Dit is bewust om onbegrensde iteratie op onmogelijke patronen te voorkomen.
Aanbevolen aanpak voor cron-planningen
- Gebruik UTC op servers, converteer pas bij weergave
- Zet je servers op UTC (`/etc/timezone` of `TZ=UTC`) en schrijf alle cron-uitdrukkingen in UTC. Converteer pas naar lokale tijd op het moment van weergave in je dashboards en rapporten. Dit elimineert een hele categorie tijdzone-bugs die het hardst toeslaan bij zomertijd-overgangen, wanneer lokale-tijd planningen stilzwijgend dubbel afgaan of een run overslaan. Gebruik de UTC-toggle in deze tool om je planning vanaf het begin in UTC te ontwerpen.
- Vermijd de POSIX dag-van-de-maand/dag-van-de-week OR-val
- Beperk nooit zowel dag-van-de-maand ALS dag-van-de-week tenzij je OR-semantiek wilt. Wil je "elke maandag in januari", schrijf dan `0 0 * 1 1` (dag-van-de-maand is `*`); wil je "de 1e van elke maand", schrijf dan `0 0 1 * *` (dag-van-de-week is `*`). De POSIX OR-regel betekent dat `0 0 1 * 1` draait op de 1e ÉN elke maandag — vrijwel zeker niet wat je bedoelde. De preview van de volgende run vangt dit op als je vóór deploy checkt.
- Zet de tijdzone van de planning expliciet vast
- Moderne schedulers ondersteunen het vastpinnen van de tijdzone in de planningsdefinitie: `CRON_TZ=America/New_York` bovenaan een crontab (vixie cron 3.0+), `spec.timeZone: "America/New_York"` voor Kubernetes CronJobs 1.27+, schedule expression met `ScheduleExpressionTimezone` voor AWS EventBridge Scheduler. Zet de tijdzone expliciet vast in plaats van te leunen op de default van de server — server-tijdzones kunnen zonder waarschuwing veranderen tijdens infrastructuurmigraties.
- Spreid belasting over de minuten, niet op :00
- Vermijd `0 * * * *` (elk uur op minuut 0) voor niet-kritieke jobs — op schaal levert veel dingen plannen op exact :00 belastingspieken op. Kies een willekeurige minuut-offset (`23 * * * *`, `41 * * * *`) voor elke job om de belasting te spreiden. Hetzelfde geldt voor dagelijkse jobs: `30 3 * * *` is vriendelijker voor je database dan `0 3 * * *` wanneer veel jobs samenkomen om 3:00.
- Maak jobs idempotent
- Cron heeft geen ingebouwde retry, geen overlap-preventie, geen herstel van gemiste runs. Je job moet veilig meerdere keren uit te voeren zijn (idempotent) en zichzelf controleren. In plaats van "verstuur rapport om 9:00 uur" ontwerp je hem als "verstuur het rapport van vandaag als dat nog niet is verzonden" — zo herstelt hij vanzelf na downtime, per ongeluk dubbele planningen en gelijktijdige runs. Idempotentie is een eigenschap van de job, niet van de scheduler, en het is de allerbelangrijkste betrouwbaarheidspraktijk.
- Voeg een heartbeat toe voor kritieke planningen
- De stille-storing-modus van cron is zijn grootste zwakte — als de planning niet afgaat, krijg je nergens een signaal. Voor kritieke jobs laat je de job aan het einde van elke run een heartbeat-service pingen (Healthchecks.io, Cronitor, Dead Man's Snitch); de service alarmeert je als de verwachte ping uitblijft. Zo vang je zowel een falende job als een misvurende planning op. De gratis tier dekt de meeste persoonlijke en small-team behoeften.
- Verifieer met de preview van de volgende run voor je ship
- Voordat je een nieuwe cron-planning deployt, bekijk je de vijf aankomende runtijden in de preview van deze tool. Wissel tussen Lokaal en UTC. Bevestig dat de planning valt waar je het bedoelt — niet vijf minuten te vroeg, niet op de verkeerde dag, niet over het weekend heen dat je belangrijk vond. De preview is de goedkoopst mogelijke productietest.
Veelgestelde vragen
Wat doet deze tool?
Wat is een cron-uitdrukking?
Wordt mijn data ergens geüpload?
Wat is het verschil tussen POSIX cron en Quartz?
Waarom draait '0 0 1 * 5' op elke vrijdag ÉN op de 1e?
Hoe draai ik een job elke 30 seconden?
Welke tijdzone gebruikt cron?
Waar wordt '*/15' precies naar uitgebreid?
Kan ik een zes-veld uitdrukking met seconden gebruiken?
Wat is het grootste interval dat cron kan uitdrukken?
Hoe ga ik om met gemiste runs na downtime?
Waarom draait mijn GitHub Actions cron niet op tijd?
Gerelateerde tools
Alle tools bekijken →Unix timestamp omrekenen — online converter
Datum en tijd
Reken Unix timestamps direct om naar datums. Herkent automatisch seconden, milliseconden en microseconden. Live klok, bidirectioneel. Gratis en privé.
Talstelsel omrekenen — online converter
Omrekentools
Reken je getal direct om tussen binair, hex, decimaal, octaal en elk talstelsel (2-36). Gratis en privé — alles draait in je browser.
Base64 decoderen en encoderen online
Encodering en formattering
Base64 decoderen en encoderen direct in je browser. Realtime conversie met volledige UTF-8- en emoji-ondersteuning. 100% privé — geen account nodig.
CSV naar JSON omzetter
Encodering en formattering
Zet CSV om naar JSON in uw browser. RFC 4180, type-afleiding, headerregel, big-int veilig. 100% privé, geen upload.
Afbeelding comprimeren — online tool
Omrekentools
Comprimeer JPEG, PNG & WebP tot 80% kleiner — in je browser, zonder uploaden. Batch 20 afbeeldingen, stel kwaliteit in, vergelijk voor & na. Gratis & privé.
JSON Diff (Vergelijken)
Encodering en formattering
Vergelijk twee JSON-bestanden direct in je browser. Zij-aan-zij markering, RFC 6902 JSON Patch-uitvoer, negeer storende velden zoals tijdstempels en ID's. 100% privé, geen upload.