Skip to content

Cron every 30 minutes

*/30 * * * * means “Every 30 minutes”. It runs 48 times a day.

100% Local Browser Execution • Zero Server Uploads • Air-Gap Safe

100% Local Tool Execution • Tool Inputs Never Leave Your Browser Cron field parser

Cron expression

*/30****

0–59

0–23

1–31

1–12 · JAN–DEC

0–6 · SUN–SAT

Reads as

Every 30 minutes

Next 7 runs

    crontab -e

    # m h dom mon dow command
    */30 * * * * /usr/local/bin/backup.sh

    Systemd timer (OnCalendar=)

    OnCalendar=*-*-* *:00/30:00

    Unit files: backup.service + backup.timer

    # /etc/systemd/system/backup.service
    [Unit]
    Description=backup (converted from cron)
    
    [Service]
    Type=oneshot
    ExecStart=/usr/local/bin/backup.sh
    
    # /etc/systemd/system/backup.timer
    [Unit]
    Description=Run backup on a schedule
    
    [Timer]
    OnCalendar=*-*-* *:00/30:00
    Persistent=true
    
    [Install]
    WantedBy=timers.target
    
    # Enable: sudo systemctl daemon-reload && sudo systemctl enable --now backup.timer

    CtrlEnter to run

    Wrong result, broken layout or an idea? Tell us about this tool.

    Cron every 30 minutes Crontab Schedule and Systemd Timer & Security Architecture Banner

    This crontab generator and cron expression translator turns a five-field schedule such as */15 9-17 * * 1-5 into plain English and lists the next seven run times in both UTC and your local time zone. Use it as a cron expression generator when writing a new job, or as a crontab calculator to check what an existing line in production actually does.

    Breaking down */30 * * * *

    • Minute */30: every 30 minutes, starting at 0
    • Hour *: every hour (0–23)
    • Day *: every day (1–31)
    • Month *: every month (1–12)
    • Weekday *: every weekday (0–6)

    Together they read as Every 30 minutes, which runs 48 times a day. The same expression works in Kubernetes CronJobs and GitHub Actions schedule, which evaluate it in UTC.

    The five fields of a cron expression

    A standard cron expression has five space-separated fields, read left to right: minute (0–59), hour (0–23), day of month (1–31), month (1–12 or JAN–DEC) and day of week (0–6 or SUN–SAT, where 7 is also Sunday). A line in a crontab file adds the command after these five fields.

    Each field accepts a value (5), a list (1,15,30), a range (9-17), a step (*/10) or a combination such as 0-30/5. An asterisk means “every value”. The visualizer highlights the matching field pill as you hover, so you can see which part of the cron schedule drives each part of the description.

    How it works: Cron Visualizer

    Cron every 30 minutes Crontab Schedule and Systemd Timer & Security Architecture Diagram. Diagram of the cron expression */15 9-17 * * 1-5 broken into minute, hour, day, month and weekday fields, translated to “every 15 minutes, 09:00–17:59, Monday–Friday” with a timeline of upcoming runs.
    Diagram of the cron expression */15 9-17 * * 1-5 broken into minute, hour, day, month and weekday fields, translated to “every 15 minutes, 09:00–17:59, Monday–Friday” with a timeline of upcoming runs.

    The day-of-month and day-of-week trap

    When both the day-of-month and day-of-week fields are restricted, Vixie cron (the cron on Debian, Ubuntu, RHEL and macOS) runs the job when either matches, not when both match. 0 9 13 * 5 therefore runs on the 13th of every month and on every Friday, not only on Friday the 13th.

    If you need “first Monday of the month”, schedule 0 9 1-7 * * and guard the command with a weekday test: [ "$(date +\%u)" = 1 ] && /path/to/job. Note the escaped percent sign: cron treats a bare % as a newline.

    Time zones, daylight saving and missed runs

    Cron evaluates schedules in the system time zone of the server, which on most cloud images is UTC. The next-run timeline shows both UTC and your browser’s local time so you can spot the difference before it becomes an incident.

    Around daylight-saving transitions, jobs scheduled between 01:00 and 03:00 local time can run twice or not at all. Schedule critical jobs in UTC, or outside that window. Cron also does not catch up on runs missed while the machine was off; use anacron or a systemd timer with Persistent=true if you need that.

    Macros, Kubernetes CronJobs and other dialects

    Most crons accept shortcuts: @hourly (0 * * * *), @daily or @midnight (0 0 * * *), @weekly (0 0 * * 0), @monthly, @yearly and @reboot, which runs once at startup.

    Kubernetes CronJob, GitHub Actions schedule and most CI systems use the same five-field syntax, always in UTC unless you set timeZone. Quartz (Java) and AWS EventBridge use six or seven fields with a seconds or year field and a ? placeholder, so paste only the standard five fields here.

    • If you have used crontab guru, the syntax here is identical; this tool adds local and UTC timelines side by side.
    • Avoid * * * * * for heavy jobs: one run per minute adds up to 1,440 runs a day.
    • Spread load by offsetting minutes (7,37 * * * *) instead of starting every job at minute 0.

    Cron schedule cheat sheet

    Copy-ready cron expressions for the schedules people search for most.
    ExpressionMeaningRuns per day
    * * * * *Every minute1,440
    */5 * * * *Every 5 minutes288
    */15 * * * *Every 15 minutes96
    */30 * * * *Every 30 minutes48
    0 * * * *Every hour, on the hour24
    0 */4 * * *Every 4 hours (00, 04, 08…)6
    0 */6 * * *Every 6 hours4
    0 0 * * *Every day at midnight1
    0 9 * * 1-5Weekdays at 09:001 (Mon–Fri)
    0 0 * * 0Weekly, Sunday at midnight1 per week
    0 0 1 * *Monthly, on the 1st1 per month

    Copy-ready cron expressions for the schedules people search for most.

    Command-line examples

    Edit your crontab

    crontab -e

    List your cron jobs

    crontab -l

    Add -u username (as root) to list another user’s jobs.

    List system-wide cron jobs

    ls /etc/cron.d /etc/cron.daily /etc/cron.hourly && cat /etc/crontab

    Log output from a job

    */5 * * * * /opt/backup.sh >> /var/log/backup.log 2>&1

    Frequently asked questions

    Use */30 * * * *. It reads as “Every 30 minutes” and runs 48 times a day.

    Related Engineering Guides