AGSoft Translate
Free translation with no API key, fifteen backends, and a fallback chain
- translated_text
- translation_info
- service_info
Want your prompt translated to English before it hits the encoder? That's a common move - most SD/Flux text encoders were trained with English-dominant data, so writing in English usually gives you better adherence. AGSoft Translate from comfyui-AGSoft does it inside the graph, for free, with no API key and no account. The catch - and there's always a catch - is how it's free, and it's worth knowing before you build a workflow on it.
The mechanism (the honest part)
Under the hood this node wraps the translators Python package (UlionTse's project, the only real pip dependency in the whole pack besides numpy/opencv). That library doesn't call paid APIs. It talks to the public web endpoints of translation services the same way your browser would - Google, Bing, Yandex, DeepL, and about a dozen more - and scrapes the result back. That's why there's no key input anywhere: there's nothing to authenticate. Fifteen services are listed in the service dropdown (google, bing, yandex, deepl, papago, baidu, sogou, youdao, caiyun, reverso, alibaba, argos, and a few more), 80+ languages in bilingual "English - Английский" format (the author is Russian, and it shows - the default target is Russian).
The inputs that matter:
text- multiline, so whole paragraphs are fine.service- defaults to google; pick deepl if you want the best quality on European languages, knowing it's the most likely to rate-limit you.target_language- the big bilingual dropdown;source_languagedefaults to auto-detect.custom_target_lang/custom_source_lang- override the dropdowns with raw codes likeen,ru,hywhen your language isn't in the list or you want exact control.sleep_seconds(default 0.5) - delay between requests, there specifically to avoid rate limiting. This is not a number to zero out.invert_direction- swaps source and target, handy for round-trip checks.show_service_info- dumps service/language info into theservice_infooutput.
Outputs: translated_text, translation_info (a human-readable "translated from X to Y via service" line), and service_info.
Why the fallback chain matters
Free scraping endpoints are flaky. Google especially gets grumpy about automated requests. So the node tries your chosen service, and on any error it silently falls back through google → bing → yandex before giving up. That's a genuinely thoughtful design for a free node - but it also means your results can quietly change quality depending on which backend actually answered. If you're doing something where consistency matters, pin the service and watch the console output.
Installing it
Same as the rest of the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/Art-xmaster/comfyui-AGSoft.git
cd comfyui-AGSoft && pip install -r requirements.txt
# restart ComfyUI
Or search comfyui-AGSoft in ComfyUI Manager, which installs requirements for you. The translators package is the one extra dependency - ComfyUI's own install won't have it.
Troubleshooting (real ones)
- "Check internet connection" / Connection errors - the #1 failure mode. This node requires a working connection to the translation services; it's not local. No internet, no translation.
- Rate limiting - if translations start failing or timing out mid-batch, raise
sleep_seconds. In a loop over many prompts this node can hit the free endpoints hard, and the services do notice. - Node missing after install - remember the pack's loader logs per-module import failures without crashing ComfyUI. If the whole pack loaded but this node isn't in the menu, the
translatorspackage probably didn't install; check your console log andpip show translators. - Quality varies by service/language - this is a scraper, not a paid pipeline. Fine for prompts and captions; don't route your thesis through it.
One more honest note: because it scrapes free web endpoints, it's technically using services outside their official APIs. It's widely used and it works, but treat it as a convenience, not infrastructure.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | Hello, world! Привет, мир! | Text to translate. Can be multiple lines. Текст для перевода. Может быть многострочным. |
| service | COMBO | Translation service to use. Сервис перевода для использования. | |
| target_language | COMBO | Russian - Русский | Target language for translation. Format: English - Russian. Целевой язык для перевода. Формат: Английский - Русский. |
| source_languageopt | COMBO | Auto detect - Автодетект | Source language. 'Auto detect' for automatic detection. Исходный язык. 'Auto detect' для автоопределения. |
| custom_target_langopt | STRING | Custom language code (e.g., 'en', 'ru', 'hy'). Overrides selected target language. Пользовательский код языка (например, 'en', 'ru', 'hy'). Переопределяет выбранный целевой язык. | |
| custom_source_langopt | STRING | Custom source language code. Leave empty for auto-detection. Пользовательский код исходного языка. Оставьте пустым для автоопределения. | |
| sleep_secondsopt | FLOAT | 0.50.1–5 | Delay between translation requests (seconds). Prevents rate limiting. Задержка между запросами перевода (секунды). Предотвращает ограничение частоты. |
| invert_directionopt | BOOLEAN | false | Invert translation direction: swap source and target languages. Инвертировать направление перевода: поменять местами исходный и целевой языки. |
| show_service_infoopt | BOOLEAN | false | Show detailed information about translation services and language codes. Показать подробную информацию о сервисах перевода и кодах языков. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| translated_text | STRING | — |
| translation_info | STRING | — |
| service_info | STRING | — |