App Store Listing Translator
Take the listing you already wrote into up to 12 languages in one run, with every store limit checked again in every language, and Apple's keywords field counted in bytes the way App Store Connect actually counts it.
The 100 that is not 100
Apple's keywords field is 100 bytes, and nearly every tool in this market counts characters. Here is one real keywords string that fits in English, translated faithfully into three languages. Watch the character column stay comfortable while the byte column goes over the edge.
| Language | Characters | Bytes | App Store Connect |
|---|---|---|---|
| English (what you wrote)welding,calculator,amps,electrode,fillet,bevel,fabrication,metal,shop,stick,mig,tig,weld | 88 / 100 | 88 / 100 | Accepted |
| German, translated faithfullyschweißen,rechner,ampere,elektrode,kehlnaht,fase,fertigung,metall,werkstatt,elektrodenhandschweißen,mig,wig | 107 / 100 | 109 / 100 | Rejected |
| Russian, translated faithfullyсварка,калькулятор,ампер,электрод,шов,фаска,металл,цех,электродная,миг,тиг | 74 / 100 | 138 / 100 | Rejected |
| Japanese, translated faithfully溶接,計算,アンペア,電極,すみ肉,開先,製作,金属,工場,被覆アーク,ミグ,ティグ | 42 / 100 | 104 / 100 | Rejected |
The Japanese row is the one worth staring at. Forty-two characters out of a hundred. A character counter shows you a green tick and well over half the field still free. App Store Connect measures 104 bytes and refuses it, because each of those characters costs three bytes in UTF-8 rather than one. Russian is the same problem at two bytes a letter, and German is a plain expansion problem: the words are simply longer.
What you actually get
Every field is measured after it is written, and anything over the limit goes back for a repair pass that shortens it in that language, then gets measured again. These are the same three rows after that:
schweißen,rechner,ampere,elektrode,kehlnaht,fase,fertigung,metall,werkstatt,mig,wig
сварка,калькулятор,ампер,электрод,шов,фаска,металл
溶接,計算,アンペア,電極,すみ肉,開先,製作,金属,工場
Every count on this page was measured with UTF-8 encoding against these exact strings, by the same function the tool counts with.
It is not only the keywords field
Bytes are the sharpest version of the problem, but plain expansion breaks the character-limited fields just as reliably. German runs 15 to 35% longer than English, and your English copy was written to land on the limit.
App Store subtitle, 30 characters
- Weld settings, amps and bevels 30 / 30
- Schweißeinstellungen, Ampere und Fasen 38 / 30
- Schweißwerte, Ampere und Fasen 30 / 30
The faithful translation is eight characters over. The third line is the repair pass: a shorter German word for the same thing, chosen in German.
Google Play short description, 80 characters
- Get your weld settings right the first time, on any machine. 60 / 80
- Finden Sie Ihre Schweißeinstellungen beim ersten Versuch, an jeder Maschine. 76 / 80
This one survives, with four characters to spare. Which is the point: you cannot tell which fields will break without measuring every one of them, in every language.
How it works
- Write or generate your listing first, in English, in the Store Listing Writer. The localizer works from a finished listing.
- Pick up to 12 languages from the 28 on offer.
- One run produces all of them, with each store's limits applied again per language and the keywords field measured in bytes.
- Anything still over after the repair pass is flagged in the results rather than trimmed, so you decide what to cut.
- Copy each language out with its console's own identifier beside it: Google's exact locale code, Apple's own display name.
The two consoles disagree about the same market
A detail that costs people an afternoon. Google Play Console and App Store Connect do not use the same identifiers, and in a couple of places they do not even agree on which markets exist.
Hebrew in Play Console is the legacy code iw-IL, not he, which is what everything else in the world uses. There is no Mexican Spanish entry in Play at all, only es-419 for Latin America as a whole, while Apple lists exactly that market as Spanish (Mexico). Each language in the results carries whichever identifier the console you are pasting into expects, with the disagreements noted where they exist.
Whether it is worth doing
Honestly: sometimes not, and it is a cheap feature to oversell. Both stores publish perfectly well with a single language, and a localized listing commits you to answering support mail in that language.
The argument for it is that both stores rank and surface listings per locale, and most of the indie apps you are competing with in a non-English market have not bothered. A German listing competes against German listings. It is one of the few things a solo developer can do that a larger team usually has not.
If you only do one or two, do the ones you could handle an email in.
$10 once per app covers 3 localization runs, the listing writer, the promo video and the hosted support and account deletion pages. Not per language, not per month.
See pricingFrequently asked questions
Why not just use Google Translate?
Because translating the text is the easy half. Every store limit applies again in every language, and your English copy was written to fit those limits exactly. A 30 character English subtitle is routinely 38 in German. Translate it faithfully and App Store Connect refuses it. What you need is copy rewritten to fit the limit in the target language, which is a different job from translation.
What is the thing about bytes?
Apple's keywords field is 100 bytes, not 100 characters, and almost every tool counts characters. In UTF-8 a plain Latin letter costs one byte, a Cyrillic letter costs two, and a Japanese or Chinese character costs three. So 100 bytes is 100 English characters, about 50 Russian ones, and roughly 33 Japanese ones. A character counter will show you 42 of 100 and a green tick on a keywords string that App Store Connect rejects.
Which languages can it do?
28 at the moment, covering the markets worth a first pass: Spanish for both Spain and Latin America, Brazilian Portuguese, German, French, Italian, Japanese, Korean, both Chinese scripts, Russian, Turkish, Dutch, Polish, Indonesian, Vietnamese, Thai, Hindi, Arabic, the Nordics, Czech, Ukrainian, Greek, Hebrew and Malay. You can run up to 12 in one go.
Does it give me the right locale codes for each console?
Yes, and they are not the same for the two stores. Google publishes exact locale codes and they are reproduced here verbatim, traps included: Hebrew is iw-IL in Play Console, not he, and there is no Mexican Spanish entry at all, only es-419. Apple publishes display names rather than codes that could be verified, so Apple output is labelled with Apple's own display name, which is what the App Store Connect dropdown shows you anyway. Inventing plausible-looking Apple codes would be worse than giving none.
What happens if a field is still too long after translating?
It goes through a repair pass that shortens it in the target language, not in English, and is measured again. Anything still over after that is shown to you with the overage marked rather than silently trimmed, because a field cut off mid-word gets pasted into the console anyway. On a Latin-script language the repair pass is an edge case. On Japanese keywords it is the normal path.
Is it charged per language?
No. One run covers every language you pick, up to 12, and you get 3 runs for the one $10 app payment. Charging per market would be charging you for each country you hope to reach, which seemed like the wrong way round.
Do I have to localize at all?
No. Both stores publish fine with one language. The case for doing it is that the stores rank and surface listings per locale, so a localized listing competes in a market where most of the apps around it are not localized. The case against is that you then own support in that language. Worth starting with one or two markets you can actually answer email in.