How BabelBot translates Discord messages
Learn when BabelBot translates Discord messages automatically, when it skips, and how quotas and bridges behave.
This page explains how BabelBot behaves. Use it when a translation is missing, when the channel feels noisy, or when you want to know what counts toward your plan. For step-by-step fixes, see Troubleshooting. For plan numbers, see Billing and Limits.
What happens when someone posts
When someone posts in a server text channel where BabelBot is on, BabelBot checks the message in this order:
- Can it translate here? The server must be on, the channel must be allowed, and the message must be worth translating.
- What text is included? BabelBot collects plain message text and text inside rich embeds (titles, descriptions, fields, and footers). That covers embeds from bots, such as a rules or announcement card. It does not cover the automatic preview Discord adds under a plain link. Embed translation works on every plan and counts the same as a normal translation.
- Is this channel in a bridge? If yes, BabelBot may send the result to a linked channel instead of (or as well as) the local target languages.
- Do attachments need special handling? Supported PDFs, images, videos, and audio follow different rules than plain text. Media translation is a paid feature on Pro and above. If a message has several supported images, BabelBot translates each image in order. Unsupported file types are not sent for media translation. If the media cannot be translated but the message text can, BabelBot can still post the text translation with a short partial notice.
- Is the source language blocked? For normal automatic messages, BabelBot can skip before using quota when the detected source language is on Don't translate from.
- Is AI quota available? Features that need AI check your plan's remaining AI translations.
- Which method applies? Plain text uses AI translation when quota is available. On Free, Pro, and Ultra, plain text in supported target languages can use BabelBot's in-house translator after AI quota is used. Languages marked AI only in the dashboard need AI quota. Plain text bridge messages in supported languages can also use the in-house translator if AI fails with a technical error before returning a usable translation.
- Translate once per target. BabelBot runs one translation per target language (or per bridge destination language).
- Drop unusable results. BabelBot drops results that are empty or already in the target language.
- Deliver the translation. BabelBot posts as channel replies or inside a translation thread, based on your delivery settings.
- Record usage. BabelBot records quota only when a translation is actually posted.
Usage does not increase when BabelBot skips a message or drops output after translation.
Recent context for AI translation
Automatic AI translation can use up to five previous human text messages from the same channel or thread. That context helps with pronouns, slang, and unclear wording. BabelBot caps each of those messages at 200 grapheme clusters. It keeps this recent context for up to 15 minutes. BabelBot does not pull older Discord history.
Recent message context applies only to normal automatic AI translations. Bridge translations and the in-house translator do not use it. BabelBot asks AI to translate only the current message. If the result appears to repeat recent context, BabelBot blocks that result and retries the current message once without recent context.
When messages are skipped
BabelBot does not call a translator when:
- The server master switch is off
- The channel is on the server's disabled-channel list (see Dashboard Guide)
- The author is a bot, except native Discord followed-announcement crossposts (see below) or a bot you added to Translate other bots in the Dashboard Guide. BabelBot always ignores its own messages.
- The author is on the server's ignored-users list
- The message is not in a server channel (automatic translation only runs in servers)
- A normal automatic message contains no translatable text, such as whitespace only, a link without attachments, a raw ID, or a message made only of custom or animated Discord emoji. Bridges still copy non-empty content unchanged.
- A normal automatic message contains only attachments, but media translation is off or the plan does not allow it. Bridge attachment mirroring is exempt.
- A normal automatic message is confidently detected as a language in Don't translate from
- AI quota is exhausted and BabelBot's in-house translator cannot cover the work (for example, the target language has an AI only label or the message includes attachment content). Mirroring bridge attachments does not use AI.
BabelBot may run translation but not post a translation when:
- The message is already effectively in the target language (this stays silent). Messages with meaningful sentences in another language still go through translation.
When BabelBot gets missing, empty, or duplicated output for target languages on a regular automatic message, it can add a Retry button. If some languages worked, the button appears on the Partial translation notice. If none worked, it appears on the Translation failed notice. Retry asks for the failed target languages only. It leaves out targets that match the source language. The button stays available for about 1 minute.
If BabelBot asks you to wait, wait for the cooldown and click Retry again. A failed attempt to get the original message, translate, check quota, or post does not use up the retry, so the button remains available until it expires. Bridge translations do not get a retry button.
When BabelBot started translating but could not produce usable output for any target, it posts a short failure notice instead of staying silent. Retryable failure notices can include Retry. Failure notices do not count toward usage.
"Missing" translations are often correct skips. Compare the message to the lists above before assuming a bug.
Reply mode and thread mode
| Scenario | Reply in channel | Reply in threads |
|---|---|---|
| One target language | One reply under the message | One thread with the translation |
| Multiple target languages | One reply containing all translations | One thread containing all translations |
| Messages inside an existing thread | Replies inside the thread | Replies inside the thread |
If Discord rejects a reply because the original message was deleted or does not support replies, BabelBot posts the translation as a normal channel message instead. In thread mode, BabelBot also replies in the channel when Discord permissions prevent it from creating or posting in the translation thread.
Controlling noise
Multiple target languages add more translated sections to each result. Long translations can split into more than one reply so Discord accepts them. Thread mode groups translations so the main channel stays readable.
In thread mode you can set thread retention (days until BabelBot deletes its translation threads). That control lives under Settings → Reply preference in the dashboard.
When a message is already inside a Discord thread, BabelBot replies inside that thread. It does not create another translation thread. This applies to automatic and flag-reaction translations. Forum and media posts follow the same rule because Discord treats each post as a thread.
When BabelBot posts a translation embed inside a Discord thread, the embed can include Bad response. Select it to open a private Discord form with a required problem description and an optional suggested correction. The form does not appear on channel fallbacks. Feedback records are scheduled for deletion 90 days after submission. See the Translation feedback section of the Privacy Policy for what BabelBot stores and how it is used.
AI translation vs custom text translation
| Kind | What it uses | Quota |
|---|---|---|
| AI translation | BabelBot's managed AI models | Counts toward your plan's AI translation allowance |
| In-house text translation | BabelBot's in-house translator | No monthly limit on Free, Pro, and Ultra for supported plain text after AI quota is used; also used for supported plain text bridge recovery when AI has a technical error |
On Free, Pro, and Ultra, when AI quota for the period is exhausted, plain text without attachments can still translate via BabelBot's in-house translator if the target language does not have an AI only label. Plain text bridge messages in supported languages can also use that translator when AI has a technical error before returning a usable translation. Flag reactions, context menus, custom words, AI-only languages, and media translation still require AI.
Legacy Ultra and Founder Access tiers treat AI translations as unlimited.
Details and exact limits: Billing and Limits.
Custom words (AI translation only)
On Pro and above you can set custom words: pick a word and tell BabelBot how to translate it into one language or All Languages. Use them for server names, game vocabulary, brand and product names, community slang, or terms that should stay untranslated. Custom words only work with AI. When a message uses one of your custom words, BabelBot always translates it with AI. It does not fall back to the in-house translator for that message. If your AI quota runs out, the normal quota behavior applies.
Custom words work in automatic translation, bridges, flag reactions, the Translate Text context menu, and voice chat translation. Custom words apply to reply text, media captions, and speech transcribed from voice notes or audio files. Notes are just reminders for your team. The bot never follows them. See the Dashboard Guide to set them up.
Bridges
Bridges connect channels so messages in one language channel appear in another:
- Pair bridge: Two channels, two languages, traffic both ways
- Hub bridge: One hub channel plus multiple spoke channels (same bridge UI in the dashboard)
When a bridge matches, BabelBot treats the source language as the language of the channel where the message was sent. It delivers content to the linked channels. Text posted with supported media is translated alongside the media result. If BabelBot cannot send to any linked destination, it replies in the source channel. That reply names the affected channels and asks an admin to check permissions.
Replies carried across linked channels show a compact preview and link to the matching Discord message. Text replies use the wording already posted in that channel. Replies to images, videos, and other files show the attachment filename or a simple attachment label instead of a temporary Discord URL. Replies to ordinary links keep the original URL. Older quotes from the reply chain are left out.
If a member edits the source message, BabelBot updates the copies it posted in linked channels. Messages that contain text run through translation again and follow the same quota rules as a new bridge message. Adding, replacing, or removing attachments or stickers also updates the existing copies without posting duplicates. Edits to messages without text do not use AI quota.
If a member deletes the source message, BabelBot removes the copies it posted in linked channels. Deleting the source while BabelBot is translating also stops copies from appearing after the source is gone.
Reactions also stay in sync for 30 days. React to any linked copy and BabelBot applies the same emoji to the copies in the other channels. Custom and animated emoji keep their image even when they belong to another server. Discord shows BabelBot as the reacting account on those copies. When members remove the last matching reaction, BabelBot removes its copied reactions.
BabelBot tracks bridge copies for 30 days after the source message was posted. Edits and source deletions after that period do not change the linked copies. If someone deletes only a linked copy, BabelBot leaves the source and other copies in place and does not recreate the deleted copy. Removing the bridge also stops later edits from crossing to those channels.
Messages that need no translation, such as numbers, emoji, timestamps, or punctuation, are mirrored unchanged. This does not use translation quota.
Images and supported videos are mirrored with their original Discord attachment URLs, so Discord shows its normal preview in the destination channel. BabelBot re-uploads spoilered images and supported videos with the spoiler setting intact, keeping them hidden until a member opens them. Other files use labeled cards that link to the original attachment. This works for pair and hub bridges even when Media translation is off. Mirroring does not use AI quota or add an AI description. When Media translation is on, supported attachments keep their normal translation behavior.
Custom server stickers cross linked channels too. PNG, APNG, and GIF stickers keep their Discord preview. Lottie stickers and formats Discord cannot preview stay available through a link to the original sticker. Sticker-only messages and edits do not use AI quota.
You can also forward a Discord message into a bridged channel. BabelBot labels it as a forwarded message, translates its text and rich cards, and copies its attachments and stickers. Discord does not send the original author with forwarded messages, so the bridge shows the member who forwarded it as the sender. Buttons and menus from the forwarded message are not copied.
Don't translate from does not apply to bridge routes. Bridges already define their source and target language behavior.
Channel rules with Translation status off stop normal automatic translations, but configured bridges in those channels keep relaying. Remove or disable the bridge when you want bridge traffic to stop.
Followed announcements
Some servers Follow announcement channels from other servers. Discord marks those crossposts in ways BabelBot recognizes.
When a message qualifies as a followed announcement, BabelBot may translate it even though the author is a bot or webhook. BabelBot only does this for Discord's normal Follow crossposts, so random bot traffic is not translated.
There is no separate dashboard toggle. Output uses the same delivery mode as the rest of the server.
Flag reaction translations
When Allow flag reactions is on (Settings), reacting with a supported country-flag emoji translates that message to the associated language.
Server managers can choose Public delivery in the channel or Private DM delivery to the member who reacted. A blocked DM does not fall back to a public channel message.
- Uses AI translation only
- Counts toward AI quota
- Includes supported PDFs, images, video attachments, and audio files when media translation is available for the server
- Respects disabled channels and ignored users
- Can stay on in a channel rule even when automatic translation is off
- Supports PDF-only, image-only, video-only, audio-only, and media+caption posts when media translation is available for the server. Text posted with the media stays with the translated media result.
- Honors reply vs thread preference for public delivery
- Ignores Don't translate from because the reaction is an explicit translation request
Context menus and DMs
Translate Text and Detect Language (right-click a message) use AI. They work in server channels and, with user install, in DMs and private channels. They do not replace server-wide automatic translation settings.
Voice chat translation
For live voice calls, BabelBot can join a voice channel, listen to speech, and post translated text in that channel's text chat. This is separate from audio attachments (voice notes and audio clips posted in text channels).
- One active voice translation per server
- Members start it with
/voice startafter an admin enables it on Ultra or Founder Access - Does not count toward your normal message translation quota
Full guide with admin and member steps: Voice chat translation.
Summary
- Skips are usually settings or message type, not outages. Bots, non-text content, disabled channels, and quota limits are the common causes.
- Thread mode and fewer target languages reduce noise.
- Bridges define their own channel route. A channel rule can stop normal automatic translations without stopping a configured bridge.
- Only posted message translations consume AI quota (voice chat translation is separate).
- Voice chat translation is live call transcription plus translation in voice channel text chat. Voice notes and audio files are attachment-based in text channels.
Next: Dashboard Guide for how to change settings, or Troubleshooting if behavior still does not match this page.