🇬🇧 English · 🇨🇳 简体中文 · 🇮🇩 Bahasa Indonesia · 🇰🇷 한국어 · 🇹🇭 ไทย
🇻🇳 Tiếng Việt · 🇲🇲 မြန်မာ · 🇮🇳 हिन्दी · 🇳🇵 नेपाली · 🇵🇭 Filipino
🇲🇾 Bahasa Melayu · 🇱🇰 සිංහල · 🇫🇷 Français · 🇧🇷 Português (Brasil) · 🇯🇵 日本語
Install from Chrome Web Store:
YomiRuby is a production-ready Manifest V3 Chrome extension that annotates Japanese text with furigana using semantic HTML ruby tags (<ruby>, <rt>, <rp>).
- Sentence and paragraph-based annotation flow.
- Progress overlay with live status updates.
- Cancel and kana visibility actions for safe iteration.
- Quota-aware pacing and retry/backoff logic for Yahoo API.
- Client ID test flow in Settings page.
- Offline mode fallback with a local dictionary when Client ID is missing or offline mode is enabled.
- Conservative DOM updates to reduce layout breakage.
- UI localization for English, Japanese, Simplified Chinese, Korean, Thai, Vietnamese, and Indonesian.
- Install from Chrome Web Store (link above).
- Open extension Settings, set a Client ID if you want Yahoo API usage, or enable offline mode for the local dictionary.
- Click Test Client ID when using the Yahoo API, then Save Settings.
- Visit a Japanese page and click Run Annotation Now.
- For local development, open
chrome://extensions, enable Developer mode, then Load unpacked.
- Developer portal: https://developer.yahoo.co.jp/
- API reference: https://developer.yahoo.co.jp/webapi/jlp/furigana/v2/furigana.html
YomiRuby sends requests to:
https://jlp.yahooapis.jp/FuriganaService/V2/furigana
If you prefer offline mode, YomiRuby uses a bundled local dictionary and does not send page text to Yahoo.
| Component | Responsibility |
|---|---|
background.js |
API communication, offline dictionary loading, quota pacing, retries, and tab/job status |
content.js |
DOM traversal, safe ruby injection, progress overlay, cancel/kana visibility |
popup.* |
User controls: enable, run, cancel, kana visibility, open settings |
options.* |
Client ID input, validation, API test, offline mode, save settings |
utils/* |
Constants, Japanese text helpers, DOM and ruby utilities |
| Permission | Why it is required |
|---|---|
storage |
Store Client ID/settings and temporary annotation status |
tabs |
Access active tab and send annotation commands |
scripting |
Ensure content scripts are available on target pages |
<all_urls> |
Annotate general websites |
https://jlp.yahooapis.jp/* |
Request furigana data from Yahoo API |
- Full policy: PRIVACY_POLICY.md
- Client ID is provided by the user and is never hardcoded.
- Text is sent to Yahoo API only when annotation is requested and offline mode is disabled.
- No YomiRuby backend server is used.
- Furigana alignment is best effort and depends on API tokenization output.
- Dynamic pages (shadow DOM/canvas-heavy apps) may be only partially covered.
- Very large pages can still be slower due to conservative processing.
- Better phrase-level alignment and user dictionary support.
- Optional site allow/deny lists.
- Incremental annotation for dynamic content.
Issues and pull requests are welcome:
Unlicense. See LICENSE.