Cron Job Helper — Examples
Cron expressions explained: daily, every 15 minutes, weekdays, @reboot, checking a crontab line, DST — plus a web cron, a CMS and a DDEV example.
Back to the overview: Cron Job Helper · Open the live tool: www.jpkc.com/tools/cron/
The Manual explains every tab in detail. This page shows concrete expressions — what they mean, how to click them together in the Builder, and what to watch for in the Next Scheduled Runs. The interface is in English, so field and button names are quoted as-is.
Example 1: Daily at 3 AM
The classic for backups and maintenance — run it when little else is happening.
0 3 * * *How to build it: in the Builder, set Minute to Specific value 0, Hour to Specific value 3, and leave the other three fields on Every. Faster via the Daily 3 AM preset. The plain-text line confirms "At 03:00", and the Next Scheduled Runs show the next 03:00 occurrence each time — in the zone you set under Time zone of the server. Read it as: minute 0, hour 3, every day, every month, every weekday.
Example 2: Every 15 minutes
Typical for queue workers, web cron calls or scheduler triggers.
*/15 * * * *In the Builder, set Minute to Every N Minutes (/N)* and enter 15 — or click the Every 15 min preset. The */15 means "every 15 units", i.e. minutes 0, 15, 30 and 45 of every hour; the plain text reads "Every 15 minutes". Mind the step value: */15 counts from the field minimum (0), not from "now". Because 15 divides the hour evenly, the spacing also holds across the full hour — with */7 it would not (see Example 7).
Example 3: Weekdays, on the hour during office hours
Monday to Friday, 9 AM to 5 PM only — e.g. for tasks tied to staff or customers.
0 9-17 * * 1-5Here you combine two modes: Hour on Range (A–B) 9–17 and Day of Week on Range (A–B) 1–5 (Monday = 1, Friday = 5). Minute is 0. The result: on the hour, from 9 to 17, on weekdays — in plain text "At minute 0, during hours 9–17, on Mon–Fri". Instead of 1-5 you can also type mon-fri in the List / custom mode; the tool understands the names. If you only want it once on weekdays (say 08:30), use 30 8 * * 1-5.
Example 4: Monthly on the 1st at 4 AM
Month-end closing, reports, log rotation.
0 4 1 * *Minute 0, Hour 4, Day of Month Specific value 1, month and weekday stay *. This runs on the first day of every month at 04:00 ("At 04:00, on day 1 of the month"). If you also restricted the weekday, say to 1, the job would run on the 1st and on every Monday — the tool says so in plain text as "OR … (either one matches)". Related: the Monthly 1st preset (0 0 1 * *) for midnight, or @monthly as a special string in Manual Input.
Example 5: Once at startup — @reboot
Some jobs should run not at a clock time but once at boot — for instance to launch a worker or kick off a cleanup script.
@rebootType @reboot into the Manual Input field. The tool recognises the special string, describes it as "Once, when the cron daemon starts (system boot)" and shows no times in the Next Scheduled Runs, just a note that the job only runs when the cron daemon starts — because @reboot has no recurring schedule to project into the future. Unlike the other @ strings, @reboot therefore cannot be expanded into five fields; the Copy button copies it unchanged as @reboot.
Example 6: Weekends at midnight
Saturday and Sunday, each at 00:00 — via a list in the day-of-week field.
0 0 * * 6,0Set Day of Week to List / custom with 6,0 (Saturday = 6, Sunday = 0), minute and hour to 0. The Weekends preset sets exactly this; the plain text reads "At 00:00, on Sat, Sun". You may also write Sunday as 7 — 6,7 or sat,sun give the same runs in the tool. The preset uses the 0 notation.
Example 7: Checking a whole crontab line
You have inherited a line from an existing crontab and want to know when it really runs:
*/7 * * * * /usr/bin/php /var/www/html/bin/cleanup.phpPaste the complete line into the Manual Input field. The tool separates schedule and command: the Cron Expression card shows the five fields, with "Command: /usr/bin/php /var/www/html/bin/cleanup.php" below. The plain text reads "At minutes 0, 7, 14, 21, 28, 35, 42, 49, 56 of every hour", and a yellow warning explains the trap: after minute 56 comes minute 0 again, so the gap across the hour boundary is 4 minutes, not 7. If you really need even spacing, pick a step that divides 60 (*/5, */6, */10).
The command stays put when you then change the schedule in the field cards, and the Copy button copies the complete line.
Example 8: Daylight saving time — 02:30 in Berlin
A backup is supposed to run every day at 02:30, and the server runs in Europe/Berlin:
30 2 * * *Select Europe/Berlin under Time zone of the server (the tool remembers the choice). If the spring clock change falls within the eight runs shown, the changeover Sunday has an entry at 03:00 CEST with the note "DST: 02:30 does not exist — cronie runs it right after the jump": the clock leaps from 02:00 to 03:00, and cronie catches up on a fixed-time job right after the jump. On the night the clocks go back in October, 02:30 happens twice — the job still runs only once ("fixed-time job runs once").
A wildcard job such as */30 2 * * * behaves differently: it follows the wall clock, drops out on the spring night and runs four times instead of twice on the autumn night. To avoid such effects, keep jobs outside 02:00–03:00 or run the server in UTC.
Web cron example: a protected endpoint with ~/.netrc
An endpoint behind HTTP basic auth should be called every 15 minutes, but the password must appear neither in the crontab nor in the process list. In the Web Cron tab, enter the URL (https://example.com/cron/run?token=abc%20def), and set HTTP Auth User to cronuser. Leave HTTP Auth Pass empty, since the password goes straight into .netrc. Then tick Read credentials from ~/.netrc instead of the command line. The Generated Crontab Line then reads:
*/15 * * * * curl --fail -sS --max-time 30 --netrc -o /dev/null 'https://example.com/cron/run?token=abc\%20def' > /dev/null 2>&1Three details: instead of -u 'user:pass', the line only contains --netrc; the % from the URL is escaped as \%, because a bare % would end the command in a crontab (Command only holds the unescaped version for testing in a shell); and below the line the tool shows the matching .netrc line for the host — with your user and, because the password field is empty, the placeholder YOUR_PASSWORD (with a password entered, the real password would appear there):
machine example.com login cronuser password YOUR_PASSWORDReplace the placeholder with the real password, put the line into the cron user's home directory and protect the file with chmod 600 ~/.netrc. With wget as the tool, the auth options disappear entirely, because wget reads .netrc on its own.
CMS example: WordPress via a real cron instead of WP-Cron
WordPress's built-in WP-Cron only fires on page loads and is unreliable on low-traffic sites. The CMS & Frameworks tab shows the robust path.
Step 1 — disable WP-Cron in wp-config.php:
define( 'DISABLE_WP_CRON', true );Step 2 — add a real cron every 5 minutes via WP-CLI to the web server user's crontab (crontab -u www-data -e):
*/5 * * * * wp cron event run --due-now --path=/var/www/html --quietThis personal crontab has no user column — the job automatically runs as www-data. If you put the line into a file under /etc/cron.d/ instead, the user goes between schedule and command (*/5 * * * * www-data wp cron …). The WP-CLI path is faster than a curl call because it needs no HTTP request. If you do want curl, the tab provides the alternative on wp-cron.php.
Docker example: cron in a DDEV project
In the Docker / DDEV tab, the simplest DDEV path is a host cron that calls into the running container via ddev exec.
*/5 * * * * cd /home/user/myproject && ddev exec php artisan schedule:run >> /dev/null 2>&1Important: ddev exec only works while the project is running (ddev start) — otherwise the line fails. For a persistent run independent of the host cron, the tab shows the recommended variant: a custom DDEV service in .ddev/docker-compose.cron.yaml with a while true; … sleep 60 loop. For WordPress in DDEV there is the ready-made line ddev wp cron event run --due-now.
More context: the overview for the big picture, the Manual for every tab, and the Tips & Tricks for the pitfalls. Try it all directly in the tool.