かえる · Read Japanese anywhere on the web.
Furigana · AI explanations · Sentence mining · Immersive translation
Kaeru is a browser extension that turns any Japanese webpage into an interactive reading experience. Whether you're at N5 or pushing toward N1, Kaeru layers learning tools directly onto the page — so you can read real Japanese content from day one.
The name かえる (kaeru) means frog, but also to change (変える) and to return home (帰る). The idea: change how you read, and Japanese starts to feel like home.
Built on top of Read Frog, extended specifically for Japanese learners.
Automatically adds reading aids (振り仮名) above kanji across the entire page. Three display modes:
- All — show furigana on every kanji word
- Unknown only — show furigana only on words not in your vocab list (coming soon)
- Off — clean reading mode
Click or hover any word to see:
- Reading (平仮名)
- Base form (辞書形)
- Part of speech
- JLPT level (N5–N1)
- AI-generated explanation in context
- Example sentences
Full-page bilingual view with Japanese original and your target language side by side. Powered by 20+ AI providers — bring your own API key or use free translation services.
Save any sentence to your personal library with one click. Each entry stores:
- Original Japanese sentence
- Translation
- Source URL
- Timestamp
Export to CSV (Anki-compatible format) anytime.
git clone https://github.com/MeghanBao/Kaeru.git
cd kaeru
pnpm install
pnpm devThen in Chrome:
- Go to
chrome://extensions - Enable Developer mode
- Click Load unpacked
- Select
.output/chrome-mv3-dev
pnpm buildOutput is in .output/chrome-mv3/.
Kaeru inherits Read Frog's provider system. Bring your own key for any of these:
OpenAI · Anthropic · DeepSeek · Google Gemini · Ollama · Mistral · and more
Free options (no key required): Google Translate · Microsoft Translate
kaeru/
├── src/
│ ├── components/ # React UI components
│ │ ├── JapaneseWordCard.tsx # Word card popup
│ │ └── SentenceLibrary.tsx # Mined sentences viewer
│ ├── entrypoints/ # WXT entry points
│ │ ├── background/ # Service worker
│ │ │ └── kaeru-handler.ts # Tokenization & lookup handler
│ │ ├── furigana.content/ # Furigana injection content script
│ │ ├── popup/ # Extension popup
│ │ └── options/ # Settings page
│ ├── services/ # Core services
│ │ ├── japanese-analyzer.ts # kuromoji.js wrapper
│ │ ├── jmdict-service.ts # Dictionary lookups + JLPT
│ │ └── sentence-mining-service.ts # Sentence saving + CSV export
│ ├── types/ # TypeScript definitions
│ │ └── japanese.ts # Japanese-specific types
│ ├── locales/ # i18n translations
│ └── utils/ # Shared utilities
├── public/
│ └── kuromoji-dict/ # kuromoji dictionary files
├── docs/ # Documentation
│ ├── architecture.md
│ └── setup-guide.md
├── wxt.config.ts # WXT extension config
└── package.json
- Fork Read Frog, project setup
- kuromoji.js integration (morphological analysis)
- Furigana injection (all kanji mode)
- Japanese-specific word card UI
- JLPT level tagging via JMdict
- Sentence mining + CSV export
- Unknown-word-only furigana mode
- Pitch accent display
- Chrome Web Store release
| Layer | Technology |
|---|---|
| Extension framework | WXT (Manifest V3) |
| UI | React + Shadow DOM |
| AI providers | Vercel AI SDK |
| Morphological analysis | kuromoji.js |
| Dictionary | JMdict (EDRDG) |
| Local storage | Dexie (IndexedDB) |
| Language | TypeScript |
This project is in early development. Issues and PRs are welcome.
# Run in dev mode
pnpm dev
# Type check
pnpm type-check
# Lint
pnpm lint- Read Frog — the foundation this project is built on
- kuromoji.js — Japanese morphological analyzer
- JMdict — Japanese dictionary data (EDRDG)
- WXT — browser extension framework
MIT © 2025 · Based on Read Frog (GPL-3.0)