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.
Cron Humanizer
Parse cron expressions, compute next runs, and detect schedule conflicts
How to use
- Enter cron expression — Paste 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.
- Choose next-run count — Set how many upcoming runs to compute. Set to 0 for description-only output. Max 50.
- Pick timezone — Select an IANA timezone (UTC, America/New_York, Asia/Tokyo, etc.). Next-run computation is DST-aware.
- Optional: conflict check — Toggle Conflict Check and paste other cron expressions (one per line) to detect schedule overlaps before deploying.
- Run — Click Humanize or press Ctrl+Enter. The description, field breakdown, next runs, and any conflicts appear in the output panel.
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
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.