The Five Cron Fields
Standard cron syntax packs a full schedule into five space-separated fields, each with its own valid range, read left to right from the smallest unit of time to the largest before wrapping back to day-of-week.
Field Order
Every field accepts an asterisk for "any value," a single number, a range (1-5), a step (*/15, or 1-30/5 for a stepped range), or a comma-separated list combining any of the above (1,15,MON is not valid — named days are a separate, non-standard extension some schedulers support and this parser does not).
The Day-of-Month / Day-of-Week OR Trap
This single rule causes more cron surprises than any other part of the syntax, because it is the one place standard cron does not behave like a simple filter on every field.
When only one of the two is restricted, it behaves normally
0 0 15 * * (midnight on the 15th, any day of week) and 0 0 * * 5 (midnight every Friday) both behave exactly as expected, since the other field is a wildcard that imposes no restriction.
When both are restricted, it is an OR, not an AND
0 0 15 * 5 does not mean "the 15th, if it is a Friday." It means "the 15th of every month, and every Friday" — the job runs on both conditions independently, which surprises almost everyone the first time they hit it.
To require both conditions together, restrict only one field
There is no standard cron syntax for "the 15th, only if it is also a Friday." That logic has to live in the job itself, checking the date and exiting early if the extra condition is not met, since the schedule syntax cannot express it directly.
Cron Runs in a Time Zone You Have to Know
A cron expression has no time zone of its own — it runs against whatever clock the scheduler is set to, which is not always what it looks like at a glance. A traditional Linux crontab runs in the server's system time zone; many cloud schedulers default to UTC regardless of where the underlying infrastructure sits.
This becomes a real bug at daylight saving transitions in a server running local time: a cron scheduled for 2:30 AM can run twice, or not at all, on the specific day the clock shifts, depending on the direction of the change. Scheduling in UTC, when the platform allows it, avoids this entire category of problem — this calculator itself runs against your browser's local time zone, so treat its output as illustrative for planning rather than as a guarantee of exact server behaviour.