Skip to content
All tools Free tool

Salesforce cron builder

Paste a Salesforce cron expression for System.schedule() and we’ll explain what it does and show the next ten fire times. Or pick a preset to build one without thinking about the seven-field syntax.

100% client-side. Nothing uploaded.

secminhrdommondowyear?

Plain English

Apex snippet

Presets

    Next 10 fire times

    Times will appear once the expression parses cleanly.

    Reference

    What this tool is.
    And what it’s for.

    What this is

    Salesforce’s System.schedule(name, cronExpr, schedulable) takes a seven-field cron expression to decide when a scheduled Apex job fires. This tool decodes any such expression into plain English, validates it against Salesforce’s syntax rules, generates an Apex snippet you can paste into a developer console, and shows you the next ten fire times so you can sanity-check.

    How the seven fields work

    Reading left to right: seconds, minutes, hours, day-of-month, month, day-of-week, and an optional year. Each field accepts:

    • * — any value in the field’s range
    • ? — no specific value (only legal for day-of-month and day-of-week, and exactly one of them must use it)
    • 5 — a single value
    • 1-5 — a range
    • 1,3,5 — a list
    • 0/15 — every 15, starting at 0
    • L — “last” (last day of the month for day-of-month)
    • Month names: JAN–DEC. Day names: SUN–SAT (Sunday is 1)

    The most common shape: 0 0 9 ? * MON-FRI — “at 9:00 AM every Monday through Friday.”

    Why a Salesforce admin cares

    • Scheduled Apex is everywhere. Lead routing, opportunity scoring, integration syncs, data cleanup — every non-trivial Salesforce org has a fleet of scheduled jobs. Getting the expression right is the difference between something running at 2 AM and something silently never running.
    • The seven-field format is unfamiliar. Anyone coming from Linux cron will be tripped up by the required seconds field, the 1=Sunday convention, and the ? rule. Mistakes don’t error visibly — they just fire the job at a time you didn’t intend.
    • Developer Console doesn’t show next fire times. You write the expression, you call System.schedule, and you wait. By the time you find out the job is firing at the wrong hour, you’ve already missed a business cycle.
    • Timezone bugs are silent. Scheduled jobs run in the timezone of the scheduling user. Move from a Mountain Time user to an Eastern Time user and your “midnight” job is now firing at 10 PM the previous day.

    Why hire blufyre.com

    Scheduled-job correctness is one symptom of a broader category we see often: Salesforce orgs that work, but whose timing-sensitive behavior nobody really understands until something breaks at quarter-end. We’re a small boutique Salesforce consultancy with senior, certified consultants and Ivy League and Oxbridge academic credentials. We’ll review the scheduled jobs you have, surface the ones that are silently firing at the wrong time or doing duplicate work, and put the architecture behind them in writing — so the next time someone wants to add a new job, you can tell whether it’s safe.

    Start a conversation

    Common questions.

    Why is Salesforce cron different from Unix cron?
    Salesforce uses seven fields (seconds, minutes, hours, day-of-month, month, day-of-week, optional year) instead of the five Unix gives you. The seconds field is required even when you only care about minutes — that's why nearly every expression starts with a 0. Salesforce also uses 1=Sunday through 7=Saturday for the day-of-week field, whereas Unix typically uses 0=Sunday or 1=Monday.
    What's the deal with day-of-month vs day-of-week?
    Exactly one of them must be a literal '?' (question mark) — the field-Salesforce reads as 'no specific value'. If you want 'every Monday', set day-of-month to '?' and day-of-week to 'MON'. If you want 'every 15th', set day-of-week to '?' and day-of-month to '15'. The rule exists because the two fields can conflict (the 15th of a month is rarely a Monday); '?' tells Salesforce which one wins.
    Can I schedule something to run every 30 seconds?
    No. Salesforce's minimum scheduled-job frequency is one minute, regardless of what the seconds field says. The seconds field controls which second within the minute the job fires (almost always 0), not how often it fires within a minute.
    What timezone do scheduled jobs use?
    Each job runs in the timezone of the user who scheduled it (for org-scheduled jobs, that's the system user's preferences). The times we show below are in your browser's local timezone. If your org's primary user is in a different zone, the actual fire times will shift accordingly.
    What about L, W, and #?
    L (last), W (weekday), and # (nth weekday) are advanced Salesforce/Quartz operators. We handle 'L' for day-of-month (last day of the month) here. The trickier patterns like '15W' (nearest weekday to the 15th) or 'MON#2' (second Monday of the month) are valid in Salesforce but we don't fully evaluate their fire times in this tool — verify those in a sandbox.