KAnki is a spaced repetition flashcard application designed specifically for jailbroken Kindle devices. It helps users learn vocabulary in any language through digital flashcards with a spaced repetition system.
Huge thanks to PolishPenguin for lending a hand — couldn't do it without them!
✨ New Update: Üben + KAnki Workflow
You can now use Uben as a companion tool to manage your decks more easily.
Since Kindle itself cannot process .apkg files directly, the workflow is:
- Find a deck on Anki (e.g., shared decks online).
- Import the
.apkginto Uben. - Edit, add, or update cards using Uben’s modern UI.
- Export from Uben → generates a
kanki_config.js. - Transfer
kanki_config.jsto your Kindle (replace your existing file). - Launch KAnki on your Kindle with the new deck.
Advantage of this approach:
- You get a much better UI for editing and creating decks for KAnki on Uben.
- Once you’re done, you just export the ready-to-use configuration to your Kindle.
- No need to manually type out decks on Kindle anymore!
KAnki Community
Share your language / study material configurations with others with the new KAnki community update on Üben
Community
- For more information / doubts / suggestions join our discord - https://discord.gg/JtcrpG7ECA
- Universal language support: Learn any language by simply changing the font and vocabulary
- Spaced repetition system to optimize learning
- Customizable vocabulary flashcards with any proficiency levels
- Filtering by level (JLPT, CEFR, HSK, or any custom system)
- Star/favorite system: Mark important cards and filter by starred items
- Reversible cards: Switch between target language → native and native → target language modes
- Per-card statistics: Track how many times each card has been viewed and review history
- Error review mode: Review cards you answered incorrectly right after completing a session
- Centralized configuration: Easy customization through a single configuration file
- E-ink optimized UI: Fixed element heights and visibility management to minimize screen refreshes
- Data persistence: All study progress and card statistics are automatically saved between sessions
- The app is designed for jailbroken Kindle devices with very limited browser capabilities
- Uses older ES5 JavaScript only (no modern JS features)
- Limited CSS support (no flexbox, grid, CSS variables, etc.)
- A jailbroken Kindle device
- Access to the Kindle's filesystem
- Basic knowledge of file transfer to Kindle
- Clone this repository or download it as a ZIP file
- Connect your Kindle to a computer via USB
- Unzip the downloaded file (Make sure the name is KAnki)
- Copy the KAnki folder and the
kanki.shscript to thedocumentsfolder on your Kindle - Open the
kanki/js/kanki_config.jsfile and edit the configuration to match your language. - Download or convert a TTF font file that supports your target language. Rename it to
language.ttfand place it in:kanki/assets/fonts/language.ttf - Disconnect your Kindle from the computer
- Open the Kindle's home screen and run the KAnki app
- Back up your current
kanki/js/vocabulary.jsorkanki/js/kanki_config.jsfile if you have been using KAnki, ignore if you are a new user - Download the new KAnki release
- Replace your old KAnki folder with the new one
- Copy your vocabulary data to the new
kanki/js/kanki_config.jsfile - Optional: Customize language settings in
kanki_config.js - Copy your
language.ttffont file to the newkanki/assets/fonts/language.ttflocation - Disconnect your Kindle from the computer
- Open the Kindle's home screen and run the KAnki app
- Hit the
Reloadbutton after clicking the 3 dots in the top chromebar in the app to apply changes. - Done! Your KAnki app is now updated with the latest features including the new star/favorite functionality
Note for users updating to the starred cards version: When updating from a previous version without the star functionality, all your existing cards will initially be unstarred. You'll need to manually star your important cards after updating.
KAnki makes it easy to study any language by changing just a few files:
Download or convert a TTF font file that supports your target language. Rename it to language.ttf and place it in:
kanki/assets/fonts/language.ttf
Edit kanki/js/kanki_config.js to include your language configuration and vocabulary:
/**
* KAnki Configuration
* Edit these settings to customize the app for your language
*/
var KANKI_CONFIG = {
language: "Spanish", // Change this to your language name
levels: ["A1", "A2", "B1"] // These should match the keys in your VOCABULARY object
};
/**
* Vocabulary Data
* Organized by proficiency level
*/
var VOCABULARY = {
"A1": [
{"front": "hello", "back": "hola", "notes": "Greeting"},
// Add more words...
],
"A2": [
{"front": "tomorrow", "back": "mañana", "notes": "Time"},
// Add more words...
],
// Add more levels...
};For languages with different writing systems, use the reading property:
{"front": "こんにちは", "reading": "konnichiwa", "back": "Hello", "notes": "Greeting"}Web Editor for Flashcards by Kindlemodshelfguy
For an easy way to manage your flashcards visually, you can use the KAnki Web Editor:
- Web Editor: https://kindlemodshelf.me/editor.html
This online editor allows you to:
- Upload your existing flashcard configuration files
- Add, edit, and delete cards and decks through a user-friendly interface
- Preview how your flashcards will look on different Kindle generations
- Export your modified configuration back to your Kindle
If you want to convert your KAnki configuration to Anki's .apkg format for the desktop/mobile Anki application, you can use the KankiToAnki converter:
- GitHub Repository: https://github.com/crizmo/KankiToAnki
- Web App: https://kankitoanki.vercel.app/
KAnki saves your progress and card statistics using the Kindle's localStorage feature. All your data is stored locally on your device at:
/Kindle/.active_content_sandbox/kanki/resource/LocalStorage/file__0.localstorage
If you ever want to reset all progress or encounter issues with saved data, you can:
- Delete this file to completely reset the application data
- Use the "Reset Progress" button within the app to only reset card progress while keeping your deck intact
- Use the "Reset All" button to return to the default deck and clear all progress
kanki.sh # Startup script
kanki/
config.xml # Application configuration
index.html # Main HTML file
main.css # Styles
main.js # Application logic
assets/
fonts/
language.ttf # Language font file
js/
kanki_config.js # Language configuration and vocabulary
polyfill.min.js # ES5 polyfills
sdk.js # Kindle-specific functions
- The app uses ES5 JavaScript for compatibility with Kindle's older browser
- XMLHttpRequest is used instead of fetch for API calls
- Custom language fonts are supported for proper character rendering
- Local storage is used to save flashcard progress
- Card objects include a
starredproperty that persists with the deck data
- UI rendering issues due to different Kindle screen sizes
- Inspired by the Anki spaced repetition software
- Special thanks to the Kindle jailbreak community
- For more information / doubts / suggestions join our discord - https://discord.gg/JtcrpG7ECA