Auto Suspender / Unsuspender

AnkiWeb addon 1102176176

Automatically suspends or unsuspends cards using configurable policies, quotas, searches, rankings, workload triggers, previews, history, and safe reverts to control review workload.
AI-generated summary; may contain mistakes.

schedulingreview-flow

Open on AnkiWeb GitHub Ask about alternatives

AnkiWeb

Rating
0 (πŸ‘ 0 Β· πŸ‘Ž 0)
Updated
2026-08-30
Anki versions
2.1.1~
Description language
en

Maintenance

active

  • Last update or commit was 32 days before the snapshot (2026-08-30).

Will it work on my Anki?

Version branches
Min AnkiMax AnkiUpdated
2.1.1+2026-08-30
History across monthly snapshots

Loading…

Similar addons

Semantic search

Enables meaning-based natural-language card search via embeddings, with optional Claude reranking, smart multi-vector search, duplicate finding, suspend/unsuspend, scheduling, vignette, and guideline review tools.

aischedulingduplicatessearch

Rating 8 πŸ‘ 8 Β· πŸ‘Ž 0 Anki 2.1.1~ Updated 2026-04-05
FSRS Helper (Sound's Fork)

Supports FSRS by rescheduling cards from review history, postponing or advancing reviews, balancing load, applying easy days, dispersing siblings, and flattening future due cards.

schedulingfsrsreview-flowstatistics

Rating 0 πŸ‘ 0 Β· πŸ‘Ž 0 ⭐ 1 Anki 2.1.1~ Updated 2026-07-06

README

Anki: Suspend Manager

Automatically suspend or unsuspend the right cards to keep your Anki review workload under control.

Each policy is one simple, ordered action: choose when it runs, which cards it can change, and which matching cards should go first.

Features

  • Release a chosen number of suspended cards automatically each Anki day.
  • Suspend a chosen number of active cards automatically each Anki day.
  • Suspend or unsuspend a bounded batch at most once per Anki day.
  • Suspend cards when estimated long-term workload is too high, or unsuspend them when it is low.
  • Select cards with any Anki search and rank them randomly or by interval, lapses, repetitions, difficulty, retrievability, card ID, or a numeric note field.
  • Get an automatic, editable name for each policy.
  • Run one policy or all enabled policies, and preview selections in Browse.
  • Review past runs, open their cards in Browse, and safely revert suspension changes.
  • Optionally reset lapse counters without changing repetitions or review history.
  • Apply each run as one undoable Anki action.

Install for development

Synchronize the current source into the local Anki installation with:

./copy_to_anki.sh

The script preserves Anki-owned add-on configuration and user_files. Fully quit and reopen Anki afterward so it loads the updated Python modules.

Build a locally installable package with:

./package.sh

The script creates matching archives at dist/anki-suspend-manager.ankiaddon and anki-suspend-manager.ankiaddon.

Configure in Anki

Open Tools > Suspend Manager > Configure Policies…, or select the add-on under Tools > Add-ons and choose Config. Select a policy on the left, then edit its trigger, card filter, ranking, and single action on the right.

Use the checkbox beside a policy in the list to enable or disable it. The checkbox and the Use this policy control stay synchronized; changes are applied when you save the configuration.

New policies receive a suggested name based on those settings. The suggestion keeps up with configuration changes until you edit it; choose Use suggestion to replace an override with the current generated name.

Right-click a policy for:

  • Run Policy Now: validate and save the current configuration, then evaluate only that policy. It can run a disabled policy, but its trigger, daily quota, and once-daily marker still apply.
  • Test Selection Filter: open Browse with the policy's effective search, including the required suspended/active state and workload scope. Testing is read-only and does not save the configuration.

Choose Run All Now beside Save to validate and save the configuration, then run all enabled policies in order. Tools > Suspend Manager > Run All Now does the same execution using the last saved configuration.

On profile open and Anki day rollover, Suspend Manager automatically evaluates daily-release, daily-suspend, once-daily, and workload policies. Daily releases and suspensions share a stored per-policy quota across repeated evaluations. A once-daily policy is marked as evaluated even when no cards match, so reopening the profile cannot process another batch that day. Workload policies can run repeatedly because their target provides the stopping condition. Unconditional policies run only when started manually.

Policy model

Policy
β”œβ”€β”€ Trigger
β”œβ”€β”€ Selector and ranking
└── Action, limits, and post-action

Policies run in configuration order. Each policy is evaluated after earlier policies finish, so its trigger sees their changes. A card that changed once is not changed again in the same run.

Workload policy example

{
  "id": "cap-french-high-lapses",
  "name": "Suspend high-lapse French cards",
  "enabled": true,
  "trigger": {
    "type": "inverse_interval_sum",
    "search": "deck:French",
    "operator": ">",
    "threshold": 200,
    "target": 200
  },
  "selector": {
    "search": "tag:low-priority",
    "order_by": {
      "value": "prop:lapses",
      "direction": "desc"
    }
  },
  "action": {
    "type": "suspend",
    "max_cards": 0,
    "daily_limit": 0,
    "post_actions": {
      "reset_lapses": false
    }
  }
}

The workload search automatically includes only active cards. The selector is intersected with that scope and with the state required by the action. Each selected card changes workload by 1 / max(interval, 1), and selection stops as soon as the target is crossed.

For workload policies, max_cards may be 0 so the workload target is the sole stopping condition. Daily-release and daily-suspend policies use max_cards: 0 and a positive daily_limit. Once-daily and manual-only policies require a positive max_cards because they have no workload target. For a once-daily policy, max_cards is the daily cap and daily_limit must be 0.

Value selectors

  • random (the direction is ignored)
  • card:id
  • card:difficulty or prop:d
  • card:interval or prop:ivl
  • card:lapses, prop:lapse, or prop:lapses
  • card:reps or prop:reps
  • card:retrievability or prop:r
  • field:<field name>, such as field:Frequency

Note fields are parsed as numbers after HTML is stripped. Missing, non-numeric, NaN, and infinite values sort last. Ties use card ID for stable ordering.

History, daily state, and migration

Choose History to inspect runs by local date. Open in Browse searches for the run's cards. Revert run… reverses only suspension states that still match the original run's result, skips deleted or already-reversed cards, and creates one Anki undo entry. Revert does not restore lapse counters, daily quota, or once-daily markers.

History, daily quota, and once-daily markers are stored per profile in the add-on's local user_files/state.json. They are not stored in the collection, do not sync, and are not changed by Anki undo.

Version 2 and 3 configurations are migrated in memory. Every version 2 step becomes one policy. For version 3 configurations, unconditional policies become once-daily when the old global automatic-running option was enabled; otherwise they become manual-only. Daily-release and workload policies keep their trigger settings. Saving writes the version 4 format without a global automatic switch.