Turn a timetable into calendar events.

Paste your timetable or choose a file. Check the extracted events, fix conflicts, and download a calendar file.

Your timetable stays in this browser. No account or API key.

Schedule inputExtracted events
Synthetic week
# Fictional week
Mon 09:00-11:00 CS101 Algorithms | Room 204 | Instructor: A. Reyes
Mon 10:30-12:00 MATH201 Discrete Math | Room 204
Mon 14:00-15:30 CS205 Databases | Room 305
Tue 09:00-11:00 CS101 Algorithms | Room 204
Tue 13:00-14:30 MATH201 Discrete Math | Room 204
Tue 15:00-16:30 CS205 Databases | Room 305
Tue 15:00-16:30 CS205 Databases | Room 305
Monday · fictional week
  • AlgorithmsCS101 · Room 204
  • Discrete MathMATH201 · Room 204
  • DatabasesCS205 · Room 305
Tuesday · fictional week
  • AlgorithmsCS101 · Room 204
  • Discrete MathMATH201 · Room 204
  • DatabasesCS205 · Room 305

6 events. One duplicate row was removed before export. The Monday overlap still needs correction.

Watch a sample parse

Uses made-up timetable data

This illustration shows how TimetableKit reads local input, builds a result, and prepares it for an agent.

ILLUSTRATION · 01/06
timetablekit.vercel.app/playground
EXAMPLETimetableKit playground
Local parser flowillustration
The example input is ready.
EXAMPLE OUTPUTversioned result
Input read
source.textin browser memory · no remote request

Input formats

Use the parser in your app

@ndycode/timetablekit parses schedules and exports events. The repository also includes @ndycode/timetablekit-agent, which exposes the timetablekit.parse tool over JSON and JSONL.

Read the guide
import { parseTimetable, assessTimetableResult, toJSON }
  from "@ndycode/timetablekit";

const result = await parseTimetable(
  { kind: "text", text: "Biology; Monday; 09:00-10:00" },
  { locale: "en-PH", timezone: "Asia/Manila" },
);

if (assessTimetableResult(result).status === "unusable") {
  throw new Error("Review the timetable before exporting.");
}

const json = toJSON(result);

Your files stay in your browser.

This playground processes pasted text and selected files in memory. It has no remote recovery provider. If you add one to your own app, you must ask for consent before sending timetable data.

See how privacy works