Free AWS EventBridge cron expression builder. AWS uses a 6-field cron format different from standard Linux cron — it adds a Seconds field, uses SUN–SAT for days, and requires ? instead of * in conflicting day fields. All times are UTC. This tool generates the correct AWS cron() syntax plus AWS CLI, CloudFormation, and Terraform code.
seconds minute hour day-of-month month day-of-week year. The standard crontab format has 5 fields (no seconds, no year). Always use cron() wrapper in AWS.cron(0 9 * * ? *)aws events put-rule \ --name "MyScheduledRule" \ --schedule-expression "cron(0 9 * * ? *)" \ --state ENABLED # Attach a Lambda target: aws events put-targets \ --rule "MyScheduledRule" \ --targets "Id=1,Arn=arn:aws:lambda:us-east-1:123456789:function:MyFunction"
Resources:
MyScheduledRule:
Type: AWS::Events::Rule
Properties:
Name: MyScheduledRule
ScheduleExpression: "cron(0 9 * * ? *)"
State: ENABLED
Targets:
- Id: "MyLambdaTarget"
Arn: !GetAtt MyLambdaFunction.Arnresource "aws_cloudwatch_event_rule" "schedule" {
name = "my-scheduled-rule"
schedule_expression = "cron(0 9 * * ? *)"
}
resource "aws_cloudwatch_event_target" "lambda" {
rule = aws_cloudwatch_event_rule.schedule.name
target_id = "lambda"
arn = aws_lambda_function.my_function.arn
}AWS EventBridge uses a 6-field variant of the Quartz cron format. If you copy a standard Linux cron expression directly into EventBridge, it will either reject it or run at the wrong time. Here are the critical differences:
| Field | Standard cron | AWS EventBridge | Note |
|---|---|---|---|
| Seconds | — (not supported) | 0–59 (first field) | AWS adds a Seconds field at position 1 |
| Day of month | 1–31 or * | 1–31, * or ? | Use ? when specifying Day of Week |
| Day of week | 0–6 (0=Sunday) | SUN–SAT or 1–7, use ? | AWS uses SUN/MON/TUE… not 0–6 |
| Year | — (not supported) | 1970–2199 or * | AWS adds a Year field at position 6 |
| Step (every N) | */5 | 0/5 | AWS uses 0/N not */N |
An AWS cron expression is a 6-field schedule string used by EventBridge (formerly CloudWatch Events) to trigger AWS services like Lambda, Step Functions, and ECS tasks on a schedule. The format is: cron(seconds minute hour day-of-month month day-of-week year). Always wrap in cron() when using as a ScheduleExpression.
AWS cron does not allow you to specify both day-of-month and day-of-week at the same time. Whichever you don't want to restrict, set to ? (no specific value). For example, to run every Monday: cron(0 9 ? * MON *) — the day-of-month is ? because you're specifying day-of-week.
EventBridge runs all cron schedules in UTC by default. AWS EventBridge Scheduler (the newer service) supports timezones. If you need IST (UTC+5:30), subtract 5 hours 30 minutes from your desired time when configuring standard EventBridge rules.
EventBridge supports a minimum of 1 minute intervals using rate expressions (rate(1 minute)) or cron expressions. For sub-minute precision you need a different approach (Step Functions, SQS with visibility timeout, etc.).
Use this tool to see the next 8 run times in UTC. You can also use the AWS console — when creating an EventBridge rule, it shows the next 10 trigger times after you enter the schedule expression.
cron(0 * * * ? *)Every hourcron(0 9 * * ? *)Daily 9am UTCcron(0/15 * * * ? *)Every 15 mincron(0 9 ? * MON-FRI *)Weekdays 9amcron(0 0 1 * ? *)1st of monthcron(0 0 ? * SUN *)Every Sunday