How to Read Cron Expressions, Once and For All
Cron syntax is the scheduling lingua franca — from Linux crontab to GitHub Actions, Kubernetes CronJobs, Jenkins, and AWS EventBridge. An expression is five space-separated fields — minute, hour, day of month, month, day of week — combined with * (every value), */n (every n), a-b (ranges), and a,b (lists). The syntax is compact, but small mistakes are easy to make and expensive to discover in production, so validating before you deploy matters.
This tool translates any expression into a plain-language description the moment you type it, and computes the next 10 run times in your device's local timezone. Seeing the actual list — not just the description — is the fastest way to catch the schedule you thought said "weekdays at 9 AM" but actually fires at midnight.
The rule that trips up almost everyone: when both day-of-month and day-of-week are restricted, standard cron combines them with OR, not AND. "0 0 13 * 5" does not mean "Friday the 13th" — it runs on the 13th of every month AND every Friday. Also remember that schedulers like GitHub Actions evaluate cron in UTC, so shift your hours accordingly when your intent is local time.
Common schedules are one click away as presets: every minute (* * * * *), hourly (0 * * * *), daily at midnight (0 0 * * *), weekdays at 9 AM (0 9 * * 1-5), the 1st of each month (0 0 1 * *), and Sunday midnight (0 0 * * 0). Six-field Quartz/Spring expressions are handled gracefully: the seconds field is ignored with a clear notice, and the remaining five fields are parsed as standard cron. Pair this with our timestamp converter and regex tester for smoother server-job debugging.