How 0 0 * * * Works
0 0 * * * fires once per day at exactly midnight. The first 0 is minute zero; the second 0 is hour zero (midnight). The three wildcards match every day, every month, and every weekday.
Equivalent shorthand: @daily or @midnight (both are aliases for 0 0 * * * in most implementations).
Important: midnight is in the server's local timezone, which is often UTC on cloud servers. If you need midnight in a specific timezone, set CRON_TZ=America/New_York at the top of your crontab (Linux) or configure the scheduler's timezone.
Field Breakdown
| Field | Value | Meaning |
|---|---|---|
| Minute | 0 | At minute zero |
| Hour | 0 | At hour zero (midnight) |
| Day of month | * | Every day |
| Month | * | Every month |
| Weekday | * | Every day of week |
Next 10 Run Times
Approximate run times starting from the current date. Open in the builder to see exact run times in your timezone.
Platform Examples
0 0 * * * /path/to/script.sh
# or:
@daily /path/to/script.sh
on:
schedule:
- cron: '0 0 * * *' # midnight UTC
cron(0 0 * * ? *)
spec:
schedule: "0 0 * * *"
cron.schedule('0 0 * * *', () => { ... });
scheduler.add_job(fn, 'cron', hour=0, minute=0)
Related Cron Expressions
FAQ
Build or explain any cron expression
Use the free visual builder — paste an expression for a plain-English explanation, or click your way to a schedule. See the next 10 run times. No login.
Open CronBuilder →