Cron is a time-based job scheduler built into Unix and Linux operating systems. The name comes from the Greek word χρόνος (chronos), meaning time. The cron daemon reads a configuration file called a crontab (cron table) and executes scheduled commands at the specified times. Every developer who has automated a nightly database backup, sent a scheduled report email, rotated log files, or cleared a cache on a timer has worked with cron expressions.
A standard cron expression has five space-separated fields: minute (0–59), hour (0–23), day of month (1–31), month (1–12), and day of week (0–6, where both 0 and 7 represent Sunday). Four special characters extend the syntax. An asterisk (*) means every possible value for that field. A comma (,) separates multiple values — 1,15 means the 1st and 15th. A hyphen (-) defines a range — 1-5 means Monday through Friday. A slash (/) defines step values — */15 means every 15 units.
Three expressions every developer should commit to memory: 0 * * * * (every hour at the top of the hour), 0 0 * * * (every day at midnight), and */5 * * * * (every 5 minutes). More specific schedules like 30 9 * * 1-5 (9:30 AM on weekdays) and 0 0 1 * * (midnight on the first of each month) cover the majority of real-world scheduling requirements.
A developer needs to automate two recurring tasks for a production application: a database backup every night at 3:30 AM, and a weekly summary report emailed to the team every Monday at 9:00 AM.
For the nightly backup: 30 3 * * *. Reading left to right — minute 30, hour 3, any day of month (*), any month (*), any day of week (*). This runs at exactly 3:30 AM every single day, regardless of weekday or month. She pastes it into the decoder above to confirm the plain-English description reads “at 3:30 AM, every day” and checks the next five execution times against her expected schedule before deploying.
For the weekly report: 0 9 * * 1. Minute 0, hour 9, any day of month, any month, day of week 1 (Monday). This runs at 9:00 AM every Monday. The decoder shows the next five Mondays at 9:00 AM, confirming the schedule is correct. Both expressions are added to the server's crontab and tested in staging before being promoted to production.
Timezone handling is the most common source of cron bugs in production. Standard cron runs in the server's local timezone. A server configured to UTC running 0 9 * * 1 will send the Monday report at 9:00 AM UTC — which is 4:00 AM or 5:00 AM Eastern time, depending on daylight saving. Cloud scheduling services like AWS EventBridge, Google Cloud Scheduler, and Azure Logic Apps allow explicit timezone configuration, which is strongly preferred over manual offset calculation.
Six-field cron syntax adds a seconds field at the very beginning: seconds minute hour day month weekday. Spring Boot's @Scheduled annotation, Jenkins pipelines, and Quartz Scheduler use this format. A job running every 30 seconds in six-field cron is */30 * * * * *. This tool uses the standard five-field POSIX cron syntax. If your platform uses six fields, prepend the seconds value.
Common shorthand expressions simplify frequent schedules: @yearly (= 0 0 1 1 *), @monthly (= 0 0 1 * *), @weekly (= 0 0 * * 0), @daily (= 0 0 * * *), @hourly (= 0 * * * *), and @reboot (runs once on system startup). One important pitfall: specifying both day-of-month and day-of-week uses OR logic in standard cron — 0 0 1 * 1 runs at midnight on the first of every month AND on every Monday, not only on Mondays that happen to be the first.
This cron expression generator converts visual field inputs into valid cron syntax and vice versa. The cron job builder shows a plain English description and the next 5 actual execution dates so you can verify your schedule before deploying. Supports all standard cron features: * (any), , (list), - (range), and / (step). All parsing and date calculation runs in your browser — no server required.
A cron expression has 5 space-separated fields: minute (0–59), hour (0–23), day of month (1–31), month (1–12), and day of week (0–6, where 0 is Sunday). Use * to mean "every value". For example: 0 9 * * 1 means "at 9:00 AM every Monday". Use the Build tab to generate expressions visually from field inputs and preset buttons.
An asterisk (*) in a cron field means "every possible value" for that field. * in the minute field means every minute of the hour. * in the month field means every month of the year. A bare * * * * * runs the job every minute. You can combine * with / for step values: */15 in the minute field means every 15 minutes.
Use the step syntax with */15 in the minute field: */15 * * * *. This runs at minutes 0, 15, 30, and 45 of every hour. Click the "Every 15 minutes" preset button in the Build tab to load this automatically. The next 5 execution times are shown so you can confirm the schedule.
A cron expression is the scheduling syntax (e.g., 0 9 * * 1) that describes when a job should run. Crontab (cron table) is the configuration file that stores cron expressions alongside the commands to execute — edited with the crontab -e command on Unix/Linux. cron is the background daemon process that reads crontab files and runs the scheduled commands.
Switch to Decode mode and paste your cron expression into the input field. The tool parses each of the 5 fields, generates a plain English description (for example "at 9:00 AM, on Monday"), and shows the next 5 scheduled execution times with actual dates and times so you can verify the schedule is correct before deploying.