Plain English, plus the actual next run times — the only proof the expression means what you think.
Cron syntax is five fields and endless opportunity for quiet disaster. This crontab builder translates any expression into plain English and — the part that actually saves you — lists the next real run times. Reading "0 3 * * 1" and believing it means Monday at 3am is a guess; seeing the next five Mondays at 03:00 is proof.
Write * 3 * * * instead of 0 3 * * * and your job doesn't run at 3am — it runs every minute for the whole 3am hour, sixty times. The next-run list shows 03:00, 03:01, 03:02 and the mistake becomes obvious in a second. This tool warns you outright when an expression fires more than a few dozen times a day, because that is almost never what anyone meant.
When both day-of-month and day-of-week are restricted, cron combines them with OR, not AND. So 0 0 1 * 1 runs on the 1st of every month and every Monday — not "only Mondays that fall on the 1st". Almost everyone gets this backwards, so the tool flags it when your expression hits that case. It also handles steps (*/15), ranges (1-5), lists (1,15), names (MON, JAN) and shorthands like @daily.
* 3 * * * runs 60 times during the 3am hour; you wanted 0 3 * * *.0 0 1 * 1 runs on the 1st and on every Monday.Related: RegEx Tester · JWT Decoder · Data Converter