SiteTran
Bubble.io No plugin. One header script.

The Bubble translator for multilingual Bubble.io apps

Translate your Bubble app into 187+ languages in minutes. SiteTran translates every page, repeating group and popup in the visitor's browser, while your workflows and database stay exactly as they are.

  • Free plan, no card needed
  • No code beyond one paste
  • AI + human translation
Find your next workspace
Desks near youRepeating Group
Harbor Loft
$24 per day
Book now
Studio Nine
$18 per day
Book now
The Greenhouse
$31 per day
Book now
Booking confirmed!
187+languages, including right-to-left
~3 minto install in the Bubble editor
0workflows or data fields to change
$0to start on the Free plan

Driving growth for companies with millions of users

Alignment Neil Patel Exomonitor Cyfe Instructified
How it works

From one language to many in three steps

SiteTran runs as a small script in your app's header. Bubble keeps rendering your app as usual, and SiteTran swaps in the visitor's language.

1

Create your SiteTran site

Sign up free and create a site for your Bubble app. SiteTran gives you your Widget Code, which adds the language dropdown to your app.

2

Paste it into Bubble

Paste the Widget Code into your app's header so it loads on every page, then deploy to Live.

Settings›SEO / metatags›Script/meta tags in header
3

Translate and publish

Open your live app and pick a language. SiteTran discovers your text, then you translate it with AI, your own translators, or both, and publish.

Your Widget Code
<script>var sitetran = { site_id: your_site_id };</script>
<script src="//c.sitetran.com/widget/v3.js"></script>

Your real code, with your site ID, is on the Dropdown Style page in SiteTran.

DeskFinder | Book a desk anywhere
<script>var sitetran = { site_id: 12345 };</script>
<script src="//c.sitetran.com/widget/v3.js"></script>
Loads on every page of your appDeploy to Live
Built for Bubble

Answers to the questions every Bubble builder asks

Bubble apps are dynamic. Content loads from your database, groups appear and disappear, and workflows run in the background. Here's how SiteTran handles each part.

Translated

Repeating groups

Rows filled from your database are translated as they render, including when visitors filter, paginate or load more. SiteTran keeps watching the page for new content.

Translated

Popups and hidden groups

Popups, floating groups, alerts, dropdowns and groups that are shown by conditions or workflows are translated when they appear. You don't need to set anything up.

Unchanged

Workflows and plugins

SiteTran only changes what the visitor sees. Your workflows, API Connector calls, backend workflows and plugins run exactly as they did before.

Unchanged

Your Bubble database

Nothing is written to your data. Things and fields stay in their original language, and text visitors type into inputs is saved as typed. You don't need a field per language.

You decide

User data and dynamic text

Keep names, addresses and brand terms untranslated with notranslate. Use variables for names, dates and prices inside a sentence, so one translation covers every value.

Meta tags translated

SEO and URLs

Page titles, meta descriptions and social tags are translated. Languages share your app's URL by default, and indexable language URLs are available through our Static Translation API. See the details.

Compare your options

Every way to make a Bubble app multilingual

There are three common ways to add multi-language support to a Bubble.io app. The right one depends on how much text you have and where it comes from.

Static text

Text you type into the Bubble editor: button labels, headings, navigation, placeholders and error messages. It only changes when you edit your app.

Dynamic text

Text that comes from your Bubble database or from users: listings, product descriptions, profiles, posts and anything shown in a repeating group. It changes every day without you.

Bubble App TextBuilt in, under Settings › Languages API Connector + translation APIDo it yourself with workflows SiteTranOne script in your header
How it works You create an ID for each piece of text and type every translation into a table. Workflows send text to a machine translation API and display or store the result. SiteTran translates your app as it renders in the visitor's browser.
Changes to your app Rebuild each text element to use App Text. Add API calls, custom states and conditions to elements and workflows. None. Paste the Widget Code and deploy.
Database content Not covered. Needs extra fields or logic for each language. Possible, usually by storing extra fields such as title_es. Translated as it's displayed. Your database stays unchanged.
Machine translation No. You enter every translation. Yes, paid per API call. Yes, with DeepL, Google Translate and OpenAI.
Review and approval Edit translations in the Bubble editor. Build your own. Translators, reviewers, approval and publishing built in.
Titles and meta tags Set per language with conditions. Build your own. Translated automatically.
Language switcher Build a dropdown and workflow. Build a dropdown and workflow. Included, with flags and custom CSS.

Translation plugins in the Bubble marketplace vary a lot. Most either call a translation API, like the second column, or add a script, like SiteTran.

Translation quality

AI speed, with the control of a professional workflow

Start with machine translation and refine it with your own team. You decide what gets approved and when it goes live in your app.

  • Machine translation from DeepL, Google and OpenAI

    Get suggestions for any phrase, or translate new phrases automatically. You choose whether they're approved automatically or reviewed first.

  • Translators and reviewers per language

    Invite your own translators for each language and choose who can approve. Turn on AI Translation Review for a second opinion on each translation.

  • Glossary, rules and translation memory

    Lock product names and brand terms in the Glossary, set Translation Rules that AI translation follows, and reuse past work with Similar Phrases.

  • A language dropdown that fits your design

    Choose from three dropdown types, with or without flags, and add your own CSS. Visitors are switched to their browser language automatically.

Translate your Bubble app into 187+ languages

SpanishFrenchGermanPortuguese (Brazil)ItalianDutchJapaneseChinese (Simplified)KoreanArabicHebrewHindiTurkishPolishIndonesianVietnamese+ 170 more
SEO for Bubble apps

Multilingual SEO, explained honestly

Here's what's translated as soon as you install SiteTran, and what it takes to give each language its own indexable URL.

Included as soon as you install

Everything search and social cards read

SiteTran translates more than visible text. When a visitor switches language, the page's metadata switches with it.

  • Page title and meta description
  • Open Graph and Twitter tags for link previews
  • Image alt text, tooltips, placeholders and ARIA labels
  • The page's lang attribute, set to the selected language
Advanced setup

Language URLs for Google

By default, every language uses your app's existing URL and the visitor's choice is remembered. For a separate, indexable page per language, SiteTran's Static Translation API returns translated HTML for URLs like these:

yourapp.comEnglish
yourapp.com/es/Subdirectory
es.yourapp.comSubdomain

Bubble's hosting can't serve those URLs on its own, so this needs a proxy or edge worker in front of your app. We'll help you plan it.

Talk to us about Bubble SEO

Prefer a screenshot-by-screenshot walkthrough?

Follow the integration guide, Translate Bubble with SiteTran, for every click from copying your Widget Code to testing your first language.

Read the setup guide
Troubleshooting

Bubble translation not working? Check these first

Most setup problems come down to where the code was pasted or a translation that isn't live yet.

1The language dropdown doesn't appear

  1. Paste the Widget Code in Settings › SEO / metatags › Script/meta tags in header. An HTML element only loads it on the page where you placed it.
  2. Deploy to Live, then load your live app.
  3. In SiteTran, make sure the language is both Active and Live.
  4. If Hide All Widgets On Site (dev mode) is on, add ?sitetran=on to your URL to see the dropdown.
Language not appearing in the dropdown →

2Some text is still in the original language

  1. SiteTran discovers text when it's shown, so open the pages, popups and states you need translated.
  2. A translation appears only after it's approved and published.
  3. To translate new text automatically, turn on Machine Translation Auto Translate.
How dynamic content is translated →

3My changes aren't showing yet

  1. After you approve and publish, translation data can take up to 30 seconds to update.
  2. A visitor's browser can keep translation data cached for up to 10 minutes.
  3. Try a hard refresh or a private window.
New translations aren't appearing →

4Names or user data are being translated

  1. Give those elements an ID attribute in Bubble and list them in sitetran.ignore_selectors in your Widget Code. In HTML elements, you can add translate="no" directly.
  2. Use variables for names, dates and prices inside a sentence.
  3. For apps with sensitive data, turn off Public Phrase Discovery.
Exclude phrases from translation →
Pricing

Simple pricing that grows with your app

Every plan includes unlimited languages and teammates. Start free and upgrade when your traffic grows.

Free

$0

For small apps and testing

  • 7K words in site
  • 3K translated pageviews / month
  • 7K machine translations

Starter

$3/mo

For apps with moderate translation needs

  • 30K words in site
  • 15K translated pageviews / month
  • 30K machine translations
Growing apps

Pro

$35/mo

For larger apps or several smaller ones

  • 90K words in site
  • 45K translated pageviews / month
  • 90K machine translations

Business

$75/mo

For large-scale international apps

  • 250K words in site
  • 125K translated pageviews / month
  • 250K machine translations
Annual billing: 2 months free · Enterprise plans for 1M+ words See all features
FAQ

Bubble translation questions

Can't find your answer? Our team is happy to help with your Bubble setup.

Email support
How do I add SiteTran to my Bubble app?
Create a free SiteTran site and copy your Widget Code. In the Bubble editor, open Settings, then SEO / metatags, and paste the code into Script/meta tags in header. Deploy to Live, open your app, and pick a language from the dropdown. SiteTran starts discovering your phrases so you can translate them.
Do I need to install a Bubble plugin?
No. SiteTran works as a short script in your app's header, so there is no plugin to install, update or wire into workflows. Adding it in the header loads it on every page of your app.
Does SiteTran translate repeating groups and popups?
Yes. SiteTran continuously watches the page for content that appears after it loads, including repeating groups filled from your database, popups, hidden groups that become visible, and dropdowns, and translates that content when it appears.
Will SiteTran change my workflows or my Bubble database?
No. SiteTran only changes the text displayed in the visitor's browser. Your workflows, API calls and plugins run as before, the data stored in your Bubble database stays in its original language, and text that visitors type into inputs is left as typed.
Can I keep some text untranslated?
Yes. Add the notranslate class or the translate="no" attribute to any element, or list selectors in sitetran.ignore_selectors. Use this for user names, addresses and other personal data. For text that changes inside a sentence, such as names, dates and prices, use variables so one translation covers every value.
Do translated Bubble pages get their own URLs for SEO?
By default, every language is served from your app's existing URL and the visitor's choice is remembered. If you need indexable language URLs such as /es/ or es.yourapp.com, SiteTran's Static Translation API can return translated HTML for them. Bubble hosting cannot serve that on its own, so it needs a proxy or edge worker in front of your app. Book a call and we will help you plan it.
Are page titles and meta descriptions translated?
Yes. Along with visible text, SiteTran translates the page title, meta description, Open Graph and Twitter tags, image alt text, placeholders, tooltips and ARIA labels. It also updates the page's lang attribute to the selected language.
Can I use machine translation and still review it?
Yes. You can get machine translation suggestions from DeepL, Google Translate or OpenAI, automatically translate new phrases, and decide whether those translations are approved automatically or reviewed first. You can also invite human translators and reviewers for each language and use AI Translation Review.
Will visitors see their own language automatically?
Yes, by default. SiteTran detects the visitor's browser language and switches to it when that language is available on your app. The choice is saved in a cookie for future visits, and visitors can change language at any time from the language dropdown.
Is there a free plan?
Yes. The Free plan includes 7,000 words in your site, 3,000 translated pageviews per month and 7,000 machine translations, with unlimited languages and teammates. Paid plans raise those limits and start at $3 per month. Compare plans.
Should I use Bubble's built-in App Text instead?
App Text works for a small set of labels you control, but every text element has to be rebuilt to use an App Text ID, you enter every translation yourself, and content from your database is not covered. SiteTran translates your app as it renders, including database content, without changing your elements.
Can I translate content stored in my Bubble database?
Yes, as it is displayed. When text from your database appears on the page, SiteTran discovers it as a phrase and shows its translation. Nothing is written back to your database, so you do not need extra fields such as title_es. Exclude personal content such as user names, or use variables for values that change inside a sentence.
Does SiteTran work with Bubble plugins?
Yes. Text that plugins add to your page is translated like any other content. Content inside an embed from another website, such as a third-party iframe, cannot be translated by any script running on your page.
Can I test translations before visitors see them?
Yes. A language stays hidden from visitors until you set it to Live. You can also turn on Hide All Widgets On Site (dev mode) under Settings, then Publishing, and add ?sitetran=on to your app's URL to preview the language dropdown yourself.
What happens if I go over my plan's limits?
You will be prompted to upgrade or buy additional credits. Your existing translations remain intact, and new translations are paused until you upgrade.

Make your Bubble app multilingual today

Paste one script, pick your languages, and reach users in the language they think in. Start on the Free plan and upgrade only when you grow.

Start translating free Book a call Free plan · Unlimited languages and teammates