Fractional New-Card Scheduler

AnkiWeb addon 304166926

Schedules fractional new-card limits—such as one card every three days—using Anki's Today-only limits, with day-of-week patterns, wildcard deck rules, a 14-day preview, and deck-health badges.
AI-generated summary; may contain mistakes.

schedulingdeck-management

Open on AnkiWeb GitHub Find alternatives

AnkiWeb

Votes
0 (👍 0 · 👎 0)
Updated
2026-10-08
Anki versions
25.09~
License
MIT (from the GitHub repository)
Virus scan
No ClamAV match A match does not prove malware. No match does not prove that the code is safe.
Languages
Python, JSON
Description language
en

Maintenance

active

  • Last update or commit: 2026-10-15 (17 days before the snapshot).
  • Test files: 4.
  • GitHub Actions workflows: 1.
  • Commits in the last year: 70.
  • Issues: 0 open, 0 closed.
  • Pull requests: 0 open, 2 merged.

Will it work on my Anki?

Version branches
Min AnkiMax AnkiUpdated
2.1.5525.09+2026-10-08
History across monthly snapshots

Loading…

Similar addons

Limit New by Young

Adjusts daily new card limits per deck based on young card counts, estimated review load, or cards due soon, with configurable rules and automatic updates.

schedulingdeck-management

8 votes 53% approval 👍 7 · 👎 1 ⭐ 10 Anki 26.05~ Updated 2026-07-22

Description

Ritornello

Explore all Ritornello decks and add-ons.

Pace new cards below whole-number daily limits—for example, one new card every three days—using Anki's Today-only limits.

See it in Anki

Preview a one-every-three-days schedule, then inspect the grouped-deck balance queue

The demo sets a language trickle of one card every three days, previews four populated language subdecks, then shows their balanced queue.

Features

  • Every-N-days and day-of-week schedules.
  • Exact decks or wildcard groups, with ordered include/exclude rules. Prefix a rule with ! to exclude it; a later match can add it back.
  • A deck picker that adds multiple selected rules at once.
  • Exact and picker-created subtree targets that follow deck renames.
  • A 14-day preview, stable staggering, and balance-first scheduling for grouped decks.
  • Optional deck-health badges for blocked limits or empty new-card queues.
  • Apply Today-only limits on profile open, collection open, or before sync.

Requires Anki 2.1.55 or newer.

GitHub: https://github.com/ritornello-labs/anki-fractional-scheduler

Support continued development: ritornello.dev/support.

README

Fractional New-Card Scheduler

Explore all Ritornello decks and add-ons.

AnkiWeb add-on 304166926 Source on GitHub Anki 2.1.55+ License: MIT

Fractional New-Card Scheduler is an Anki add-on for decks that should introduce new cards more slowly than Anki's normal whole-number daily limits allow.

Instead of choosing between 0/day and 1/day, you can schedule patterns such as 1 every 3 days, set different limits by weekday, and spread related decks across a steady rotation. The add-on applies those plans through Anki's Today-only new-card limits, so changes are temporary and reset with Anki's next day.

It also includes deck health badges for decks that are blocked by 0/day limits or have no unsuspended new cards available.

Preview a one-every-three-days schedule and inspect grouped-deck balance

Browse the full media gallery.

Install

Requires Anki 2.1.55 or newer.

From AnkiWeb

  1. In Anki, open Tools -> Add-ons -> Get Add-ons....
  2. Enter add-on code 304166926.
  3. Restart Anki.
  4. Use Tools -> Fractional Scheduler: Open Config to edit config.

AnkiWeb page: https://ankiweb.net/shared/info/304166926

From a GitHub release

Download the .ankiaddon from the latest tagged release, then use Tools → Add-ons → Install from file…. File installs do not receive AnkiWeb automatic updates.

From Source

  1. Copy the addon folder into your Anki add-ons directory as its own folder, such as FractionalScheduler.
  2. Restart Anki.
  3. Use Tools -> Fractional Scheduler: Open Config to edit config.
  4. Configure both scheduling and deck health badges from that dialog.

Features

  • Each schedule can enable fractional limits, notify badges, both, or neither.
  • Every-N-days schedules such as 1 card every 3 days.
  • Three fractional strategies: balance_first, fraction_first, and hash.
  • Day-of-week schedules with separate values for Mon-Sun.
  • Ordered deck rules per schedule using exact names or shell-style wildcards. Prefix a rule with ! to exclude matching decks; a later matching rule includes them again.
  • The picker supports selecting several decks at once. Pick deck... adds exact rules, while Add wildcard... and Exclude wildcard... add include/exclude subtree rules for every selected deck.
  • Exact rules and simple subtree rules such as Deck::* or !Deck::* follow their root deck when it is renamed, including parent-deck renames. General patterns such as *Chemistry* retain their text pattern.
  • Optional stable staggering for fraction_first and day-of-week schedules.
  • Leaf-only matching so container decks do not receive fractional limits.
  • Per-schedule notify descendant modes: direct only, any blocked descendant, all blocked descendants, or hide container badges.
  • Filtered decks are skipped.
  • Automatic apply on profile open, collection open, and optionally just before sync, with an at-most-once-per-day guard.
  • Preview table for the next 14 days, including daily totals, persistent column widths, and grouping by identical schedules.
  • Rebalance Offsets recomputes stable stagger assignments for the currently matched decks in a schedule.
  • Read-only API for other add-ons via mw.fractional_scheduler_api.

See Scheduling Strategies for the tradeoffs between the fractional strategies.

Usage Notes

  • The config dialog autosaves; there is no separate Save button.
  • Deck rules run from top to bottom, and the last matching rule wins. For example, use Geography*, !GeoTrainer*, GeoTrainer::A*, and GeoTrainer::B::C to include Geography, exclude GeoTrainer, then add those two GeoTrainer branches back.
  • Apply Now writes Today-only limits immediately for the matched decks.
  • Before sync applies limits before collection sync when the installed Anki version exposes the pre-sync hook.
  • Rebalance Offsets updates stored stagger assignments and preview data; deck limits change on the next apply.
  • If you use a non-midnight Anki day rollover, the epoch calculation respects the rollover hour.
  • addon/meta.json is local Anki state and is intentionally not tracked in git.

Public API

The add-on registers a read-only service on mw:

snapshot = mw.fractional_scheduler_api.get_schedule_health_snapshot(col)

It returns a dictionary keyed by deck id. Each value reports:

  • deck_id
  • deck_name
  • schedule_id
  • cycle_length_days
  • has_future_positive_limit
  • next_positive_day_offset

The service only includes matched, non-dynamic decks that survive leaf_only filtering. A deck is considered to have a future positive limit if, within one full schedule cycle, at least one day yields > 0 new cards.

Config Example

{
  "epoch": "2026-01-01",
  "schedules": [
    {
      "id": "bio-slow",
      "type": "every_n_days",
      "m": 1,
      "n": 3,
      "fractional_strategy": "balance_first",
      "targets": ["Biology::*"],
      "fractional_enabled": true,
      "notify_enabled": true,
      "notify_descendant_mode": "direct_only",
      "leaf_only": true,
      "stagger": {"mode": "stable"}
    },
    {
      "id": "chemistry-notify",
      "type": "every_n_days",
      "m": 1,
      "n": 1,
      "targets": ["*Chemistry*"],
      "fractional_enabled": false,
      "notify_enabled": true,
      "notify_descendant_mode": "all_included_descendants_blocked",
      "leaf_only": true
    }
  ],
  "defaults": {
    "apply_on_profile_open": true,
    "apply_on_collection_open": true,
    "apply_on_sync": false,
    "apply_once_per_day": true,
    "dry_run": false,
    "log_level": "info"
  }
}

Debug Logging

  • Debug logging is off by default and no queue/history diagnostics are shown in the UI.
  • To enable temporary scheduler diagnostics before Anki loads the add-on, start Anki with the environment variable FRACTIONAL_SCHEDULER_DEBUG=1.
  • When enabled, the add-on appends JSON lines to fractional-scheduler-debug.log in the platform temporary directory.
  • The log may include deck names, schedule ids, queue order, and introduction-history details, so treat it as potentially sensitive and delete it when you are done.
  • When debug logging is not enabled, the add-on removes any old temporary debug log on profile/collection open.

GUI Smoke Test

The repository has an anki-addon-workbench config and probe add-on for a disposable Anki GUI smoke test. With anki-workbench installed, run:

anki-workbench smoke --xvfb

The probe verifies that the add-on module loads and that Fractional Scheduler: Open Config appears in Anki's Tools menu.

Release

Release packaging uses the sibling anki-addon-release project.

make release

That target validates the manifest/listing metadata, builds dist/fractional-new-card-scheduler.ankiaddon, inspects the archive contents, and runs an AnkiWeb dry run. Use make release-handoff to write handoff files for a browser/manual upload, or make release-login and make release-publish when publishing through the release browser profile with credentials from a git-ignored .env file.

License

MIT. See LICENSE.

Support continued development: ritornello.dev/support.