{"id":145,"date":"2026-08-28T19:46:44","date_gmt":"2026-08-28T19:46:44","guid":{"rendered":"https:\/\/interaction-bot.com\/blog\/discord-translation-bot-usage-calculator\/"},"modified":"2026-08-28T19:46:49","modified_gmt":"2026-08-28T19:46:49","slug":"discord-translation-bot-usage-calculator","status":"publish","type":"page","link":"https:\/\/interaction-bot.com\/blog\/discord-translation-bot-usage-calculator\/","title":{"rendered":"Discord Translation Bot Usage &amp; Cost Calculator"},"content":{"rendered":"<p><!DOCTYPE html><br \/>\n<html lang=\"en\"><br \/>\n<head><br \/>\n<meta charset=\"UTF-8\"><br \/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><br \/>\n<title>Discord Translation Bot Usage &amp; Cost Calculator<\/title><\/p>\n<style>\n  :root{\n    --bg:#1e1f22; --panel:#2b2d31; --panel2:#232428; --line:#3f4147;\n    --text:#f2f3f5; --muted:#b5bac1; --accent:#5865f2; --accent2:#7289da;\n    --ok:#3ba55c; --warn:#faa61a; --bad:#ed4245; --chipbg:#313338;\n  }\n  *{box-sizing:border-box}\n  html,body{margin:0;padding:0;background:var(--bg);color:var(--text);\n    font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,sans-serif;\n    line-height:1.55;-webkit-font-smoothing:antialiased}\n  .wrap{max-width:800px;margin:0 auto;padding:28px 18px 64px}\n  header.hero{padding:8px 0 22px}\n  .kicker{display:inline-block;font-size:12px;font-weight:700;letter-spacing:.12em;\n    text-transform:uppercase;color:var(--accent2);margin-bottom:10px}\n  h1{font-size:clamp(24px,4.5vw,34px);line-height:1.2;margin:0 0 10px}\n  .sub{color:var(--muted);font-size:16px;margin:0;max-width:62ch}\n  .card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:22px}\n  .grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}\n  .field{display:flex;flex-direction:column;gap:6px}\n  .field.full{grid-column:1\/-1}\n  label{font-size:14px;font-weight:600}\n  .helper{font-size:12.5px;color:var(--muted)}\n  input[type=number]{background:var(--panel2);border:1px solid var(--line);color:var(--text);\n    border-radius:8px;padding:10px 12px;font-size:16px;width:100%;outline:none}\n  input[type=number]:focus, input[type=range]:focus-visible{border-color:var(--accent);box-shadow:0 0 0 2px rgba(88,101,242,.35)}\n  input[type=range]{width:100%;accent-color:var(--accent);cursor:pointer}\n  .rangeval{font-variant-numeric:tabular-nums;font-weight:700;color:var(--accent2)}\n  .results{margin-top:22px;background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:18px}\n  .summary{font-size:clamp(18px,3vw,23px);font-weight:800;margin:6px 0 4px}\n  .breakdown{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0 4px}\n  .chip{background:var(--chipbg);border:1px solid var(--line);border-radius:999px;\n    padding:6px 12px;font-size:13px;color:var(--muted)}\n  .chip b{color:var(--text)}\n  .twrap{overflow-x:auto;margin-top:16px}\n  table{width:100%;border-collapse:collapse;font-size:14px;min-width:560px}\n  th,td{padding:10px 10px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}\n  th{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.06em;font-weight:700}\n  td.bot{font-weight:700;white-space:nowrap}\n  .pill{display:inline-block;border-radius:999px;padding:3px 10px;font-size:12.5px;font-weight:700;white-space:nowrap}\n  .pill.ok{background:rgba(59,165,92,.16);color:#6fdc8c;border:1px solid rgba(59,165,92,.4)}\n  .pill.warn{background:rgba(250,166,26,.14);color:#ffcb7a;border:1px solid rgba(250,166,26,.4)}\n  .pill.bad{background:rgba(237,66,69,.14);color:#ff8a8c;border:1px solid rgba(237,66,69,.4)}\n  .src{color:var(--muted);font-size:11.5px;display:block;margin-top:4px}\n  .src a{color:var(--accent2);text-decoration:none}\n  .src a:hover{text-decoration:underline}\n  .cfg{font-size:12.5px;color:var(--muted);margin-top:5px}\n  .verdict{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin-top:18px}\n  .verdict h3{margin:0 0 10px;font-size:15px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}\n  .verdict ul{margin:0;padding-left:18px}\n  .verdict li{margin:6px 0}\n  .copyrow{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap}\n  button{background:var(--accent);color:#fff;border:none;border-radius:8px;padding:11px 18px;\n    font-size:15px;font-weight:700;cursor:pointer}\n  button:hover{background:#4752c4}\n  button:focus-visible{outline:2px solid #fff;outline-offset:2px}\n  #copyfb{color:var(--ok);font-size:13px;align-self:center}\n  .num{font-variant-numeric:tabular-nums}\n  .explain h2{font-size:22px;margin:44px 0 10px;line-height:1.25}\n  .explain h2 .n{color:var(--accent2)}\n  .explain p{color:#d3d6dc;max-width:68ch}\n  .explain p a{color:var(--accent2);text-decoration:none;border-bottom:1px solid rgba(114,137,218,.4)}\n  .explain p a:hover{border-bottom-color:var(--accent2)}\n  .explain ul{color:#d3d6dc;max-width:68ch;padding-left:20px}\n  .explain li{margin:8px 0}\n  figure{margin:26px 0}\n  figure img{width:100%;border-radius:12px;border:1px solid var(--line);display:block}\n  figcaption{color:var(--muted);font-size:12.5px;margin-top:8px}\n  figure iframe{width:100%;aspect-ratio:16\/9;border-radius:12px;border:1px solid var(--line)}\n  .sources{font-size:13px;color:var(--muted)}\n  .sources li{margin:5px 0}\n  .next{margin-top:40px;padding:18px;background:linear-gradient(135deg,rgba(88,101,242,.14),rgba(88,101,242,.04));\n    border:1px solid rgba(88,101,242,.35);border-radius:12px}\n  .next a{color:var(--accent2);font-weight:700;text-decoration:none}\n  .next a:hover{text-decoration:underline}\n  footer{margin-top:36px;color:#6d7078;font-size:12.5px}\n  @media (max-width:600px){\n    .grid{grid-template-columns:1fr}\n    .wrap{padding:20px 14px 48px}\n    .card{padding:16px}\n  }\n<\/style>\n<p><\/head><br \/>\n<body><\/p>\n<div class=\"wrap\">\n<header class=\"hero\">\n  <span class=\"kicker\">Discord Translation Bot<\/span><\/p>\n<h1>Discord Translation Bot Usage &amp; Cost Calculator<\/h1>\n<p class=\"sub\">Estimate how many characters your server will translate each month, then check it against the free tiers and pricing of the leading Discord translation bots as documented on their own sites in August 2026.<\/p>\n<\/header>\n<section class=\"card\" aria-label=\"Calculator inputs\">\n<div class=\"grid\">\n<div class=\"field\">\n      <label for=\"msgs\">Messages per day in your server<\/label><br \/>\n      <input id=\"msgs\" type=\"number\" min=\"0\" step=\"10\" value=\"300\" inputmode=\"numeric\"><br \/>\n      <span class=\"helper\">Total messages across the channels where a bot is active. Check your server&#8217;s stats if you&#8217;re not sure.<\/span>\n    <\/div>\n<div class=\"field\">\n      <label for=\"channels\">Channels with auto-translate enabled<\/label><br \/>\n      <input id=\"channels\" type=\"number\" min=\"0\" step=\"1\" value=\"2\" inputmode=\"numeric\"><br \/>\n      <span class=\"helper\">Used to check each bot&#8217;s free config limits. It does not change the character math.<\/span>\n    <\/div>\n<div class=\"field full\">\n      <label for=\"pct\">Share of messages that need translation: <span class=\"rangeval\" id=\"pctval\">25<\/span>%<\/label><br \/>\n      <input id=\"pct\" type=\"range\" min=\"0\" max=\"100\" step=\"1\" value=\"25\"><br \/>\n      <span class=\"helper\">In an auto-translate channel every message counts. Start from the share written in a language other than your server&#8217;s main one.<\/span>\n    <\/div>\n<div class=\"field full\">\n      <label for=\"len\">Average message length: <span class=\"rangeval\" id=\"lenval\">80<\/span> characters<\/label><br \/>\n      <input id=\"len\" type=\"range\" min=\"10\" max=\"500\" step=\"5\" value=\"80\"><br \/>\n      <span class=\"helper\">A short Discord message is about 40 to 60 characters; a technical answer 150 to 250. Bots bill the full message length including emoji.<\/span>\n    <\/div>\n<\/p><\/div>\n<div class=\"results\" id=\"results\" aria-live=\"polite\">\n<div class=\"summary\" id=\"summary\">Your server translates about <span class=\"num\">0<\/span> characters a month<\/div>\n<div class=\"breakdown\">\n      <span class=\"chip\"><b id=\"needb\">0<\/b> messages a day need translation<\/span><br \/>\n      <span class=\"chip\"><b id=\"cdayb\">0<\/b> characters a day<\/span><br \/>\n      <span class=\"chip\"><b id=\"cmonthb\">0<\/b> characters a month (30-day month)<\/span>\n    <\/div>\n<div class=\"twrap\">\n<div class=\"table-wrap\"><table>\n<thead>\n<tr>\n<th>Bot<\/th>\n<th>Free tier<\/th>\n<th>Does it cover your volume?<\/th>\n<th>If not: cost<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"bot\">Interaction Bot<\/td>\n<td>Unlimited translation characters on the free engine<a class=\"src\" href=\"https:\/\/doc.interaction-bot.com\/faq\">doc.interaction-bot.com\/faq<\/a><\/td>\n<td><span class=\"pill ok\">Free tier covers it<\/span><span class=\"cfg\" id=\"ibcfg\"><\/span><\/td>\n<td>$0 for characters. Paid Google-quality characters and Patreon Premium exist for quality and configs, not volume.<a class=\"src\" href=\"https:\/\/doc.interaction-bot.com\/premium\/premium\">doc.interaction-bot.com\/premium\/premium<\/a><\/td>\n<\/tr>\n<tr>\n<td class=\"bot\">iTranslator<\/td>\n<td>10,000 characters a month, reset by voting (<span class=\"num\">\/checkvote<\/span>)<a class=\"src\" href=\"https:\/\/itranslator.app\/premium\">itranslator.app\/premium<\/a><\/td>\n<td><span class=\"pill ok\" id=\"itpill\">Loading<\/span><span class=\"cfg\" id=\"itcfg\"><\/span><\/td>\n<td id=\"itcost\">Premium, \u20ac8.32 per month, Ex VAT, unlimited quota<\/td>\n<\/tr>\n<tr>\n<td class=\"bot\">TranslateBot<\/td>\n<td>Demo: 15,000 characters, one time only<a class=\"src\" href=\"https:\/\/translatebot.app\/\">translatebot.app<\/a><\/td>\n<td><span class=\"pill ok\" id=\"tbpill\">Loading<\/span><span class=\"cfg\" id=\"tbcfg\"><\/span><\/td>\n<td id=\"tbcost\">Character packs from $9.99<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div><\/div>\n<div class=\"verdict\">\n<h3>Plain-language verdict<\/h3>\n<ul id=\"verdict\"><\/ul>\n<\/p><\/div>\n<div class=\"copyrow\">\n      <button type=\"button\" id=\"copybtn\">Copy result<\/button><br \/>\n      <span id=\"copyfb\" role=\"status\"><\/span>\n    <\/div>\n<\/p><\/div>\n<\/section>\n<section class=\"explain\">\n<h2>How this calculator works<\/h2>\n<p>The arithmetic is deliberately simple, because that is the arithmetic the bots themselves use. Your monthly translated volume is estimated as:<\/p>\n<p><b>messages per day \u00d7 share translated \u00d7 average message length \u00d7 30 days<\/b><\/p>\n<p>Each bot subtracts the characters of every translated message from a running balance. TranslateBot&#8217;s FAQ is explicit about the mechanic: &#8220;the total number of characters of a message will be deducted from the total amount of characters the server has available. Once the available number reaches 0, the bot will stop working and will require a top up.&#8221; iTranslator tracks the same running count against a 10,000-character monthly quota; Interaction Bot is the outlier that does not count characters at all, which is exactly why its free tier cannot run out on volume.<\/p>\n<p>Two numbers in the estimate are worth tuning before you trust it. The <b>share of messages needing translation<\/b> is the one people underestimate, because an auto-translate channel translates <i>everything<\/i>, including greetings, &#8220;lol&#8221;, and the 20-message back-and-forth that carries two real sentences of meaning. The <b>average length<\/b> matters almost as much: a 50-character message is a rounding error, a pasted 400-character paragraph is a day&#8217;s quota.<\/p>\n<p>The channel count is the one input that deliberately does <i>not<\/i> change the character math. It exists to check configuration limits, which are a separate ceiling. Interaction Bot&#8217;s free tier allows 3 target languages per channel and 20 channel configs per server; iTranslator allows 30 auto-translate rules; TranslateBot ships 50 linked-channel slots on every plan. A server with more auto-translate channels than a bot&#8217;s free cap hits that wall long before it hits a character wall.<\/p>\n<h2>The three free models, and where these numbers come from<\/h2>\n<p>Every &#8220;free&#8221; translation bot is a machine-translation bill paid by someone. The three leading bots each solved that problem differently, and your volume decides which shape of free actually fits you.<\/p>\n<p><b>Interaction Bot<\/b> runs <b>unlimited free translation<\/b>. Its own FAQ says it can do this &#8220;by using less efficient translation models,&#8221; and that paying for Google translation characters improves quality. Your characters never run out, so the free tier is bounded only by configuration: 3 target languages per channel, 20 channels per server, 2 role translations per role, 20 role configs, and 1 category. Premium (via Patreon) unlocks 5 languages per channel, unlimited channel configs, and extras such as translating bot messages and a language blacklist.<\/p>\n<p><b>iTranslator<\/b> gives you <b>10,000 characters a month and resets that quota by voting<\/b>. Its premium comparison lists the free limit plainly as &#8220;10,000 or \/checkvote&#8221;, along with 30 auto-translate rules, 3 role rules, 30 languages, and a &#8220;Generated by iTranslator&#8221; credit line until you subscribe. Premium is a flat \u20ac8.32 per month (Ex VAT) for unlimited translations and a better engine; Pro AI at \u20ac24.99 per month adds the OpenAI engine plus TTS and speech-to-text.<\/p>\n<p><b>TranslateBot<\/b> is pure pay-as-you-go. The demo plan gives you <b>15,000 characters, one time only<\/b>, and the bot stops at zero until you buy a pack. Packs do not expire: Silver $9.99 for 225,000 characters, Gold $19.99 for 550,000, Platinum $39.99 for 1,200,000, and at Platinum the effective rate is about $3.33 per 100,000 characters, the best value on the board.<\/p>\n<figure>\n    <img decoding=\"async\" width=\"2560\" height=\"1920\" class=\"wp-image-146\" src=\"https:\/\/interaction-bot.com/blog\/wp-content\/uploads\/sites\/5\/2026\/08\/pexels-photo-31418370-5-scaled.jpeg\"\n         alt=\"Colorful speech bubbles cut from foam on a blue background, a stand-in for the messages a translation bot processes\"\n         loading=\"lazy\" srcset=\"https:\/\/interaction-bot.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/08\/pexels-photo-31418370-5-scaled.jpeg 2560w, https:\/\/interaction-bot.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/08\/pexels-photo-31418370-5-300x225.jpeg 300w, https:\/\/interaction-bot.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/08\/pexels-photo-31418370-5-1024x768.jpeg 1024w, https:\/\/interaction-bot.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/08\/pexels-photo-31418370-5-768x576.jpeg 768w, https:\/\/interaction-bot.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/08\/pexels-photo-31418370-5-1536x1152.jpeg 1536w, https:\/\/interaction-bot.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/08\/pexels-photo-31418370-5-2048x1536.jpeg 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><figcaption>Every message a bot translates is characters billed against your balance, whatever the free tier looks like. Photo: HamzaSamadh, Pexels License, via Pexels.<\/figcaption><\/figure>\n<h2>What the quota model looks like in a real server<\/h2>\n<p>Character math is easier to trust when you have watched a translation bot at work in a busy channel. Gehsture&#8217;s walkthrough of iTranslator shows the bot&#8217;s translation features working live inside an actual Discord server, the kind of steady traffic that consumes a monthly quota.<\/p>\n<figure>\n    <iframe src=\"https:\/\/www.youtube.com\/embed\/C3DTsEG7HJI\" title=\"This Discord Bot AUTOMATICALLY Translates Messages, Best Discord Translator Bot, by Gehsture\" loading=\"lazy\" allowfullscreen><\/iframe><br \/>\n  <\/figure>\n<h2>What most admins get wrong<\/h2>\n<ul>\n<li><b>&#8220;Free&#8221; usually means a quota, a config cap, or a quality trade-off.<\/b> Interaction Bot is unlimited on characters but caps configs and runs a lower-accuracy engine; iTranslator is a 10,000-character quota you reset by voting; TranslateBot is a one-time 15,000-character trial. None of the three is free and unlimited without a trade-off somewhere.<\/li>\n<li><b>Voting is a chore, not a fix.<\/b> iTranslator&#8217;s reset model is a funnel: an active server is in a permanent vote-to-keep-translating rhythm, which is exactly how a free tier converts into a Premium subscriber.<\/li>\n<li><b>Bots bill the whole message.<\/b> Your 40-character &#8220;thanks!&#8221; and your 300-character link dump both count fully, emoji included. Small messages at high volume are still real characters.<\/li>\n<li><b>Auto-translate inflates your share.<\/b> On-demand translation only runs when someone asks. An auto-translate channel translates everything that moves, so the share slider needs to reflect that channel, not the server.<\/li>\n<li><b>A 30-day month is a convention.<\/b> Real months run 28 to 31 days, so a month-level estimate near a quota boundary can be off by a few percent. That is why the verdict also gives you days until exhaustion at your daily rate.<\/li>\n<\/ul>\n<h2>Method and sources<\/h2>\n<p>Free-tier limits and prices were read from each bot&#8217;s own site and documentation on August 28, 2026. Machine translation pricing moves, so re-check before you buy. Sources used in the table and this explainer:<\/p>\n<ul class=\"sources\">\n<li>Interaction Bot FAQ: <a href=\"https:\/\/doc.interaction-bot.com\/faq\">doc.interaction-bot.com\/faq<\/a> (unlimited free translation on a lower-accuracy engine)<\/li>\n<li>Interaction Bot premium comparison: <a href=\"https:\/\/doc.interaction-bot.com\/premium\/premium\">doc.interaction-bot.com\/premium\/premium<\/a> (free config caps vs Premium)<\/li>\n<li>iTranslator premium and plan comparison: <a href=\"https:\/\/itranslator.app\/premium\">itranslator.app\/premium<\/a> (10,000-character free limit, \/checkvote, config caps, \u20ac8.32 per month Premium, \u20ac24.99 Pro AI)<\/li>\n<li>TranslateBot pricing and FAQ: <a href=\"https:\/\/translatebot.app\/\">translatebot.app<\/a> (15,000-character demo, Silver\/Gold\/Platinum packs, character deduction, no expiry)<\/li>\n<\/ul>\n<div class=\"next\">\n<p class=\"sub\" style=\"margin:0 0 6px\">Want the full picture before you pick one?<\/p>\n<p style=\"margin:0\"><a href=\"https:\/\/interaction-bot.com\/blog\/translation-bots-discord-comparing-features-pricing-performance\/\">Translation Bots for Discord: Comparing Features, Pricing, and Performance<\/a>, our feature-by-feature comparison of these three bots, covers accuracy and language coverage beyond the character math.<\/p>\n<\/p><\/div>\n<footer>Calculator and figures last checked August 28, 2026. Prices are list prices from the bots&#8217; own sites and do not include any taxes beyond those stated. Published on interaction-bot.com.<\/footer>\n<\/section>\n<\/div>\n<p><script>\n(function(){\n  var msgs=document.getElementById('msgs');\n  var pct=document.getElementById('pct');\n  var len=document.getElementById('len');\n  var ch=document.getElementById('channels');\n  var pctval=document.getElementById('pctval');\n  var lenval=document.getElementById('lenval');\n  var needb=document.getElementById('needb');\n  var cdayb=document.getElementById('cdayb');\n  var cmonthb=document.getElementById('cmonthb');\n  var summary=document.getElementById('summary');\n  var verdict=document.getElementById('verdict');\n  var itpill=document.getElementById('itpill');\n  var itcost=document.getElementById('itcost');\n  var itcfg=document.getElementById('itcfg');\n  var tbpill=document.getElementById('tbpill');\n  var tbcost=document.getElementById('tbcost');\n  var tbcfg=document.getElementById('tbcfg');\n  var ibcfg=document.getElementById('ibcfg');<\/p>\n<p>  function num(n){return n.toLocaleString('en-US')}\n  function daysUntil(quota, cpd){\n    if(cpd<=0){return 'never'}\n    var d=Math.floor(quota\/cpd);\n    return (d<1)?'under a day':((d===1)?'1 day':d+' days');\n  }\n  function recalc(){\n    var m=Math.max(0,Math.round(+msgs.value||0));\n    var p=Math.max(0,Math.min(100,+pct.value||0));\n    var l=Math.max(1,Math.round(+len.value||0));\n    var c=Math.max(0,Math.round(+ch.value||0));\n    pctval.textContent=p;\n    lenval.textContent=l;\n\n    var need=Math.round(m*p\/100);\n    var cpd=need*l;\n    var cpm=cpd*30;\n\n    needb.textContent=num(need);\n    cdayb.textContent=num(cpd);\n    cmonthb.textContent=num(cpm);\n    summary.innerHTML='Your server translates about '+num(cpm)+' characters a month';\n\n    \/* config caps *\/\n    ibcfg.textContent = 'Auto-translate channels: '+c+' configured, '+(c<=20?'within the free 20-channel cap':'above the free 20-channel cap (Premium raises it to unlimited)');\n    var itcfgmsg='Auto-translate channels: '+c+' configured, '+(c<=30?'within the free 30-rule cap':'above the free 30 auto-translate rules (a Premium benefit)');\n    var tbcfgmsg='Auto-translate channels: '+c+' configured, '+(c<=50?'within the 50 linked-channel slots':'above the 50 linked-channel slots on every plan');\n    itcfg.textContent=itcfgmsg;\n    tbcfg.textContent=tbcfgmsg;\n\n    \/* iTranslator *\/\n    if(cpm<=10000){\n      itpill.className='pill ok'; itpill.textContent='Fits the free 10,000-char quota';\n      itcost.innerHTML='Nothing: \u20ac0. Vote (\/checkvote) to reset the quota if it runs low.';\n    }else{\n      itpill.className='pill bad'; itpill.textContent='Exceeds the free quota';\n      itcfg.textContent='10,000 chars lasts '+daysUntil(10000,cpd)+' at your daily rate. '+itcfgmsg;\n      itcost.innerHTML='Premium at \u20ac8.32 per month (Ex VAT) for an unlimited quota, or keep voting to reset the free tier.';\n    }\n\n    \/* TranslateBot *\/\n    if(cpm<=15000){\n      tbpill.className='pill ok'; tbpill.textContent='Fits the one-time 15,000-char demo';\n      tbcost.innerHTML='Nothing: \u20ac0. The demo is one time only, spent characters are gone.';\n    }else{\n      tbpill.className='pill bad'; tbpill.textContent='Exceeds the demo';\n      tbcfg.textContent='15,000 chars lasts '+daysUntil(15000,cpd)+' at your daily rate. '+tbcfgmsg;\n      var pack;\n      if(cpm<=225000){pack='Silver $9.99 for 225,000 characters'}\n      else if(cpm<=550000){pack='Gold $19.99 for 550,000 characters'}\n      else if(cpm<=1200000){pack='Platinum $39.99 for 1,200,000 characters'}\n      else{\n        var n=Math.ceil(cpm\/1200000);\n        pack=n+' Platinum pack(s), about $'+(n*39.99).toFixed(2)+', for roughly '+num(n*1200000)+' characters';\n      }\n      tbcost.innerHTML='Cheapest pack covering one month: '+pack+' (packs never expire).';\n    }\n\n    \/* verdict *\/\n    var items=[];\n    items.push('Your server translates about '+num(cpm)+' characters a month, roughly '+num(cpd)+' a day.');\n    items.push('Interaction Bot: the free tier covers it, '+(c>20?'but your '+c+' auto-translate channels exceed the free 20-channel cap.':'translation characters are unlimited; check the 3-languages-per-channel and 20-channel limits.'));\n    if(cpm<=10000){\n      items.push('iTranslator: fits the free 10,000-character quota. Vote with \/checkvote to reset it when it runs low.');\n    }else{\n      items.push('iTranslator: your volume burns the 10,000-character free quota in '+daysUntil(10000,cpd)+', then it needs votes or Premium at \u20ac8.32 per month.');\n    }\n    if(cpm<=15000){\n      items.push('TranslateBot: fits the one-time 15,000-character demo.');\n    }else{\n      items.push('TranslateBot: the 15,000-character demo lasts '+daysUntil(15000,cpd)+'; the cheapest pack for a month at your volume is '+(cpm<=225000?'Silver at $9.99':(cpm<=550000?'Gold at $19.99':(cpm<=1200000?'Platinum at $39.99':'multiple Platinum packs')))+'.');\n    }\n    verdict.innerHTML='';\n    items.forEach(function(t){var li=document.createElement('li');li.textContent=t;verdict.appendChild(li);});\n\n    \/* copy line *\/\n    window._copyLine =\n      'Discord translation estimate: my server translates about '+num(cpm)+' characters\/month (about '+num(cpd)+'\/day). '+\n      'Interaction Bot free tier covers it (unlimited characters). '+\n      'iTranslator: '+(cpm<=10000?'fits the 10k char free quota (vote \/checkvote to reset). ':'10k free quota lasts '+daysUntil(10000,cpd)+', vote or Premium at \u20ac8.32\/mo. ')+\n      'TranslateBot: '+(cpm<=15000?'fits the 15k one-time demo.':'15k demo lasts '+daysUntil(15000,cpd)+', cheapest month pack '+(cpm<=225000?'$9.99 Silver.':(cpm<=550000?'$19.99 Gold.':(cpm<=1200000?'$39.99 Platinum.':'Platinum packs.'))));\n  }\n\n  function copyResult(){\n    var fb=document.getElementById('copyfb');\n    var text=window._copyLine||'';\n    function done(){fb.textContent='Copied to clipboard';setTimeout(function(){fb.textContent='';},2200)}\n    function fallback(){\n      var ta=document.createElement('textarea');\n      ta.value=text;ta.style.position='fixed';ta.style.opacity='0';\n      document.body.appendChild(ta);ta.select();\n      try{document.execCommand('copy');done()}catch(e){fb.textContent='Press Ctrl+C to copy'}\n      document.body.removeChild(ta);\n    }\n    if(navigator.clipboard&#038;&#038;navigator.clipboard.writeText){navigator.clipboard.writeText(text).then(done,fallback)}\n    else{fallback()}\n  }\n\n  [msgs,pct,len,ch].forEach(function(el){el.addEventListener('input',recalc)});\n  document.getElementById('copybtn').addEventListener('click',copyResult);\n  recalc();\n})();\n<\/script><br \/>\n<\/body><br \/>\n<\/html><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Estimate how many characters your Discord server translates each month, then see whether the free tiers of Interaction Bot, iTranslator, and TranslateBot cover the volume, and what it costs when they don&#8217;t.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-tool.php","meta":{"footnotes":""},"class_list":["post-145","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/pages\/145","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/comments?post=145"}],"version-history":[{"count":1,"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/pages\/145\/revisions"}],"predecessor-version":[{"id":147,"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/pages\/145\/revisions\/147"}],"wp:attachment":[{"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/media?parent=145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}