Prisma (Created by drgmb)

AnkiWeb addon 317377085

Adds gradient text, bionic reading, random layout, read-aloud with karaoke highlighting, and progressive reveal to chosen note types, desktop runtime or baked for mobile.
AI-generated summary; may contain mistakes.

formattingappearancecard-templatesaccessibilitymobile-compatible

Open on AnkiWeb GitHub Ask about alternatives

AnkiWeb

Rating
0 (πŸ‘ 0 Β· πŸ‘Ž 0)
Updated
2026-09-19
Anki versions
25.02~
Description language
en

Maintenance

active

  • Last update or commit was 12 days before the snapshot (2026-09-19).

GitHub

Repository
drgmb/prisma-anki Β· more by drgmb
Stars
⭐ 1 · forks 0 · open issues 0
Last commit
2026-09-15
License
MIT
Languages
Python, JavaScript, CSS
Tests
0

Will it work on my Anki?

Version branches
Min AnkiMax AnkiUpdated
2.1.5025.02+2026-09-19
History across monthly snapshots

Loading…

Similar addons

Beeline (WIP)

Adds configurable colored gradients to text to improve readability, currently supporting Basic and Cloze notes and only <br> or <br/> line breaks.

formattingappearanceaccessibilitybeta

Rating 3 πŸ‘ 3 Β· πŸ‘Ž 0 ⭐ 0 Updated 2022-08-05
Bionic Reading

Applies a reading format to selected Anki note types that bolds the beginning half of each word for faster reading, including on mobile.

formattingaccessibilitymobile-compatible

Rating 21 πŸ‘ 17 Β· πŸ‘Ž 4 ⭐ 3 Anki 24.11~ Updated 2025-05-13
Japanese Card Randomizer

Randomizes Japanese card review by changing fonts, swapping hiragana and katakana, displaying vertical text, and varying size.

formattingappearance

Rating 14 πŸ‘ 14 Β· πŸ‘Ž 0 ⭐ 6 Anki 2.1.49~ Updated 2022-06-17

README

Prisma

by drgmb Β· MIT license

Prisma showcase

Video version: docs/prisma-demo.mp4

An Anki desktop add-on that makes reading cards more active, on any note type you choose, without touching templates.

Features

Feature What it does
🌈 Color gradient (BeeLine) Every line of text gets a color gradient; the end of one line has the color of the start of the next, guiding your eye across line breaks. Colors are drawn fresh for each card and stay readable in both light and dark themes.
πŸ…± Bionic reading The beginning of each word is bold, anchoring your eye.
πŸ”€ Random layout Width, alignment, spacing and font size change on every showing, so you memorize the content rather than the visual shape of the card.
πŸ”Š Read aloud Reads the card with the system's speech synthesis, with adjustable speed from 0.5Γ— to 2Γ—, plus pitch, language and voice settings.
🎀 Spoken-word highlight Karaoke style: the word being read lights up in amber.
πŸ‘ Progressive reveal The text appears word by word, in time with the speech.

| πŸ”  | Text size | Scale the whole card's text from 50 % to 300 %, globally or per note type. Works together with Random layout. |

Everything can be turned on or off globally and overridden per note type.

Two ways to apply it

Mode How Works on
Runtime (default) The add-on injects the features into each card while it is shown. Templates are never touched. Anki desktop
Baked Tick Bake (mobile) for a note type and the add-on writes a marked block (style, preset, script) into that note type's templates. It syncs with the collection like any template edit, is refreshed every time you save the settings, and is removed cleanly when you untick it. Anki desktop, AnkiDroid, AnkiMobile

The block sits between <!--prisma:start--> and <!--prisma:end--> at the end of the template, plus a hidden marker at the top of the back template. Don't edit inside those markers; edit the settings instead.

Installation

  1. Download prisma.ankiaddon from the latest release (also in dist/).
  2. In Anki: Tools β†’ Add-ons β†’ Install from file… and pick prisma.ankiaddon.
  3. Restart Anki.
  4. Open Tools β†’ Prisma… and, on the Note types tab, tick the note types to apply it to. No note type is enabled by default.

Settings

Tools β†’ Prisma…

  • General
    • Enable/disable the add-on; apply to the front and/or the back.
    • Where to apply: reviewer, card previewer, template editor.
    • Global default for each feature, and the text size in percent.
    • Speech: speed, pitch, language (en-US, pt-BR…), voice name, how to read a cloze [...], initial delay.
    • Shortcut to toggle the add-on during review (default Ctrl+Shift+L; it is not shown in the menu).
  • Note types
    • An "Enabled" box per note type, a name filter, and buttons to check/uncheck the visible rows.
    • For each feature, Global / On / Off per note type. Example: gradient everywhere, speech only on the English deck.
    • A text-size box per note type (Global or a percent), handy for dense decks or small screens.

The same options exist as JSON under Tools β†’ Add-ons β†’ Config (documented there).

Behavior details

  • Hidden text, scripts, input fields and buttons are ignored by speech and by the gradient.
  • Words you colored by hand in a card keep their color.
  • If a note type's template already ships these features (it defines LEITURA_CONFIG), the add-on does not apply on top. This can be turned off.
  • Switching cards or leaving the reviewer stops any speech in progress.
  • The gradient is recomputed when the window is resized.

Limitations

  • The settings window and runtime mode are desktop only. On AnkiDroid and AnkiMobile use baked mode; the preset is frozen into the template at the time you save, so change settings on the desktop and sync.
  • On mobile, reading aloud depends on the app's web view. iOS may require a tap before speech can start, and the available voices differ from the desktop.
  • Speech depends on the voices installed on the system. On macOS the Samantha voice is the default; on other systems leave the voice name empty to use the first voice for the language.
  • On heavily structured templates (tables, boxes), the random layout may shift elements. Use the per-note-type override to turn it off where it gets in the way.

Repository layout

prisma/          the add-on (this folder is what gets zipped into prisma.ankiaddon)
dist/            packaged .ankiaddon
docs/            showcase GIF and MP4
demo/            the showcase generator (HTML timeline + headless-Chrome frame recorder)

Add-on layout

prisma/
β”œβ”€β”€ __init__.py    menu and shortcut
β”œβ”€β”€ config.py      config load/save and per-note-type resolution
β”œβ”€β”€ injector.py    Anki hooks: injects CSS + JS into the card HTML
β”œβ”€β”€ dialog.py      settings window (PyQt6)
β”œβ”€β”€ templates.py   bake mode: writes/removes the block in note-type templates
β”œβ”€β”€ config.json    defaults
β”œβ”€β”€ config.md      config documentation shown inside Anki
β”œβ”€β”€ manifest.json  package metadata
└── web/
    β”œβ”€β”€ prisma.js   the features, executed inside the card
    └── prisma.css  styles for the highlight and the reveal

Tested on Anki 25.02.

Author

Prisma is written and maintained by drgmb Β· https://github.com/drgmb. The injected blocks are signed with the author's name in comments and data-prisma-by attributes.

Credits

The features were ported from the author's own note template, inspired by Anki-Prettify, AnKing Note Types, BeeLine Reader and Bionic Reading.

Building the package

cd prisma && zip -r -X ../dist/prisma.ankiaddon . -x meta.json '*.pyc' '__pycache__/*'

Rendering the showcase

cd demo && npm install && node record.js record demo2.html && ffmpeg -framerate 30 -i frames/f%05d.jpg -c:v libx264 -pix_fmt yuv420p ../docs/prisma-demo.mp4