mrkeyoor.com_
Mon 07 Sept 16:59 UTC
Webevaluationupdated 07 Sept 2026

kiss-translator review

KISS Translator is primarily documented in Chinese, with separate English, Japanese, and Korean README files. It adds side-by-side translation to web pages, selected text, input boxes, and YouTube subtitles through browser extensions or a userscript, with a large choice of free, paid, and local translation services.

trackingstars / 7d
Verdict

Our KISS Translator build took 142 seconds, and 804 of 806 tests passed before 2 failures kept the suite red. It is a strong choice for a demanding multilingual reader who will use provider switching, terminology, or bilingual YouTube subtitles. Pick a narrower extension if you value a smaller codebase, a clean test run, or fewer chances for translated nodes to disturb complex pages.

We ran it

Lab card: what happened when we ran kiss-translatorScreenshot of kiss-translator (github.com/fishjar/kiss-translator)
Install✓ · 33s1421 packages · 478 MB
Build✓ · 142s
Tests✗ · 36s804 passed · 2 failed of 806 (jest)
Repo359 files~84,645 lines of source · 6.1 MB · 1 CI workflows

Answers from our run

Does kiss-translator build from source?

Dependencies installed in 33 seconds (1421 packages), and the build succeeded in 142 seconds. We cloned commit 13828a8 into a clean Debian container with 3 CPUs and no project-specific setup.

Do kiss-translator's tests pass?

Not all of them: 804 of 806 passed and 2 failed when we ran the project's own test command (jest). Some failures need services or credentials a bare container does not have.

Who should not use kiss-translator?

Maintainers who require a green checkout before contributing: our run ended with 2 failed tests and 3 failed suites.

What are the alternatives to kiss-translator?

Translate Web Pages, Firefox Translations, Immersive Translate. Our KISS Translator build took 142 seconds, and 804 of 806 tests passed before 2 failures kept the suite red.

Setup3/533-second install, but 1,421 packages and a 142-second build
Docs4/5Four README languages plus useful provider and userscript caveats
Community4/512,387 stars with current pushes and issue traffic
Maturity3/5v2.0.32 ships broadly, but the measured suite failed

Who it’s for

Multilingual readers who want original and translated text kept together on ordinary web pages.
Power users who switch among public translators, paid AI APIs, and local Ollama models.
Teams willing to write site rules, hooks, or terminology lists for recurring specialist content.
Browser-extension developers who can work in a large pnpm monorepo and investigate DOM regressions.

Who it’s NOT for

Maintainers who require a green checkout before contributing: our run ended with 2 failed tests and 3 failed suites.
Small extension teams avoiding a large dependency tree: our install pulled 1,421 packages and occupied 478 MB.
Users who expect every dynamic site to retain its layout: issue 1067 shows translated nodes distorting YouTube's comment-sort menu, and issue 1072 reports repeated translation after page interaction.
Safari users seeking the full native extension path: the README leaves both macOS and iOS Safari extension entries unchecked and instead documents an iOS userscript.
Anyone expecting the userscript to match the extension: the project recommends the extension because the script lacks some features and faces more cross-origin and script-conflict problems.

Setup reality

Our pnpm install succeeded in 33 seconds, adding 1,421 packages and using 478 MB. The build succeeded in 142 seconds. Tests failed after 36 seconds: 804 passed and 2 failed out of 806, with 3 failed suites and 70 passing suites.

Basic public translation can work through the installed extension. AI providers need their own endpoints, credentials, compatible parameters, and sometimes hooks; local Ollama must expose an OpenAI-compatible route and allow the browser origin. Optional cross-client sync adds KISS-Worker or WebDAV.

The repository is a workspace monorepo with no Dockerfile and one CI workflow. Browser extensions have more features than the userscript. Dynamic-page rules may need tuning, and the test log at commit 13828a8 was not clean.

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.

Alternatives

ProjectWhat it isPick it when
Translate Web PagesAn MPL-licensed Firefox extension focused on whole-page translation through familiar services.pick this instead when you want a narrower page translator and do not need KISS Translator's AI hooks, terminology, or sync system.
Firefox TranslationsMozilla's archived web extension performs translation on the client side.pick this instead when offline Firefox translation is the priority and an archived repository is acceptable.
Immersive TranslateA polished bilingual translator for pages and documents whose GitHub repository contains releases, not source code.pick this instead when packaged document workflows matter more than having the current extension source in GitHub.

What people are saying

  1. [github-trending] fishjar/kiss-translator

Sources

  1. KISS Translator README
  2. KISS Translator v2.0.32 release
  3. Issue 1067: YouTube comment-sort layout regression
  4. Issue 1072: repeated translation after page interaction
  5. KISS Translator custom API guide

More web reviews

notesnook · metamask-desktop · uni-app · motion · saleor · uppy · the whole board →