AnkiWeb
- Rating
- 1 (👍 1 · 👎 0)
- Updated
- 2026-05-29
- Anki versions
- 25.07~
- Description language
- en
AnkiWeb addon 814125200
Adds Apple Fitness-style configurable progress ring widgets to Anki dashboards, tracking tags, decks, searches, or today's study progress with clickable metrics.
Open on AnkiWeb GitHub Ask about alternatives
active
| Min Anki | Max Anki | Updated |
|---|---|---|
| 23.10 | 25.07+ | 2026-05-29 |
Loading…
Tracks Anki review velocity and accuracy, providing pacing timers, countdown lights, metronome feedback, and macOS Apple Music/Spotify controls in dock or floating widget modes.
Provides a floating dashboard to organize decks into priority tiers or sessions, track progress and analytics, and start studying quickly via shortcuts.
Displays swipeable study stats on Anki’s home screen, including goal rings, activity, streaks, forecasts, best hours, and FSRS metrics, with customizable cards, goals, size, and theme.
Offers a tactical Anki pacing dashboard with dock or floating widgets, interval and Pomodoro timing, velocity and accuracy metrics, music and metronome controls, and resizing.
Transforms Anki into a configurable visual command center with exam countdown, one-click next session, deck velocity, leech monitoring, streak and retention stats.
Adds a social leaderboard to Anki for comparing study statistics with friends via a dashboard, Study Score, and deck browser widget.
Activity Rings is an Anki desktop add-on that adds configurable Apple Fitness-style ring widgets to the deck browser and deck overview screens.

Compatibility target:
The add-on now supports:
anki_activity_rings folder into your Anki addons21 directory.Tools -> Activity Rings.On macOS, the add-on folder is usually:
~/Library/Application Support/Anki2/addons21
Alternatively, download and double click the activity-rings.ankiaddon to install the addon.
Open Tools -> Activity Rings or Tools -> Add-ons -> Activity Rings -> Config.
The editor is organized into:
You can also:
Match widget sizesEach widget can use one source:
Tag: choose a tag, with optional child-tag inclusionDeck: choose a deckSearch: use any Anki search query as the widget sourceToday's Progress: show today's new/review progress for all decks or one specific deckExamples:
tag source: #AK_Step1_v12::FirstAidsearch source: deck:"Step 1" -is:suspendedtoday source: all decks, or one deck such as Step 1::PharmTag matching tolerates optional leading # on tag segments, so #Parent::#Child and Parent::Child resolve to the same hierarchy.
If a tag source is left empty on purpose, the widget stays saveable as a placeholder, shows empty rings with Tag Empty, and clicking that dashboard card opens the standalone tag picker.

Each ring has:
metric: the numerator ruledenominator: the denominator ruleBuilt-in metric choices include:
allmatureyoungunsuspendedsuspendedburiednewnon_newlearningreviewdueleechreviewedtoday_review_completedtoday_review_totaltoday_new_completedtoday_new_totaltoday_all_completedtoday_all_totalYou can also use Custom Search for either the numerator or denominator.
Examples:
Mature / UnsuspendedYoung/Learning / UnsuspendedUnsuspended / AllDue Today / UnsuspendedCustom Search / Custom SearchNew installs and Restore Defaults now start with three widgets:
Today's ProgressTagTagThe two study-source widgets intentionally start as empty tag placeholders so you can assign your own tags without editing JSON. Clicking either placeholder card on the dashboard opens the tag picker, and after you choose a tag you can immediately set the widget title.
That keeps the daily default motivating, while tag/search widgets still use honest maturity/availability semantics instead of pretending every ring is “completion.”
Widgets can open the Anki Browser:
This makes the dashboard usable for drill-down, not just display.
The visual editor is the main workflow, but JSON config still works.
Edit JSON... is available inside the visual editor{
"global": {
"show_on_screens": ["deckBrowser", "overview"],
"panel_margin": 18,
"panel_spacing": 16,
"cache_ttl_seconds": 30,
"hide_when_no_widgets": false,
"dashboard_position": "top",
"theme": "auto",
"palette": "soft",
"default_card_style": "native",
"debug_timing": false
},
"widgets": [
{
"id": "first_aid",
"title": "First Aid",
"source": {
"type": "tag",
"tag": "#AK_Step1_v12::FirstAid",
"include_children": true
},
"layout": {
"mode": "compact",
"title_position": "inside",
"show_source_subtitle": false,
"show_total_cards": true,
"show_legend": true,
"show_counts": true,
"show_percentages": true,
"ring_size": 204,
"ring_thickness": 18,
"ring_gap": 8,
"card_min_width": 290,
"card_max_width": 390,
"card_aspect_ratio": 1.08,
"card_padding": 18,
"center_label_mode": "primary_percent",
"primary_ring_id": "mature",
"center_label_text": "",
"center_value_font_size": 30,
"center_value_auto_fit": true,
"center_caption_font_size": 11,
"center_caption_auto_fit": true,
"click_action": "source",
"ring_click_action": "numerator"
},
"style": {
"background_color": "auto",
"card_opacity": 0.92,
"border_color": "auto",
"shadow_enabled": true,
"track_color": "auto",
"use_glow": false
},
"rings": [
{
"id": "mature",
"enabled": true,
"label": "Mature",
"metric": { "type": "builtin", "name": "mature" },
"denominator": { "type": "builtin", "name": "unsuspended" },
"color": "auto",
"track_color": "auto"
},
{
"id": "young",
"enabled": true,
"label": "Young/Learning",
"metric": { "type": "builtin", "name": "young" },
"denominator": { "type": "builtin", "name": "unsuspended" },
"color": "auto",
"track_color": "auto"
},
{
"id": "active",
"enabled": true,
"label": "Unsuspended",
"metric": { "type": "builtin", "name": "unsuspended" },
"denominator": { "type": "builtin", "name": "all" },
"color": "auto",
"track_color": "auto"
}
]
}
]
}