Cron expression
Last day of the month
0 23 L * *
Runs at 23:00 on the last day of every month: the 28th, 29th, 30th or 31st.
Runs per month
≈ 1
Next run (UTC)
Sat 23:00
On CronEngine
Runs on the free plan
What each part means
| Minute | 0 | at minute 0 |
| Hour | 23 | at hour 23 |
| Day of month | L | the last day of the month |
| Month | * | every month |
| Day of week | * | every day of the week |
Next runs
- 1 Saturday 31 October 2026 23:00 UTC
- 2 Monday 30 November 2026 23:00 UTC
- 3 Thursday 31 December 2026 23:00 UTC
- 4 Sunday 31 January 2027 23:00 UTC
- 5 Sunday 28 February 2027 23:00 UTC
See these in your own timezone, or change the schedule →
Good to know
- L means "last day of the month". It is supported by CronEngine, Quartz and several other schedulers, but not by a classic Linux crontab or GitHub Actions.
- In a crontab, run on the 28th to 31st and let the command check whether tomorrow is the 1st; see the snippet below.
Typical uses: Closing the books, month-end exports, final billing runs.
Copy and paste
# A classic crontab has no L. Run on the 28th to 31st and let the # command check that tomorrow is the 1st: 0 23 28-31 * * [ "$(date -d tomorrow +\%d)" = "01" ] && /path/to/script.sh
GitHub Actions does not support L in a schedule.
Schedule::command('your:command')->lastDayOfMonth('23:00');
Variations
| 0 0 1 * * | The first day of the month → |
| 0 9 28 * * | The 28th of every month, which exists in every month |
Questions
What is the cron expression for last day of the month?
0 23 L * *. Runs at 23:00 on the last day of every month: the 28th, 29th, 30th or 31st.
Can GitHub Actions run last day of the month?
GitHub Actions does not support L in a schedule.
More schedules: months
← All cron schedules · Cron cheat sheet · Cron expression generator