Skip to main content

Cron to Quartz Converter

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-50 0 9 ? * 2-6Weekdays at 9:00 AM (day-of-week remapped)
*/15 * * * *0 */15 * * * ?Every 15 minutes (steps carry over)
30 2 * * 00 30 2 ? * 1Sundays at 2:30 AM (0 → 1)
0 0 1 * *0 0 0 1 * ?1st of every month at midnight
15 10 * 6 30 15 10 ? 6 4Wednesdays in June at 10:15 AM
0 22 * * 50 0 22 ? * 6Fridays at 10:00 PM
@daily0 0 0 * * ?Shortcut expanded, then converted
0 8 1 * 10 0 8 1 * ?  +  0 0 8 ? * 2OR trap: needs two triggers (warning shown)

5-field vs 7-field: what changes

#Linux cron fieldQuartz fieldWhat the converter does
1—seconds (0–59)Added (default 0; change it in the options).
2minute (0–59)minuteCopied unchanged, including */n steps, ranges and lists.
3hour (0–23)hourCopied unchanged.
4day-of-month (1–31)day-of-monthCopied unchanged, or ? when only day-of-week is restricted.
5month (1–12)monthCopied unchanged (names JAN–DEC accepted by both).
6day-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.

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.

Free tool by NRTechStudio