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. 1 Saturday 31 October 2026 23:00 UTC
  2. 2 Monday 30 November 2026 23:00 UTC
  3. 3 Thursday 31 December 2026 23:00 UTC
  4. 4 Sunday 31 January 2027 23:00 UTC
  5. 5 Sunday 28 February 2027 23:00 UTC

See these in your own timezone, or change the schedule →

Good to know

Typical uses: Closing the books, month-end exports, final billing runs.

Copy and paste

crontab -e Crontab
# 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.

routes/console.php Laravel
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.