Skip to content

kasimmj/cron-talk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

2 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation


Stop memorizing cron syntax. Write what you mean, in English or Arabic, and get a valid cron expression.

cronTalk("every monday at 9am")          // โ†’ "0 9 * * 1"
cronTalk("ูƒู„ ูŠูˆู… ุงุซู†ูŠู† ุงู„ุณุงุนุฉ 9")          // โ†’ "0 9 * * 1"
cronTalk("every 15 minutes")             // โ†’ "*/15 * * * *"
cronTalk("first day of every month")     // โ†’ "0 0 1 * *"
cronTalk("weekdays at 7:30am")           // โ†’ "30 7 * * 1-5"

Install โ€ข Examples โ€ข Supported phrases โ€ข API


โšก Install

JavaScript / TypeScript

npm install cron-talk

Python

pip install cron-talk

๐ŸŽฏ Examples

import { cronTalk } from "cron-talk";

cronTalk("every day at midnight")          // "0 0 * * *"
cronTalk("every hour")                     // "0 * * * *"
cronTalk("every 5 minutes")                // "*/5 * * * *"
cronTalk("every weekday at 9am")           // "0 9 * * 1-5"
cronTalk("every saturday")                 // "0 0 * * 6"
cronTalk("every january")                  // "0 0 1 1 *"
cronTalk("first monday of every month")    // "0 0 * * 1#1"

// Arabic โ€” first library to support it natively:
cronTalk("ูƒู„ ุฎู…ุณ ุฏู‚ุงุฆู‚")                    // "*/5 * * * *"
cronTalk("ูƒู„ ูŠูˆู… ุงู„ุณุงุนุฉ ู…ู†ุชุตู ุงู„ู„ูŠู„")        // "0 0 * * *"
cronTalk("ูƒู„ ุฌู…ุนุฉ ุงู„ุณุงุนุฉ 8 ู…ุณุงุกู‹")           // "0 20 * * 5"
cronTalk("ูƒู„ ุฃูˆู„ ุดู‡ุฑ")                       // "0 0 1 * *"

๐Ÿ“œ Supported phrases

Frequencies

Phrase (EN) Phrase (AR) Cron
every minute ูƒู„ ุฏู‚ูŠู‚ุฉ * * * * *
every N minutes ูƒู„ N ุฏู‚ุงุฆู‚ */N * * * *
every hour ูƒู„ ุณุงุนุฉ 0 * * * *
every N hours ูƒู„ N ุณุงุนุงุช 0 */N * * *
every day ูƒู„ ูŠูˆู… 0 0 * * *
every week ูƒู„ ุฃุณุจูˆุน 0 0 * * 0
every month ูƒู„ ุดู‡ุฑ 0 0 1 * *
every year ูƒู„ ุณู†ุฉ 0 0 1 1 *

Days

English ุงู„ุนุฑุจูŠุฉ
monday ุงู„ุงุซู†ูŠู† / ุงุซู†ูŠู†
tuesday ุงู„ุซู„ุงุซุงุก / ุซู„ุงุซุงุก
wednesday ุงู„ุฃุฑุจุนุงุก / ุงุฑุจุนุงุก
thursday ุงู„ุฎู…ูŠุณ / ุฎู…ูŠุณ
friday ุงู„ุฌู…ุนุฉ / ุฌู…ุนุฉ
saturday ุงู„ุณุจุช / ุณุจุช
sunday ุงู„ุฃุญุฏ / ุงุญุฏ
weekday ุฃูŠุงู… ุงู„ุนู…ู„
weekend ุนุทู„ุฉ ู†ู‡ุงูŠุฉ ุงู„ุฃุณุจูˆุน

Times

  • 9am, 9:00 am, 09:00, 9pm, 21:00
  • midnight / ู…ู†ุชุตู ุงู„ู„ูŠู„
  • noon / ุงู„ุธู‡ุฑ
  • ุงู„ุณุงุนุฉ 8 ุตุจุงุญุงู‹, ุงู„ุณุงุนุฉ 8 ู…ุณุงุกู‹

๐Ÿ”ง API

cronTalk(text: string, opts?): string

Converts natural language to a 5-field cron expression.

import { cronTalk } from "cron-talk";

cronTalk("every 30 minutes");                  // "*/30 * * * *"
cronTalk("ูƒู„ ูŠูˆู… 8 ุตุจุงุญุงู‹", { locale: "ar" }); // explicit locale

Options:

  • locale?: "en" | "ar" | "auto" (default: "auto" โ€” detects from input)
  • strict?: boolean (default: false โ€” throws on unknown phrases instead of best-effort)

cronTalk.explain(cron: string, locale?): string

Reverse: cron โ†’ human-readable.

cronTalk.explain("*/15 * * * *");           // "every 15 minutes"
cronTalk.explain("0 9 * * 1-5", "ar");      // "ูƒู„ ูŠูˆู… ุนู…ู„ ุงู„ุณุงุนุฉ 9 ุตุจุงุญุงู‹"

cronTalk.next(cron: string, from?: Date): Date

Returns the next time the cron will fire.

cronTalk.next("0 9 * * 1");
// โ†’ Date of next Monday at 9:00 AM

cronTalk.validate(cron: string): { valid: boolean; reason?: string }

cronTalk.validate("0 9 * * 1");
// โ†’ { valid: true }
cronTalk.validate("0 25 * * *");
// โ†’ { valid: false, reason: "Hour must be 0โ€“23" }

๐ŸŒ Python parity

The Python package exposes the same API:

from cron_talk import cron_talk, explain, next_time, validate

cron_talk("every monday at 9am")         # "0 9 * * 1"
cron_talk("ูƒู„ ุงุซู†ูŠู† ุงู„ุณุงุนุฉ 9 ุตุจุงุญุงู‹")    # "0 9 * * 1"
explain("0 9 * * 1-5")                   # "every weekday at 9 AM"
next_time("0 9 * * 1")                   # datetime(...)
validate("0 9 * * 1")                    # {"valid": True}

๐ŸŒŸ Why cron-talk?

Existing libs cron-talk
English-only โœ… English + Arabic
Heavy deps โœ… Zero runtime deps
One language โœ… TS + Python parity
No .explain() โœ… Full reverse parser

๐Ÿ“œ License

MIT ยฉ 2026 Kasim Mohammed


Star โญ to never read a cron man-page again.

About

๐Ÿ—“๏ธ Natural language โ†’ Cron expression. First library supporting Arabic alongside English. 'every monday 9am' โ†’ '0 9 * * 1'

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors