Skip to main content

Quartz to Cron Converter

Convert a Java Quartz cron expression (6–7 fields) into a Linux crontab expression (5 fields). The converter drops the seconds and year fields, renumbers day-of-week, turns ? into *, approximates L, W and # honestly — and warns you whenever the result is not exact.

Converter

Batch mode

Convert many expressions at once — one Quartz expression per line.

Worked examples

Click any example to load it into the converter.

Quartz (6/7-field)Linux cron (5-field)Meaning
0 0 9 ? * MON-FRI0 9 * * 1-5Weekdays at 9:00 AM (days renumbered 2–6 → 1–5)
0 */15 * * * ?*/15 * * * *Every 15 minutes (steps carry over, seconds 0 is exact)
0 30 2 ? * 130 2 * * 0Sundays at 2:30 AM (Quartz 1 → Linux 0)
0 0 0 1 * ?0 0 1 * *1st of every month at midnight
0 0 12 L * ?0 12 28,29,30,31 * *Last day of month → approximation (warning shown)
0 0 8 ? * 6#30 8 * * 53rd Friday → every Friday (approximation, warning shown)
30 0 0 ? * * 20260 0 * * *Seconds + year dropped (warnings shown)
0 0 9 15W * ?0 9 15 * *Nearest weekday to the 15th → the 15th (approximation, warning shown)

7-field vs 5-field: what changes

#Quartz fieldLinux cron fieldWhat the converter does
1seconds (0–59)—Dropped. Exact only when it is 0; anything else triggers a warning (or an error in strict mode).
2minute (0–59)minuteCopied unchanged, including */n steps, ranges and lists.
3hour (0–23)hourCopied unchanged.
4day-of-month (1–31)day-of-month? becomes *. L/LW/L-n → 28,29,30,31 (approximation). 15W → 15 (approximation).
5month (1–12)monthCopied unchanged (names JAN–DEC accepted by both).
6day-of-week (1–7)day-of-week (0–6)Renumbered: Quartz 1=Sunday → Linux 0=Sunday. ? → *. L alone = Saturday → 6 (exact). 6L/6#3 → 5 (approximation).
7year (optional)—Dropped. * loses nothing; a restricted year triggers a warning because the schedule will repeat yearly.

The seconds problem

Linux cron fires at most once per minute, always at second 0. A Quartz expression with seconds 0 converts exactly. Anything else changes the schedule: 30 fires 30 seconds early under Linux cron, and */15 (four runs per minute in Quartz) collapses to a single run per minute. The converter warns you every time — or refuses outright in strict mode.

L, W and # have no Linux equivalent

Linux cron simply cannot say “last day of the month”, “nearest weekday” or “3rd Friday”. Rather than failing silently, the converter substitutes the closest recurring pattern and labels it:

QuartzLinux approximationWhat is lost
L, LW, L-328,29,30,31Fires on up to four days instead of exactly the last day
15W15The weekend shift Quartz applies is lost
6#3, FRIL, 6L5Fires every Friday instead of once a month
L (day-of-week)6Nothing — Quartz L in day-of-week means Saturday, exact

The ? rule

In Quartz, ? in day-of-month or day-of-week means “no specific value” — exactly one of the two day fields must be ? when the other is restricted. Linux cron has no ?, so it becomes *: 0 0 9 ? * MON-FRI becomes 0 9 * * 1-5.

Sunday numbering

Quartz: Sunday = 1, Saturday = 7. Linux: Sunday = 0 (or 7), Saturday = 6. Every numeric day-of-week value is shifted down 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 and no year. Quartz uses 6 or 7 fields: seconds, minute, hour, day-of-month, month, day-of-week, plus an optional year. Quartz adds the special characters ?, L, W and #, and numbers Sunday as 1 instead of 0.
Linux cron has no seconds field: it can only fire once per minute, at second 0. When your Quartz expression uses seconds "0", the conversion is exact. Any other seconds value (for example "30", or "*/15" which fires four times a minute) cannot be represented, so the tool drops the field and warns you that the schedule is not exact.
Three cases: (1) the seconds field is anything but "0" — Linux cron cannot fire mid-minute or multiple times per minute; (2) the year field is restricted, e.g. "2026" — Linux cron has no year field, so the schedule repeats yearly; (3) the day fields use L, W or # — last-day, nearest-weekday and nth-weekday have no Linux equivalent. The tool approximates these cases and labels every approximation with a warning. Tick "Strict mode" to turn approximations into hard errors instead.
"L" (last day of month), "LW" and "L-n" become "28,29,30,31" — up to four days instead of exactly one. "15W" (nearest weekday to the 15th) becomes "15" — the weekday shift is lost. "6#3" (3rd Friday) and "6L"/"FRIL" (last Friday) become "5" (every Friday) — the monthly restriction is lost. "L" alone in day-of-week means Saturday and converts exactly to "6". Every approximation is flagged with a warning.
Quartz numbers Sunday as 1 through Saturday as 7; Linux cron numbers Sunday as 0 (or 7) through Saturday as 6. The converter subtracts one from every numeric day-of-week value: for example, Quartz "0 0 9 ? * 2-6" (Monday to Friday) becomes Linux "0 9 * * 1-5". Day names such as MON or FRI are identical in both dialects and pass through unchanged.
It is dropped. Linux cron has no year field. If the year is "*" (every year) nothing is lost and no warning appears. If it names specific years, e.g. "0 0 9 ? * * 2026-2028", the tool warns you that the converted schedule will repeat every year instead of stopping after 2028.
"*" (every value). In Quartz, "?" in day-of-month or day-of-week means "no specific value" — exactly one of the two day fields must be "?" when the other is restricted. Linux cron has no "?", so the field becomes "*": Quartz "0 0 9 ? * MON-FRI" becomes "0 9 * * 1-5".
No. Conversion runs entirely in your browser with JavaScript: nothing is uploaded, logged or stored. You can safely convert schedules copied from private application configs.
Privacy: conversion runs 100% in your browser with JavaScript. No expression is uploaded, logged, or stored anywhere.

Free tool by NRTechStudio