Six clients and a userscript cover most browsing setups
The README names 6 main clients: Chrome or Edge, Firefox, Kiwi on Android, Orion on iOS, Safari, and Thunderbird. Distribution includes store extensions, release downloads, and Tampermonkey or Violentmonkey scripts. KISS Translator keeps the source paragraph visible beside its translation, with options to hide the original when space matters. Selection, hover, input-box, and full-page translation all use the same provider system, which makes the extension useful beyond casual reading.
YouTube support adds bilingual subtitles, custom subtitle styles, and sentence merging before translation. Users can ask an AI service to improve the segmentation, though quality then depends on that service and its settings. The extension also preserves links and some rich-text formatting inside translated material. Those features explain the project's size: it is closer to a configurable reading layer than a button that sends one page to Google Translate.
Version 2.0.32 offers provider choice at the cost of configuration
Version 2.0.32 supports familiar translators and AI endpoints including OpenAI, Gemini, Claude, Ollama, DeepSeek, OpenRouter, DeepL, Azure AI, and Cloudflare AI. The release added Google Cloud, Qwen MT, and Yandex Cloud, then changed the default translator to Microsoft. Provider choice is the reason to use KISS Translator, especially when one service handles prose better and another is cheaper for bulk pages. It also multiplies authentication, quota, and compatibility work.
Local Ollama users need an OpenAI-compatible address because the native Ollama route is unsupported. The FAQ says browser access may require OLLAMA_ORIGINS=*, and model-specific request differences can require a hook that edits the body. Aggregated translation can also fail with models that do not accept its batching scheme. Six default shortcuts handle page translation, styles, settings, popups, selected text, and input boxes, but browser-level shortcut assignment is still part of setup.
What happened when we ran it
Our run cloned commit 13828a8 into a fresh Node 22 container with 3 CPUs and 8 GB of RAM. Pnpm installed 1,421 packages in 33 seconds and occupied 478 MB. The build then completed successfully in 142 seconds. The checkout itself contained 359 files, roughly 84,645 lines of source, and used 6.1 MB before dependencies, so the installed tree is much larger than the source download.
Tests exited with code 1 after 36 seconds. Jest reported 804 passed and 2 failed out of 806 individual tests. At suite level, 70 passed and 3 failed out of 73. The log tail named src/libs/batchQueue.test.js, src/apis/trans.dict.test.js, and src/views/Options/Layout.test.js; the latter two were followed by "Test suite failed to run." The supplied tail does not show a cause, so we cannot assign one.
Our scan found 1 CI workflow, no Dockerfile, no top-level tests directory, and pnpm workspaces. The successful 142-second build proves that commit compiled in the lab container. It does not cancel the failed test command, and the 804 passing cases do not turn a red suite green. Contributors should reproduce all 3 failing suites before changing code, because the tail alone cannot distinguish a source regression from an environment mismatch.
Dynamic pages can break when translated nodes enter controls
Open issue 1067 documents a concrete YouTube regression on a development commit: translation nodes enter the hidden comment-sort menu, enlarge an SVG icon, and distort the surrounding layout. Comment text still translates. That split is important because page translation can appear mostly successful while damaging one control. Site rules and ignored nodes are part of operating this extension, especially on applications whose DOM changes without a full navigation.
Version 2.0.32 has other current reports. Issue 1072 says selecting text after translating a Bitwarden community page triggers repeated translation. Issue 1065 reports a full-page translation that copied some original text instead of translating it, while issue 1064 concerns subtitles disappearing before a long spoken line ends. These reports cover different paths, so a trial should include the sites, subtitle sources, and providers a team really uses.
The extension is fuller than the userscript
The README gives 2 explicit reasons to prefer the browser extension: local language detection and context-menu integration are more complete, while userscripts encounter more cross-origin failures and script conflicts. Safari is the awkward platform. Native Safari entries for macOS and iOS remain unchecked, although an iOS Safari userscript is available through the Userscripts app. That path may be enough for reading, but buyers should not assume parity with Chrome or Firefox.
Cross-device settings can sync through KISS-Worker or WebDAV. Community rule subscriptions handle sites that need manual targeting, and personal rules override subscriptions before the global fallback. Custom terminology and AI dictionaries help with repeated technical language. Each layer adds another place to debug when output is wrong: page rules decide what text moves, provider settings decide how it is translated, and sync decides which configuration reached the browser.
September activity is current, while 181 open items signal a busy project
GitHub records the last push on September 6, 2026, and an issue opened that same day. The repository had 12,387 stars and 181 combined issues and pull requests when fetched. Latest release v2.0.32 arrived on August 12, with 5 downloadable browser or userscript archives and a note that CVE-2026-54466 was fixed. Pushes plus active issue handling show ongoing work; the combined count is not a bug total.
KISS Translator earns a trial if bilingual pages are daily work and one provider is not enough. Our 478 MB install and failed 806-test run make it harder to recommend as a casual code contribution, even though the build passed. Install the packaged extension first, test it against your real dynamic sites, and move to custom hooks or rule subscriptions only when a repeated failure justifies the extra configuration.

