# Cron Calculator > Free online tool to build, validate, and understand cron expressions. Translates any expression into plain English, previews the next run times in any timezone, warns about common gotchas (day-of-month/day-of-week OR logic, uneven */n steps, 6-field seconds), and exports to crontab, GitHub Actions, Kubernetes, AWS EventBridge, and Vercel. Cron format: `minute hour day-of-month month day-of-week`. Minute 0-59, hour 0-23, day of month 1-31, month 1-12 or JAN-DEC, day of week 0-6 or SUN-SAT (7 is also Sunday). Aliases: @hourly, @daily (@midnight), @weekly, @monthly, @yearly (@annually). ## Tools - [Cron Calculator](https://croncalculator.com/): Build and validate a cron expression, read it in plain English, and preview the next 50 runs in any timezone. - [Common Cron Expressions](https://croncalculator.com/cron): 78 ready-to-copy schedules, each with an explanation, a field-by-field breakdown, and crontab/GitHub Actions snippets. - [Schedule Planner](https://croncalculator.com/planner): Paste a crontab to see every job on a 7×24 heatmap, spot overlaps, and find conflict-free slots for new jobs. ## Repeating intervals - [Cron expression for every minute](https://croncalculator.com/cron/every-minute): `* * * * *` - [Cron expression for every 2 minutes](https://croncalculator.com/cron/every-2-minutes): `*/2 * * * *` - [Cron expression for every 3 minutes](https://croncalculator.com/cron/every-3-minutes): `*/3 * * * *` - [Cron expression for every 5 minutes](https://croncalculator.com/cron/every-5-minutes): `*/5 * * * *` - [Cron expression for every 7 minutes](https://croncalculator.com/cron/every-7-minutes): `*/7 * * * *` (closest single line, not exact — the page explains) - [Cron expression for every 10 minutes](https://croncalculator.com/cron/every-10-minutes): `*/10 * * * *` - [Cron expression for every 15 minutes](https://croncalculator.com/cron/every-15-minutes): `*/15 * * * *` - [Cron expression for every 20 minutes](https://croncalculator.com/cron/every-20-minutes): `*/20 * * * *` - [Cron expression for every 25 minutes](https://croncalculator.com/cron/every-25-minutes): `*/25 * * * *` (closest single line, not exact — the page explains) - [Cron expression for every 30 minutes](https://croncalculator.com/cron/every-30-minutes): `*/30 * * * *` - [Cron expression for every 40 minutes](https://croncalculator.com/cron/every-40-minutes): `*/40 * * * *` (closest single line, not exact — the page explains) - [Cron expression for every 45 minutes](https://croncalculator.com/cron/every-45-minutes): `*/45 * * * *` (closest single line, not exact — the page explains) - [Cron expression for every hour](https://croncalculator.com/cron/every-hour): `0 * * * *` - [Cron expression for every 2 hours](https://croncalculator.com/cron/every-2-hours): `0 */2 * * *` - [Cron expression for every 3 hours](https://croncalculator.com/cron/every-3-hours): `0 */3 * * *` - [Cron expression for every 4 hours](https://croncalculator.com/cron/every-4-hours): `0 */4 * * *` - [Cron expression for every 6 hours](https://croncalculator.com/cron/every-6-hours): `0 */6 * * *` - [Cron expression for every 8 hours](https://croncalculator.com/cron/every-8-hours): `0 */8 * * *` - [Cron expression for every 12 hours](https://croncalculator.com/cron/every-12-hours): `0 */12 * * *` - [Cron expression for every other day](https://croncalculator.com/cron/every-other-day): `0 0 */2 * *` (closest single line, not exact — the page explains) - [Cron expression for every 3 days](https://croncalculator.com/cron/every-3-days): `0 0 */3 * *` (closest single line, not exact — the page explains) ## Daily schedules - [Cron expression for every day at midnight](https://croncalculator.com/cron/every-day-at-midnight): `0 0 * * *` - [Cron expression for every day at 1 AM](https://croncalculator.com/cron/every-day-at-1am): `0 1 * * *` - [Cron expression for every day at 2 AM](https://croncalculator.com/cron/every-day-at-2am): `0 2 * * *` - [Cron expression for every day at 3 AM](https://croncalculator.com/cron/every-day-at-3am): `0 3 * * *` - [Cron expression for every day at 4 AM](https://croncalculator.com/cron/every-day-at-4am): `0 4 * * *` - [Cron expression for every day at 5 AM](https://croncalculator.com/cron/every-day-at-5am): `0 5 * * *` - [Cron expression for every day at 6 AM](https://croncalculator.com/cron/every-day-at-6am): `0 6 * * *` - [Cron expression for every day at 7 AM](https://croncalculator.com/cron/every-day-at-7am): `0 7 * * *` - [Cron expression for every day at 8 AM](https://croncalculator.com/cron/every-day-at-8am): `0 8 * * *` - [Cron expression for every day at 9 AM](https://croncalculator.com/cron/every-day-at-9am): `0 9 * * *` - [Cron expression for every day at 10 AM](https://croncalculator.com/cron/every-day-at-10am): `0 10 * * *` - [Cron expression for every day at 11 AM](https://croncalculator.com/cron/every-day-at-11am): `0 11 * * *` - [Cron expression for every day at noon](https://croncalculator.com/cron/every-day-at-noon): `0 12 * * *` - [Cron expression for every day at 1 PM](https://croncalculator.com/cron/every-day-at-1pm): `0 13 * * *` - [Cron expression for every day at 2 PM](https://croncalculator.com/cron/every-day-at-2pm): `0 14 * * *` - [Cron expression for every day at 3 PM](https://croncalculator.com/cron/every-day-at-3pm): `0 15 * * *` - [Cron expression for every day at 4 PM](https://croncalculator.com/cron/every-day-at-4pm): `0 16 * * *` - [Cron expression for every day at 5 PM](https://croncalculator.com/cron/every-day-at-5pm): `0 17 * * *` - [Cron expression for every day at 6 PM](https://croncalculator.com/cron/every-day-at-6pm): `0 18 * * *` - [Cron expression for every day at 7 PM](https://croncalculator.com/cron/every-day-at-7pm): `0 19 * * *` - [Cron expression for every day at 8 PM](https://croncalculator.com/cron/every-day-at-8pm): `0 20 * * *` - [Cron expression for every day at 9 PM](https://croncalculator.com/cron/every-day-at-9pm): `0 21 * * *` - [Cron expression for every day at 10 PM](https://croncalculator.com/cron/every-day-at-10pm): `0 22 * * *` - [Cron expression for every day at 11 PM](https://croncalculator.com/cron/every-day-at-11pm): `0 23 * * *` - [Cron expression for twice a day](https://croncalculator.com/cron/twice-a-day): `0 0,12 * * *` ## Weekly schedules - [Cron expression for every Sunday](https://croncalculator.com/cron/every-sunday): `0 0 * * 0` - [Cron expression for every Sunday at 9 AM](https://croncalculator.com/cron/every-sunday-at-9am): `0 9 * * 0` - [Cron expression for every Sunday at 6 PM](https://croncalculator.com/cron/every-sunday-at-6pm): `0 18 * * 0` - [Cron expression for every Monday](https://croncalculator.com/cron/every-monday): `0 0 * * 1` - [Cron expression for every Monday at 9 AM](https://croncalculator.com/cron/every-monday-at-9am): `0 9 * * 1` - [Cron expression for every Monday at 6 PM](https://croncalculator.com/cron/every-monday-at-6pm): `0 18 * * 1` - [Cron expression for every Tuesday](https://croncalculator.com/cron/every-tuesday): `0 0 * * 2` - [Cron expression for every Tuesday at 9 AM](https://croncalculator.com/cron/every-tuesday-at-9am): `0 9 * * 2` - [Cron expression for every Tuesday at 6 PM](https://croncalculator.com/cron/every-tuesday-at-6pm): `0 18 * * 2` - [Cron expression for every Wednesday](https://croncalculator.com/cron/every-wednesday): `0 0 * * 3` - [Cron expression for every Wednesday at 9 AM](https://croncalculator.com/cron/every-wednesday-at-9am): `0 9 * * 3` - [Cron expression for every Wednesday at 6 PM](https://croncalculator.com/cron/every-wednesday-at-6pm): `0 18 * * 3` - [Cron expression for every Thursday](https://croncalculator.com/cron/every-thursday): `0 0 * * 4` - [Cron expression for every Thursday at 9 AM](https://croncalculator.com/cron/every-thursday-at-9am): `0 9 * * 4` - [Cron expression for every Thursday at 6 PM](https://croncalculator.com/cron/every-thursday-at-6pm): `0 18 * * 4` - [Cron expression for every Friday](https://croncalculator.com/cron/every-friday): `0 0 * * 5` - [Cron expression for every Friday at 9 AM](https://croncalculator.com/cron/every-friday-at-9am): `0 9 * * 5` - [Cron expression for every Friday at 6 PM](https://croncalculator.com/cron/every-friday-at-6pm): `0 18 * * 5` - [Cron expression for every Saturday](https://croncalculator.com/cron/every-saturday): `0 0 * * 6` - [Cron expression for every Saturday at 9 AM](https://croncalculator.com/cron/every-saturday-at-9am): `0 9 * * 6` - [Cron expression for every Saturday at 6 PM](https://croncalculator.com/cron/every-saturday-at-6pm): `0 18 * * 6` ## Weekday & weekend schedules - [Cron expression for every weekday](https://croncalculator.com/cron/every-weekday): `0 0 * * 1-5` - [Cron expression for every weekday at 9am](https://croncalculator.com/cron/every-weekday-at-9am): `0 9 * * 1-5` - [Cron expression for every weekday at 6pm](https://croncalculator.com/cron/every-weekday-at-6pm): `0 18 * * 1-5` - [Cron expression for every weekend](https://croncalculator.com/cron/every-weekend): `0 0 * * 0,6` - [Cron expression for every 15 minutes during business hours](https://croncalculator.com/cron/every-15-minutes-during-business-hours): `*/15 9-17 * * 1-5` ## Monthly & yearly schedules - [Cron expression for every month](https://croncalculator.com/cron/every-month): `0 0 1 * *` - [Cron expression for the first of the month at 9 AM](https://croncalculator.com/cron/first-of-the-month-at-9am): `0 9 1 * *` - [Cron expression for the 15th of every month](https://croncalculator.com/cron/fifteenth-of-the-month): `0 0 15 * *` - [Cron expression for every quarter](https://croncalculator.com/cron/every-quarter): `0 0 1 1,4,7,10 *` - [Cron expression for every year](https://croncalculator.com/cron/every-year): `0 0 1 1 *` - [Cron expression for the last day of the month](https://croncalculator.com/cron/last-day-of-the-month): `0 0 28-31 * *` (closest single line, not exact — the page explains) ## FAQ ### What's the difference between 5-field and 6-field cron? Standard cron uses 5 fields (minute, hour, day of month, month, day of week). Quartz and Spring add a 6th field for seconds at the beginning. This tool accepts both and warns you when a 6-field expression won't be portable to standard crontab, GitHub Actions, or Kubernetes. ### Is Sunday 0 or 7? Both work in most implementations. Sunday is typically 0, with Saturday as 6. Many systems, including this tool, also accept 7 for Sunday. ### How do I run a cron job every 2 hours? Use 0 */2 * * * to run at minute 0 of every 2nd hour (midnight, 2 AM, 4 AM, and so on). Because 24 divides evenly by 2, the spacing stays even across midnight. ### Why does my cron job run on days I didn't expect? If you restrict both day of month and day of week, cron combines them with OR, not AND. For example 0 0 1 * 1 runs on the 1st of the month AND on every Monday, not only on Mondays that fall on the 1st. To require both conditions, restrict one field and check the other inside your script. ### Can I run a cron job on the last day of the month? Standard cron doesn't support 'last day of month' directly. You'll need a workaround script that checks the date, or an extended implementation such as Quartz that supports the L character. ### Does */7 really run every 7 minutes? Not across the hour boundary. Steps restart each cycle, so */7 fires at minutes 0, 7, 14, 21, 28, 35, 42, 49, and 56 — then the next run is at minute 0, only 4 minutes later. No list of minutes can fix that either, since 60 isn't a multiple of 7. Use a step that divides 60 evenly (5, 6, 10, 12, 15, 20 or 30), or move the job to a loop or a systemd timer if the exact interval matters. ### Can cron run every 30 seconds (or every 10 seconds)? Not directly — one minute is the smallest unit in standard cron. The usual workaround is two crontab lines that both run every minute, with the second one delayed: `* * * * * /path/to/job` and `* * * * * sleep 30; /path/to/job`. Every 10 seconds would need six lines with sleep 10 through 50, at which point a long-running loop or a scheduler with a seconds field (Quartz and Spring accept `*/30 * * * * *`) is the better tool. ### How do I run a cron job every two weeks? Cron has no 'every N weeks': day-of-month steps restart on the 1st, so `*/14` doesn't give a clean fortnight. Run weekly and let the command skip alternate weeks: `0 9 * * 1 [ $(expr $(date +\%s) / 604800 \% 2) -eq 0 ] && /path/to/job` splits Unix time into 7-day blocks and only runs in the even ones. The backslashes matter — crontab treats a bare % as a newline. The same trick with 86400 instead of 604800 gives every other day. ### How do I run a cron job every 90 minutes? No single expression can, because 90 doesn't divide an hour or a day evenly. Two lines cover it exactly: `0 0-21/3 * * *` fires at 00:00, 03:00, 06:00 and so on, and `30 1-22/3 * * *` fires at 01:30, 04:30, 07:30 and so on. Together that's every 90 minutes, including across midnight. ### Where do I put a cron expression once I have it? On Linux and macOS, run crontab -e to edit your user's crontab. Each line is an expression followed by the command, for example `0 3 * * * /usr/local/bin/backup.sh`, and crontab -l lists what's installed. Cron doesn't load your shell profile, so use full paths. On CI and cloud platforms the expression goes into config instead — the export menu above formats it for GitHub Actions, Kubernetes, AWS EventBridge, and Vercel. ### What timezone do cron expressions use? Cron expressions have no timezone of their own — they're interpreted in whatever timezone the scheduler runs in, which is usually UTC on servers and CI platforms. GitHub Actions is always UTC. This calculator lets you preview run times in any timezone so you can check before you deploy.