What a cron expression means
A standard cron expression has five fields separated by spaces: minute, hour, day of month, month and day of week. An asterisk means every value, a comma separates a list (1,15), a hyphen marks a range (9-17) and a slash sets a step (*/15 is every 15 minutes). So 30 2 * * 1-5 runs at 2:30 in the night from Monday through Friday.
Paste any expression and the tool describes it in a sentence, lists each field and calculates the next ten run times. Shortcuts such as @daily and @hourly are understood too. If something is wrong, the message names the field and the position instead of a vague syntax error.
Traps that catch experienced people
When both day of month and day of week are set, classic cron runs on days that match either one, not both: 0 0 13 * 5 runs on every 13th and on every Friday. If one of the two fields starts with an asterisk, as in */2, both must match. The explanation points this out whenever it applies.
Cron uses the time zone of the machine it runs on. A job at 2:30 does not run on the night clocks go forward in many countries, and a job at 1:30 can meet the same hour twice when clocks go back. Choose your server's time zone in the run list to see exactly which days are affected. Months without day 31 are simply skipped.
Standard, seconds and Quartz
Linux crontab, Kubernetes CronJobs and GitHub Actions use the five field form. Some libraries add a seconds field in front. Quartz, used by many Java schedulers, has seconds, an optional year, numbers days of the week 1 to 7 starting with Sunday and requires ? in one of the day fields. It also adds L for the last day, W for the nearest weekday and # for the nth weekday of the month. Choose the syntax at the top; switching converts the expression where possible.