“All models are wrong, but some are useful.” — George Box
Advanced ETA Prediction for Anki
Time Left+ is a highly customizable progress and ETA tracking add-on for Anki built around a lightweight, local Machine Learning engine.
Most ETA add-ons rely on a simplistic formula (e.g., dividing remaining cards by your average speed over the last 5 minutes).
That approach becomes inaccurate almost immediately once your pacing changes or you switch to harder cards. Time Left+ instead learns your actual review behavior in real time and continuously updates its predictions to provide highly accurate estimates of:
- Remaining study time
- Estimated finish time
- Session pacing
- Retention metrics
- Fatigue-related slowdowns
- Expected distraction/zone-out time
🧠 Smart Machine Learning Predictions
No TensorFlow. No PyTorch. No cloud processing.
The add-on securely analyzes your Anki review history fully offline and trains a lightweight predictive model directly on your machine.
The system evaluates dozens of dimensions of study behavior using a multi-tiered architecture that blends specific historical medians with Stochastic Gradient Descent (SGD) regression:
Deep Context & Historical Card Lookup
- Per-Card History: If you've reviewed a specific card before, the model knows. It actively tracks your historical median time for individual cards to provide hyper-accurate baseline predictions.
- Context Lookup Tables: If a card is new, the model falls back to a personalized lookup table based on your speed for that exact Deck + Tag + Queue combination.
- Text Metrics: Word count, image count, and linguistic readability/complexity (Flesch-Kincaid).
- FSRS Integration: Fully supports Anki's native FSRS algorithm by extracting and weighing the exact Difficulty (D) and Stability (S) of every card.
Adaptive Bias Correction & Time Psychology
- Active Bias Correction: The model tracks the error of its predictions over your last 50 cards. If you are having a fast day and reviewing 2 seconds quicker than expected, the model instantly auto-corrects its bias to match your current brain-state.
- Cyclical Time-of-Day Encoding: Reviewing at 11 PM is different than 8 AM. Time Left+ encodes the hour of the day using advanced cyclical sine/cosine math so the model understands that 11 PM and 1 AM are chronologically close, learning your exact circadian rhythm.
- Pacing: Current streak velocity, short-term pacing trends, and historical review speed are all fed directly into the model.
Adaptive "Zone-Out" Modeling
Accidentally leave a card open for 15 minutes?
Instead of just ignoring these outliers, the add-on runs a bifurcated model optimized with Huber Loss (to prevent extreme outliers from ruining the regression). It calculates your raw reading speed on normal cards, but actively tracks your distraction probability. If you historically "zone out" on 2% of your reviews, the model intelligently predicts and buffers that exact amount of lost time into your ETA.
📊 Fully Customizable Progress Metrics
Build your own status line using configurable variables. You can freely combine metrics and style them using custom CSS:
%(elapsedTime)
Time spent studying so far
%(remainingTime)
ML-predicted remaining time left
%(ETA)
Exact finish time (24-hour format)
%(ETA12)
Exact finish time (12-hour AM/PM format)
%(CPM)
Current Cards Per Minute pacing
%(RR)
Session Retention Rate
🎨 Advanced UI Customization
Every UI component exposes targetable CSS classes for deep styling control.
Customize:
- Progress bar appearance
- Font styling, colors, and spacing
- Metric layout and screen positioning
Includes built-in options to pin the progress bar to the bottom of the screen, minimize UI clutter, and create persistent HUD-style layouts.
🏃 Dynamic Velocity Tracking & Fatigue Alerts
Time Left+ continuously compares:
- Short-Term Sprint Velocity (last ~10 cards)
- Long-Term Baseline Velocity (last ~100 cards)
When your pacing drops significantly — such as a >50% slowdown — the add-on can proactively alert you that fatigue may be affecting performance.
This improves:
- ETA stability and pacing awareness
- Long-session consistency
- Burnout prevention
The system adapts dynamically in real time instead of assuming your review speed remains constant throughout a session.
⚙️ Under the Hood
The predictor uses a pure-Python Stochastic Gradient Descent (SGD) with Huber Loss blended with a multi-tiered dictionary lookup. It is optimized for lightweight local execution.
No external ML frameworks are required.
- Local Execution: Fully offline computation with SQLite-backed storage.
- Efficiency: Minimal memory usage and near-zero performance overhead (no lag between cards).
- Data Persistence: Your trained model weights and personal statistics are safely stored in a `user_files/` directory that survives add-on updates.
- Privacy: No background telemetry and no cloud APIs.
🚀 Getting Started
On first launch, Time Left+ automatically imports approximately your most recent 10,000 review records and trains the prediction model in the background.
You receive personalized ETA predictions immediately without needing weeks of usage data.
Configuration & Statistics Path
Tools → Add-ons → Time Left+ → Config
Tools → Time Left+: ML Stats & Analysis
Tools → Time Left+: Export ML Stats to CSV
🔒 Privacy
All calculations occur entirely on your machine using data Anki already stores locally.
No review history is uploaded or collected.
Compatibility
- Supported: Desktop Anki
- Not Currently Supported: AnkiDroid / AnkiMobile
Based on the original add-on: Remaining Time