AWS Cron Converter
Free AWS cron converter. Convert between standard 5-field cron and AWS EventBridge's 6-field cron syntax.
Why AWS requires exactly one "?" between day-of-month and day-of-week
Standard cron allows both the day-of-month and day-of-week fields to independently constrain a schedule, and (per the standard cron OR-semantics) treats two non-wildcard values in those fields as "either condition matching is enough." AWS decided that ambiguity wasn't acceptable in its own cron dialect and instead requires exactly one of the two fields to be the wildcard placeholder `?`, forcing every EventBridge/CloudWatch schedule to be unambiguously anchored to either a day of the month or a day of the week, never a ambiguous mix of both. That's a deliberate, stricter design choice on AWS's part — not a bug or a missing feature — which is why a standard cron expression using both fields as "*" doesn't translate directly; this tool has to pick which field becomes "?" and which keeps the "*", matching what AWS actually requires.
The day-of-week off-by-one that catches everyone at least once
Standard cron numbers days 0-6 starting from Sunday=0; AWS numbers them 1-7 starting from Sunday=1 — a one-off shift that's trivial to convert programmatically but easy to get backwards by hand, especially since both schemes put Sunday first and the numbers otherwise look similar. A schedule meant for "Monday" (standard: 1, AWS: 2) silently becomes "Tuesday" if the raw number is copied across dialects without adjusting for the shift, which is exactly the kind of subtle, silent-failure bug that only surfaces days later when someone notices a job ran on the wrong day. Named values (MON, TUE, etc.) sidestep this entirely, which is one good reason to prefer them over numeric day-of-week values when writing a schedule in either dialect.