Rattib · رتّب
Empty your head.Untangle your week.
Write down everything that's due, the way it comes to mind. Rattib turns it into a calm, time-blocked week around your classes and prayer times, and tells you which deadline is really at risk.
One deadline per line or separated by commas. Arabic and English both work.
Next study block
—
Most at risk
—
Workspace
Your threads, your week
Every line you wrote is a thread. Fix any card, cut what you can't carry, and the week re-plans itself.
Threads 0
Add a task by hand
Cut threads (0)
No threads yet. Brain-dump your deadlines above to see them here.
No study blocks yet. Brain-dump your deadlines above and press Untangle.
Striped = class (sample timetable) · lilac = prayer time ±15 min (Ministry of Awqaf times for your city) · click a block to see why it's there.
Your week setup: classes, prayer times, sleep and study cap
How it works
Plain rules, no magic, nothing uploaded
Rattib is a rule-based tool that runs entirely in your browser. It is not an AI model, so every result below can be explained.
One line, one thread
Each line, or each comma-separated part, becomes a task. WhatsApp timestamps like [06/10/2026, 9:14 PM] and sender names are removed first. Chat with no task word, course or due word is skipped.
Dates it understands
today, tomorrow, tmrw, weekdays, "next fri" (Friday of next week), 14 oct, oct 14, 14/10 (day/month), in 3 days, next week (its Sunday), اليوم، غدًا، بكرة، بعد يومين, Arabic day and month names and Arabic-Indic digits.
Times and defaults
5pm, 11:59pm, 17:00, "at 5" (read as 5 pm), ٥ م and ١١:٥٩ م. With no time: 09:00 for quizzes, exams and presentations, otherwise 23:59, labelled "time assumed".
Effort, weight, course
The task type sets an editable estimate (quiz 2 h … project 10 h). "20%" becomes the weight and "3h" overrides the estimate. Course names, codes like MATH1101 and short forms like OS and ENG are recognised.
15-minute slots
Each day between wake-up and sleep is cut into 15-minute slots. A slot is taken if it overlaps a class, a prayer time (±15 min), the past, or a block you already marked done.
Earliest deadline first
Each free slot goes to the unfinished task with the nearest deadline, aiming to finish a few hours early (your buffer). If time runs out, it may use the buffer, and the task is flagged.
A human pace
There is a daily study cap (6 h by default, lighter on weekend days) and a 30-minute break after every 2 hours in a row.
Private by design
Everything is saved in this browser only (localStorage). Nothing you paste leaves your device, and Reset clears it all.
Load per deadline
Hours still needed for this task and every task due before it, divided by your free study hours before (due − buffer).
load = Σ hours(due ≤ this) ÷ free hours before (due − buffer)
Risk labels
Safe below 75 %. Watch from 75 to 100 %, or if the plan had to use the buffer. At risk above 100 %, or if it can't be fully scheduled.
safe < 0.75 ≤ watch ≤ 1.00 < at risk
Tension and thickness
Knot tension is all the hours needed divided by the free hours before the last deadline. Thread width grows with the estimated hours.
tension = Σ hours ÷ free hours · width = 1.5 + 0.45 × h px
What to cut
Among the tasks competing for the same time as the riskiest one, it suggests the lowest written weight (ties go to the bigger task). Unknown weights count as 100 % so nothing is cut blindly.
pick = min(weight ?? 100), then max(hours)
Built by