CronTool
Cron expression editor & debugger

AWS cron — last day of the month (EventBridge & Lambda)

AWS EventBridge supports the L modifier in the day-of-month field. To run on the last day of every month at midnight UTC: cron(0 0 L * ? *). The expression has six fields (minute, hour, day-of-month, month, day-of-week, year), the day-of-week is ?, and the year defaults to *.
See the full AWS cron expressions guide for the field-by-field reference, or the cross-library last-day-of-month guide for the equivalent in other schedulers.

Examples

  • 018***
    Every day at 18:00
  • 0*/5***
    Every 5 hours
  • 018**1-5
    Weekdays at 18:00
  • 001**
    Once a month

Cheatsheet

FieldRequiredValues RangeWildcardsminuteYes0-59, - * / hourYes0-59, - * / day of monthYes1-31, - * / L W monthYes1-12, - * /day of weekYes0-7, - * / L

Calendar

View future cron matches in a calendar

April 2026

Showing next 1000 cron schedules

Loading...

AWS cron syntax for last day of the month

  • cron(0 0 L * ? *) — midnight UTC on the last day of every month.
  • cron(0 12 L * ? *) — noon UTC on the last day of every month.
  • cron(0 0 L 12 ? *) — midnight UTC on December 31st only.
  • cron(30 23 L 1,4,7,10 ? *) — quarterly: last day of January, April, July, October at 23:30 UTC.
  • cron(0 9 L * ? 2026) — last day of every month in 2026 only.

AWS CloudFormation example

Resources:
  MonthEndRule:
    Type: AWS::Events::Rule
    Properties:
      Description: "Run last day of every month at 00:00 UTC"
      ScheduleExpression: "cron(0 0 L * ? *)"
      State: ENABLED
      Targets:
        - Arn: !GetAtt MonthEndLambda.Arn
          Id: MonthEndLambdaTarget

  MonthEndPermission:
    Type: AWS::Lambda::Permission
    Properties:
      FunctionName: !Ref MonthEndLambda
      Action: lambda:InvokeFunction
      Principal: events.amazonaws.com
      SourceArn: !GetAtt MonthEndRule.Arn

AWS CDK example

import * as events from 'aws-cdk-lib/aws-events';
import * as targets from 'aws-cdk-lib/aws-events-targets';

new events.Rule(this, 'MonthEndRule', {
  schedule: events.Schedule.expression('cron(0 0 L * ? *)'),
  targets: [new targets.LambdaFunction(monthEndLambda)],
});

For the newer EventBridge Scheduler with timezone support:

import * as scheduler from 'aws-cdk-lib/aws-scheduler';

new scheduler.CfnSchedule(this, 'MonthEndSchedule', {
  scheduleExpression: 'cron(0 0 L * ? *)',
  scheduleExpressionTimezone: 'America/New_York',
  flexibleTimeWindow: { mode: 'OFF' },
  target: { arn: monthEndLambda.functionArn, roleArn: schedulerRole.roleArn },
});

AWS-specific pitfalls

  • Always six fields — AWS rejects 5-field expressions. Even cron(0 0 L * ?) is invalid; you need the trailing year (* for any).
  • Always wrap in `cron(...)` — bare cron strings are not accepted.
  • UTC by default — EventBridge Rules are UTC-only. Use EventBridge Scheduler if you need a specific timezone.
  • Latency tolerance — EventBridge guarantees fire-within-a-minute; for tighter SLAs, use Step Functions Wait states or a longer-running daemon.

Frequently asked questions

Does AWS EventBridge support the L modifier for last day of the month?

Yes. AWS EventBridge cron expressions accept `L` in the day-of-month field. Use `cron(0 0 L * ? *)` for midnight UTC on the last day of every month. AWS cron has 6 fields (minute, hour, day-of-month, month, day-of-week, year) — note the year field is required.

Why is the `?` required in AWS cron?

AWS EventBridge follows the Quartz convention: you cannot specify both day-of-month and day-of-week as values. Exactly one must be `?` (no specific value). When you constrain day-of-month with `L`, the day-of-week field must be `?`.

What timezone does AWS EventBridge cron use?

By default, all cron expressions run in UTC. To run in a specific timezone, use the EventBridge Scheduler (newer service) which accepts a `ScheduleExpressionTimezone` parameter. Older EventBridge Rules are UTC-only — you have to convert your local time to UTC manually.

What's the difference between EventBridge Rules and EventBridge Scheduler?

EventBridge Rules is the original service (still supported). EventBridge Scheduler is the newer, dedicated scheduler with timezone support, one-off schedules, and higher throughput. Both accept the same cron syntax (`cron(...)`), and both support `L`.

Does AWS support `LW` (last weekday)?

AWS EventBridge does not support `W` or `LW`. To run on the last weekday of the month, schedule daily and check the weekday at runtime in your Lambda — `event.time` plus `Date.prototype.getDay()` is enough.

Ready to schedule it?

Point Crontap at any URL. Pick any cron. Done.

WordPress, Shopify, Railway, Cloud Run, Vercel, HubSpot, Ghost, your own box. If it answers HTTP, Crontap can drive it on a clock you can read, in the timezone that actually matters, and page you when something breaks.

Free forever tier ・ No credit card required

Your next schedule
GET/wp-cron.php?doing_wp_cron=1

Schedule

every 5 minutes

Next run

in 23s

Apihustle Logo

This tool is part of the Apihustle suite - a collection of tools to test, improve and get to know your API inside and out.

  • Clobbr logo

    Clobbr

    The app & CLI tool to test API endpoint speed.

    Visit
  • Crontap logo

    Crontap

    Schedule recurring API calls using cron syntax.

    Visit
  • CronTool logo

    CronTool

    Debug multiple cron expressions on a calendar.

    Visit

  • Page AI

    AI Website Generator that designs and writes clean code.

    Visit
  • Shipixen

    Generate customized boilerplates in minutes.

    Visit
  • Page UI

    Landing page UI components for React & Next.js

    Visit