snaptxt.app

Cron Builder

Build cron expressions by field — minute, hour, day, month, day-of-week — with a live plain-English explanation and the next five run times. Free, in your browser.

Cron expression

5 fields: minute · hour · day-of-month · month · day-of-week

Fields

Each field accepts * (any), 5 (specific), 5-10 (range), */2 (step), and 1,3,5 (list).

Presets

Everything stays on your device.

Cron parsing, scheduling, and human-readable translation all run in your browser. Nothing is sent to a server.

How to use it

  1. 1Type a cron expression directly, or fill the five field inputs (minute, hour, day of month, month, day of week) — they sync both ways.
  2. 2On Chrome with the Prompt API enabled, describe the schedule in plain English ("every weekday at 7:30 am") and on-device Gemini Nano generates the cron expression — automatically loaded into the field.
  3. 3Watch the plain-English explanation update as you type. If the expression is invalid, the error shows up under the input.
  4. 4Below, the next 5 run times appear in your local timezone so you can sanity-check the schedule.
  5. 5Pick a preset from the row of one-tap shortcuts (every minute, hourly, weekdays at 9, first of the month, etc.) as a starting point.

Common use cases

  • Compose a cron line for a Linux crontab without trial-and-error.
  • Set up a scheduled job in Vercel / GitHub Actions / Kubernetes CronJob.
  • Verify a teammate's cron entry doesn't fire at unexpected times.
  • Skip the cron field syntax — describe "every weekday morning" in plain English and let AI write it.
  • Learn the field syntax by adjusting each value and watching the plain-English description change.

Frequently asked questions

Can the AI write a cron from a description?
Yes — on Chrome with the Prompt API enabled, the panel above the builder lets you describe a schedule in English ("every weekday at 7:30 am", "the first Monday of every month") and on-device Gemini Nano emits the 5-field cron expression. It's parsed out of the response and loaded straight into the expression field — and the next-5-runs panel below confirms the schedule it really produces. The whole exchange runs on your device; nothing is sent to a remote service.
Which cron syntax is supported?
Standard 5-field POSIX cron — minute / hour / day-of-month / month / day-of-week. Each field accepts * (any), a specific number, ranges (1-5), steps (*/2), and lists (1,3,5). The day-of-week field uses 0 for Sunday through 6 for Saturday (7 also accepted as Sunday).
What does "day-of-month" + "day-of-week" mean together?
Cron treats them as OR when both are set: the job fires if EITHER condition matches. So "0 9 1 * 1" means "9 AM on the 1st of any month OR on any Monday." Set one to * if you want strict AND behavior with the other.
What timezone are the next-run times in?
Your browser's local timezone (shown above the run list). Most servers run cron in UTC — adjust accordingly if you're scheduling against a UTC crontab.
Does this support seconds-precision (6-field) cron?
No — standard 5-field POSIX cron only. Seconds-precision is a Quartz / Spring extension; if you're scheduling in those systems, prepend a seconds field manually after copying the expression here.
Is anything sent to a server?
No. Cron parsing, validation, scheduling, and the human-readable translation all run in your browser via cron-parser and cronstrue.
What about @yearly / @monthly aliases?
These shorthand aliases are equivalent to standard expressions: @yearly = 0 0 1 1 *, @monthly = 0 0 1 * *, @weekly = 0 0 * * 0, @daily = 0 0 * * *, @hourly = 0 * * * *. The builder shows the expanded 5-field form — easier to learn from and matches what most cron implementations actually accept.