AnkiWeb
- Rating
- 0 (π 0 Β· π 0)
- Updated
- 2026-06-12
- Anki versions
- 2.1.1~
- Description language
- en
AnkiWeb addon 270735584
Sets a daily study-time budget and adjusts the deck's today-only new-card limit using FSRS forecasts so predicted new-card and review load stays within budget.
Open on AnkiWeb GitHub Ask about alternatives
active
| Min Anki | Max Anki | Updated |
|---|---|---|
| 2.1.1 | + | 2026-06-12 |
Loadingβ¦
Lets you budget daily minutes for chosen decks, automatically setting review and new-card counts to match your scheduling variables.
Calculates realistic daily review and new-card targets by target date, including overdue, due, and learning cards, with intensity adjustment and simulation.
Calculates exam-focused daily new-card targets, includes due reviews, estimates study time using recent Anki speed, tracks pace, and displays customizable deck stats.
Plans exam study by setting daily new-card limits, bumping pre-exam reviews, cramming decks, zero-padding names, and managing exam targets.
Turns deck deadlines into stable daily study targets, tracks progress, and builds filtered decks without changing Anki's scheduling, with optional premium features.
Provides a two-phase system that plans new-card introduction deadlines with milestone tracking, then forecasts mature-card completion using 30-day review consistency and adjustable deadlines.
An Anki add-on that replaces the fixed "new cards per day" setting with a daily study-time budget. You decide how many minutes per day you want to study; the add-on automatically computes how many new cards to introduce so your predicted study time stays within that budget.
A fixed new-card count doesn't correspond to a fixed amount of time. Reviews accumulate, so 20 new cards a day might cost 10 minutes in the first week and 45 minutes a few months later. Most people budget their day in time, not in cards β "30 minutes a day" is a commitment you can actually keep. This add-on holds your study time constant instead: it introduces new cards quickly while the deck is light and slows down as the review load grows, and it won't introduce a card today if doing so would push a future day over your budget.
It only writes the deck's today-only new-card limit (the same field as "New cards today" in deck options). It doesn't reschedule reviews, modify cards, or change your presets.
Anki's FSRS scheduler tracks each card's memory state. This add-on uses that data to simulate your future review load and find the new-card introduction rate that keeps your daily study time at or below your budget β without ever overloading a future day.
The core algorithm is a greedy receding-horizon controller built on FSRS-6:
This gives you a sustainable pace that uses every minute of your budget without burning yourself out.
Open Tools β Add-ons β Get Add-ons and paste the add-on code:
TODO-ANKIWEB-CODE
<!-- Replace TODO-ANKIWEB-CODE with the code AnkiWeb assigns after the first upload. -->
Download the latest time_budget.ankiaddon from the releases page and double-click to install, or go to Tools β Add-ons β Install from file.
git clone https://github.com/Vizia128/anki-time-per-day
cd anki-time-per-day
python build.py # produces time_budget.ankiaddon
Then install the .ankiaddon file in Anki.
Open Tools β Time Budget β Openβ¦ to configure a deck.
| Setting | Description |
|---|---|
| Daily budget | Minutes per day you want to spend studying (new + review). |
| Finish in | Target days to finish all new cards. Edit either field; the other updates automatically via binary search. |
| Today's budget | One-off override for today only; takes effect when you press Save. The long-term daily budget is unchanged. |
| Daily cap | Hard ceiling on new cards per day regardless of budget headroom. Useful if you want to pace introduction even when you have spare time. |
| Apply automatically | When enabled, the add-on also sets your new-card limit when Anki opens and after each sync, using the saved settings. |
Nothing is written to your collection until you press Save (or, for decks with "Apply automatically" enabled, until Anki starts or finishes a sync). The forecast panel is always a preview.
The forecast shows:
Configure either a parent deck or its subdecks, not both. Two rules that match overlapping decks each write their own limit and will fight over it. The simplest setup is one rule for the top-level deck you actually study from.
Settings are stored in Anki's add-on config system (config.json / the Add-ons manager). Each entry in the decks array matches one or more decks by name.
{
"decks": [
{
"deckNames": ["My Deck"],
"budgetMinutes": 30,
"horizonDays": 365,
"dailyNewCap": null,
"active": false
}
]
}
| Key | Type | Default | Description |
|---|---|---|---|
deckNames |
string or list | required | Deck name(s) to match. A bare string is treated as a regex (re.fullmatch). |
budgetMinutes |
float | 30 |
Daily study-time budget in minutes. |
horizonDays |
int | 365 |
Planning horizon. The add-on also auto-estimates a minimum horizon based on deck size. |
dailyNewCap |
int or null | null |
Maximum new cards per day. null means no cap. |
active |
bool | false |
Automatically apply limits when Anki opens and after sync. Pressing Save in the dialog always applies immediately, regardless of this setting. |
pip install -r requirements-dev.txt
pytest -v
ruff check time_budget tests build.py
ruff format --check time_budget tests build.py
Both also run in CI (GitHub Actions) on every push and pull request.
Tests are split into three groups:
tests/test_kernel.py, tests/test_controller.py, tests/test_settings.py) β no Anki dependency, fast.tests/test_fake_collection.py) β uses a headless throwaway Anki collection.py-fsrs reference implementation and requires agreement to < 1e-6.python build.py
Produces time_budget.ankiaddon in the project root. The script zips the time_budget/ package flat (files at zip root, no parent directory prefix), which is required by Anki's add-on installer.
time_budget/
__init__.py # Entry point: Tools menu + hook registration
scheduler.py # FSRS-6 kernel + MPC controller (no Anki imports)
adapter.py # Anki collection interface + planning pipeline
ui.py # The Time Budget dialog
hooks.py # Auto-apply on profile open / after sync
settings.py # Validated view of the user-editable config
constants.py # Shared constants
config.json # Default config
manifest.json # Add-on metadata
tests/
conftest.py
fake_collection_builder.py
test_kernel.py
test_controller.py
test_fake_collection.py
build.py # Packaging script
Please report problems on the issue tracker. Include:
Pull requests are welcome β run pytest, ruff check, and ruff format before submitting (CI enforces all three).
MIT