The cron expression to run a job twice a day is 0 0,12 * * *, at midnight and noon. Swap in any two hours, then check both run times in your own timezone.
Paste an expression or choose a starting schedule below.
Select a field to edit it.
Schedule summary
Build a schedule
Use the fields above to edit this expression, or replace it with a simple schedule here.
Upcoming runs
The next 50 runs, shown in the schedule timezone and your local time.
About 0 0,12 * * *
0 0,12 * * * lists two hours separated by a comma, so the job runs at midnight and again at noon. Any pair works the same way — 0 6,18 * * * runs at 6 AM and 6 PM — while 0 */12 * * * is shorthand for the midnight-and-noon pair only.
Cron reads the five fields as minute hour day month weekday. For this schedule that breaks down as:
| Field | Position | Matches |
|---|---|---|
0 | minute | 0 |
0,12 | hour | 0, 12 |
* | day of month | every day |
* | month | every month |
* | day of week | every day of the week |
New to cron? Read the syntax reference or the FAQ.
Use it in crontab or GitHub Actions
The snippets below use UTC. The crontab timezone setting requires a compatible daemon such as Cronie. GitHub Actions defaults to UTC and accepts a timezone on each schedule. For other timezones, Kubernetes, EventBridge Scheduler, or Vercel, use the export menu in the calculator above.
crontab
# At 12:00 AM and 12:00 PM, every day # CRON_TZ requires a cron implementation that supports it, such as Cronie. CRON_TZ=UTC 0 0,12 * * * /path/to/command
GitHub Actions workflow
# At 12:00 AM and 12:00 PM, every day
on:
schedule:
- cron: '0 0,12 * * *'
timezone: "UTC"