Convert a Linux crontab expression (5 fields) into a valid Java Quartz cron expression (6–7 fields). The converter adds the seconds field, remaps day-of-week numbering, places the required ?, validates every field, and warns you when a schedule cannot be expressed exactly in Quartz.
Converter
Batch mode
Convert many expressions at once — one Linux cron per line.
Worked examples
Click any example to load it into the converter.
Linux cron (5-field)
Quartz (7-field)
Meaning
0 9 * * 1-5
0 0 9 ? * 2-6
Weekdays at 9:00 AM (day-of-week remapped)
*/15 * * * *
0 */15 * * * ?
Every 15 minutes (steps carry over)
30 2 * * 0
0 30 2 ? * 1
Sundays at 2:30 AM (0 → 1)
0 0 1 * *
0 0 0 1 * ?
1st of every month at midnight
15 10 * 6 3
0 15 10 ? 6 4
Wednesdays in June at 10:15 AM
0 22 * * 5
0 0 22 ? * 6
Fridays at 10:00 PM
@daily
0 0 0 * * ?
Shortcut expanded, then converted
0 8 1 * 1
0 0 8 1 * ? + 0 0 8 ? * 2
OR trap: needs two triggers (warning shown)
5-field vs 7-field: what changes
#
Linux cron field
Quartz field
What the converter does
1
—
seconds (0–59)
Added (default 0; change it in the options).
2
minute (0–59)
minute
Copied unchanged, including */n steps, ranges and lists.
3
hour (0–23)
hour
Copied unchanged.
4
day-of-month (1–31)
day-of-month
Copied unchanged, or ? when only day-of-week is restricted.
5
month (1–12)
month
Copied unchanged (names JAN–DEC accepted by both).
6
day-of-week (0–7)
day-of-week (1–7)
Renumbered: Linux 0/7 = Sunday → Quartz 1 = Sunday. Or ? when only day-of-month is restricted.
7
—
year (optional)
Omitted by default (6-field output works in Spring @Scheduled); enable it above if you need 7 fields.
The ? rule
Quartz requires exactly one of day-of-month or day-of-week to be ? (“no specific value”). The converter applies the standard rule: the day field your Linux cron leaves unrestricted (starts with *) becomes ?; the restricted one keeps its values. If both are *, day-of-week becomes ? by convention.
The OR trap (read this before deploying)
Linux cron treats two restricted day fields as OR: 0 0 1 * 5 fires on the 1st of the month and every Friday. Quartz forbids constraining both day fields in one trigger, so this schedule has no exact single-trigger equivalent. The converter detects this, warns you, and emits two triggers (0 0 0 1 * ? and 0 0 0 ? * 6) — schedule both, because Quartz applies OR across triggers. Blindly converting 0 0 1 * 5 to 0 0 0 1 * ? silently drops all the Friday runs.
Sunday numbering
Linux: Sunday = 0 (or 7), Saturday = 6. Quartz: Sunday = 1, Saturday = 7. Every numeric day-of-week value is shifted by one; day names (SUN–SAT) are identical in both dialects and pass through untouched.
Related tool: this page converts cron formats. To understand what an expression means — plain-English description, next run times, timezone and DST checks — use our Cron Expression Explainer.
Frequently asked questions
Linux (Vixie/cronie) cron uses 5 fields: minute, hour, day-of-month, month, day-of-week, with no seconds. Quartz uses 6 or 7 fields: seconds, minute, hour, day-of-month, month, day-of-week, plus an optional year. Quartz also supports the special characters ?, L, W and #, and numbers Sunday as 1 instead of 0.
Quartz requires exactly one of day-of-month or day-of-week to be ?, which means "no specific value". When your Linux cron restricts only one of the two day fields, the other becomes ?. When both are *, this converter outputs day-of-month * and day-of-week ?.
Linux cron numbers Sunday as 0 (or 7), Monday as 1, through Saturday as 6. Quartz numbers Sunday as 1 through Saturday as 7. The converter remaps every numeric day-of-week value: for example, "0 9 * * 1-5" (Monday to Friday) becomes "0 0 9 ? * 2-6". Day names such as MON or SUN pass through unchanged.
When both day-of-month and day-of-week are restricted, for example "0 0 1 * 5". Linux cron fires when EITHER field matches (the 1st of the month OR every Friday), but Quartz forbids constraining both day fields in a single trigger. The tool warns you and emits two Quartz triggers instead: schedule both, and Quartz applies OR across triggers, reproducing the exact schedule.
Use the 6-field output by leaving the year option off: seconds, minute, hour, day-of-month, month, day-of-week. Paste it into @Scheduled(cron = "...") or a Quartz CronTrigger. Spring cron matches the first six Quartz fields, so "0 0 9 ? * MON-FRI" works directly.
@hourly, @daily, @midnight, @weekly, @monthly, @yearly and @annually are expanded to their 5-field equivalents before conversion. @reboot has no Quartz equivalent: it means "run once at startup", which no cron schedule can express, so the tool reports an error instead of guessing.
Yes. The * wildcard, */n steps, a-b ranges, a,b lists and combinations are valid in Quartz and are carried over unchanged in the minute, hour, day-of-month and month fields. Only numeric day-of-week values are remapped (0-7 becomes 1-7), and the seconds and optional year fields are added.
No. Conversion runs entirely in your browser with JavaScript: nothing is uploaded, logged or stored. You can safely convert schedules copied from private crontabs.
Privacy: conversion runs 100% in your browser with JavaScript. No expression is uploaded, logged, or stored anywhere.
We use cookies and third-party services (including Google AdSense) to personalize content, analyze traffic, and serve relevant ads. By clicking "Accept", you consent to our use of cookies as described in our Privacy Policy.
Report an issue
2 taps, no typing needed — diagnostics are sent automatically.