Skip to content
cronhelp.me
Preset

Cron expression for daily at midnight

0 0 * * *
Cron expression5-field
At 12:00 AM
Lint
OKNo issues found — this expression is well-formed.
Next runs
#
1
2
3
4
5
6
7
Copy as

What it does

The expression 0 0 * * * runs a job once a day at 00:00, the start of every day. Minute and hour are both fixed at 0; the day, month and weekday fields are *, so it fires at midnight every day of the year.

It is equivalent to @daily and @midnight, and it is the workhorse schedule for nightly maintenance: backups, report generation, cleanup jobs, and cache resets. Running at midnight keeps heavy work off peak hours.

The catch is which midnight. Cron uses the server's local time zone, which is often UTC. If you think in local time, "midnight" on the server may be mid-evening or mid-morning for you — check the two time-zone columns in the tool below. Midnight is also inside the range where daylight-saving transitions can shift or, in rare zones, skip the hour; if exact once-per-day firing is critical, a time like 03:00 is safer than 00:00 in some regions.

Related presets

FAQ

Which time zone is midnight in?
The server's local time zone. Many servers run UTC, so 0 0 * * * is midnight UTC unless the host or scheduler sets a different zone.
Is 0 0 * * * the same as @daily?
Yes. @daily and @midnight both expand to 0 0 * * *.
How do I run at midnight in my own time zone?
Convert your local midnight to the server zone and use that hour, or set the scheduler's time zone if it supports one (for example Kubernetes CronJob timeZone). GitHub Actions is UTC-only.