obfus.link

Cron Humanizer parses any 5-field cron expression into a plain-English description and a per-field breakdown. It computes the next N runs in any IANA timezone with DST awareness. Conflict detection compares against other cron expressions and flags collisions and adjacent windows within five minutes — a pre-deploy gate for multi-service crontabs.

Tier 2converters✓ TDD Verified

Cron Humanizer

Parse cron expressions, compute next runs, and detect schedule conflicts

minute hour day-of-month month day-of-week

How to use

  1. Enter cron expressionPaste a standard 5-field cron expression — minute, hour, day-of-month, month, day-of-week. Names like MON-FRI, JAN-DEC, and lowercase variants are accepted.
  2. Choose next-run countSet how many upcoming runs to compute. Set to 0 for description-only output. Max 50.
  3. Pick timezoneSelect an IANA timezone (UTC, America/New_York, Asia/Tokyo, etc.). Next-run computation is DST-aware.
  4. Optional: conflict checkToggle Conflict Check and paste other cron expressions (one per line) to detect schedule overlaps before deploying.
  5. RunClick Humanize or press Ctrl+Enter. The description, field breakdown, next runs, and any conflicts appear in the output panel.
Read technical article

MCP / API

Call cron_humanizer directly from any MCP-compatible agent:

// MCP TypeScript SDK
const result = await client.callTool({
  name: "cron_humanizer",
  arguments: {
    "expression": "..."
  }
});

// curl
curl -X POST https://obfus.link/mcp \
  -H "Authorization: Bearer <SPT>" \
  -H "Content-Type: application/json" \
  -d '{"method":"tools/call","params":{"name":"cron_humanizer","arguments":{"expression":"..."}}}'

Related tools

Epoch Converter
Convert any date format to all others with multi-timezone output
SQL Prettifier
Format SQL and translate between PostgreSQL, MySQL, SQLite, and MSSQL
Dev Unit Converter
Convert data, tokens, CSS, and time units with LLM tokenizer ratios

FAQ

Which cron syntax is supported?

Standard 5-field POSIX cron: minute (0–59), hour (0–23), day-of-month (1–31), month (1–12 or JAN–DEC), day-of-week (0–7 or SUN–SAT, where 0 and 7 both mean Sunday). Wildcards (*), lists (1,15,30), ranges (1-5), and steps (*/15 or 0/15) are all supported. 6-field (seconds) and 7-field (year) cron are NOT supported, nor are special strings like @reboot, @yearly, or @hourly.

How does conflict detection work?

For each expression in conflictCheck, the tool computes the minute and hour sets that overlap with your primary expression. severity:collision means at least one minute-hour pair is shared with overlapping day-of-month or day-of-week coverage (the jobs run at the same wall-clock time). severity:adjacent means the schedules are within 5 minutes of each other in the same hour — useful for catching resource contention windows (e.g., two jobs hitting the same database at 09:00 and 09:03).

How accurate are the next-run timestamps?

Next-run computation is DST-aware via JavaScript's built-in IANA timezone support. The parser iterates forward from the current time at minute granularity, skipping ahead to the next valid hour when the hour field disqualifies a candidate (for efficiency). Up to 50 runs can be computed per call.

Can it parse "every Tuesday at 9am"?

Not as natural language input — the input must be a cron expression. But it parses "0 9 * * 2" or "0 9 * * TUE" and returns the human-readable description "Every Tuesday at 09:00 UTC" — useful for showing the parsed meaning back to a human reviewer or for documentation generation.

Can I use this tool via the MCP API?

Yes. The tool is registered on the obfus.link MCP server at https://obfus.link/mcp. Call it from any MCP-compatible agent with a Shared Payment Token. The MCP tool name matches the snake_case slug shown in the integration snippet.