Skip to content

Cross Localization for App Store: Optimize Metadata

Cross-localization is a strategy that uses one localization (for example, AR for US) to index an app in other countries and regions where this localization is available but not primary.
This allows you to significantly expand your app’s reach and visibility without having to create unique content for every locale.

For each territory, the App Store defines a “primary” language. However, each territory also has several “additional” supported languages.

Useful Tips for Cross-Localization

Use only relevant keywords to avoid reduced conversion rates. Our goal is to get installs, not just impressions.
Do not add empty localizations.
You can fill any localization with another language; you do not have to use the localization’s native language.

Use EN-US as the Priority Localization

EN-US is currently indexed in all countries. Even if your app is not targeted at the US, this is the best localization for cross-reach.

Do Not Duplicate Keywords

The App Store does not boost indexing by repetition. Each word is counted only once—even if it appears in multiple fields (Title, Subtitle, Keywords) or in different localizations.

Do Not Duplicate Keywords Across Fields in Different Localizations

It is not recommended to use the same word in different metadata fields, such as Title, Subtitle, and Keywords, even across different localizations.
If you use the same word in the Title and in the Subtitle of another localization, it may be indexed with less weight (Subtitle has lower weight).

Separators

The App Store does not index phrases as-is—it combines words from the Title, Subtitle, and Keywords fields.

Do not write long phrases like best photo editor for iPhone.
Instead, use as many unique words as possible, separated by commas: best,photo,editor,iPhone—this way you get more combinations: best photo, photo editor, editor for iPhone, etc.

Compound Words in the Title Are Indexed by Parts

The App Store automatically splits compound words in the title, even without spaces.

Example:
AppStoreConnect is indexed as:
app, store, connect, appstoreconnect

Use camelCase and PascalCase for maximum reach.

Word Order Affects Phrases

Words at the beginning of the Title get the highest priority. Use your most important keywords there.

Keyword Phrases Are Combined Only Within a Single Localization

In general, duplicating keywords is not recommended, but for the most important phrases, it is acceptable.

The App Store does not combine words between locales; all phrases are formed within a single localization. For example:

  • EN-US Title: Apple
  • EN-GB Subtitle: Music

❌ The phrase Apple Music will not be indexed.

Do not add words that are automatically indexed for all apps

There is a list of free words that are automatically indexed for all apps.
For example, app, game, for, etc.

Do not mention AI in your metadata for mainland China

In mainland China, mentioning AI in metadata is prohibited unless you have certification.
If you want to use cross-localization in mainland China, do not mention AI in your metadata.
This may result in your app being removed from the App Store for this region.

If you are not publishing in mainland China, or you have received accreditation, you can use cross-localization with AI mentions.

Cross Localization
Cross Localization

Complete list of all variations:

ISO codeISO codeCountry or regionDefault LanguageAdditional Supported Language(s)🇺🇸 English (U.S.): EN_US🇬🇧 English (U.K.): EN_GB
AFAFGAfghanistan🇬🇧 English (U.K.): EN_GB
ALALBAlbania🇬🇧 English (U.K.): EN_GB
DZDZAAlgeria🇬🇧 English (U.K.): EN_GB🇦🇪 Arabic: AR
🇫🇷 French: FR
AOAGOAngola🇬🇧 English (U.K.): EN_GB
AIAIAAnguilla🇬🇧 English (U.K.): EN_GB
AGATGAntigua and Barbuda🇬🇧 English (U.K.): EN_GB
AGARGArgentina🇲🇽 Spanish (Mexico): ES_MX🇬🇧 English (U.K.): EN_GB
AMARMArmenia🇬🇧 English (U.K.): EN_GB
AUAUSAustralia🇦🇺 English (Australia): EN_AU🇬🇧 English (U.K.): EN_GB
ATAUTAustria🇩🇪 German: DE_DE🇬🇧 English (U.K.): EN_GB
AZAZEAzerbaijan🇬🇧 English (U.K.): EN_GB
BSBHSBahamas🇬🇧 English (U.K.): EN_GB
BHBHRBahrain🇬🇧 English (U.K.): EN_GB🇦🇪 Arabic: AR
BBBRBBarbados🇬🇧 English (U.K.): EN_GB
BYBLRBelarus🇬🇧 English (U.K.): EN_GB
BEBELBelgium🇬🇧 English (U.K.): EN_GB🇳🇱 Dutch: NL_NL
🇫🇷 French: FR
BZBLZBelize🇬🇧 English (U.K.): EN_GB🇲🇽 Spanish (Mexico): ES_MX
BJBENBenin🇬🇧 English (U.K.): EN_GB🇫🇷 French: FR
BMBMUBermuda🇬🇧 English (U.K.): EN_GB
BTBTNBhutan🇬🇧 English (U.K.): EN_GB
BOBOLBolivia🇲🇽 Spanish (Mexico): ES_MX🇬🇧 English (U.K.): EN_GB
BABIHBosnia and Herzegovina🇬🇧 English (U.K.): EN_GB🇭🇷 Croatian: HR
BWBWABotswana🇬🇧 English (U.K.): EN_GB
BRBRABrazil🇧🇷 Portuguese (Brazil): PT_BR🇬🇧 English (U.K.): EN_GB
VGVGBBritish Virgin Islands🇬🇧 English (U.K.): EN_GB
BNBRNBrunei🇬🇧 English (U.K.): EN_GB
BGBGRBulgaria🇬🇧 English (U.K.): EN_GB
BFBFABurkina Faso🇬🇧 English (U.K.): EN_GB🇫🇷 French: FR
KHKHMCambodia🇬🇧 English (U.K.): EN_GB🇫🇷 French: FR
CMCMRCameroon🇬🇧 English (U.K.): EN_GB🇫🇷 French: FR
CACANCanada🇨🇦 English (Canada): EN_CA🇨🇦 French (Canada): FR_CA
CVCPVCape Verde🇬🇧 English (U.K.): EN_GB
KYCYMCayman Islands🇬🇧 English (U.K.): EN_GB
TDTCDChad🇬🇧 English (U.K.): EN_GB🇫🇷 French: FR
CLCHLChile🇲🇽 Spanish (Mexico): ES_MX🇬🇧 English (U.K.): EN_GB
CNCHNChina mainland🇨🇳 Simplified Chinese: ZH_HANS🇬🇧 English (U.K.): EN_GB
COCOLColombia🇲🇽 Spanish (Mexico): ES_MX🇬🇧 English (U.K.): EN_GB
CDCODCongo
Democratic Republic
🇬🇧 English (U.K.): EN_GB🇫🇷 French: FR
CGCOGCongo
Republic
🇬🇧 English (U.K.): EN_GB🇫🇷 French: FR
CRCRICosta Rica🇲🇽 Spanish (Mexico): ES_MX🇬🇧 English (U.K.): EN_GB
CICIVCote d’Ivoire🇫🇷 French: FR🇬🇧 English (U.K.): EN_GB
HRHRVCroatia🇬🇧 English (U.K.): EN_GB🇭🇷 Croatian: HR
CYCYPCyprus🇬🇧 English (U.K.): EN_GB🇬🇷 Greek: EL
🇹🇷 Turkish: TR
CZCZECzech Republic🇬🇧 English (U.K.): EN_GB🇨🇿 Czech: CS
DKDNKDenmark🇬🇧 English (U.K.): EN_GB🇩🇰 Danish: DA
DMDMADominica🇬🇧 English (U.K.): EN_GB
DODOMDominican Republic🇲🇽 Spanish (Mexico): ES_MX🇬🇧 English (U.K.): EN_GB
ECECUEcuador🇲🇽 Spanish (Mexico): ES_MX🇬🇧 English (U.K.): EN_GB
EGEGYEgypt🇬🇧 English (U.K.): EN_GB🇦🇪 Arabic: AR
🇫🇷 French: FR
SVSLVEl Salvador🇲🇽 Spanish (Mexico): ES_MX🇬🇧 English (U.K.): EN_GB
EEESTEstonia🇬🇧 English (U.K.): EN_GB
SZSWZEswatini🇬🇧 English (U.K.): EN_GB
FJFJIFiji🇬🇧 English (U.K.): EN_GB
FIFINFinland🇬🇧 English (U.K.): EN_GB🇫🇮 Finnish: FI
FRFRAFrance🇫🇷 French: FR🇬🇧 English (U.K.): EN_GB
GAGABGabon🇬🇧 English (U.K.): EN_GB🇫🇷 French: FR
GMGMBGambia🇬🇧 English (U.K.): EN_GB
GEGEOGeorgia🇬🇧 English (U.K.): EN_GB
DEDEUGermany🇩🇪 German: DE_DE🇬🇧 English (U.K.): EN_GB
GHGHAGhana🇬🇧 English (U.K.): EN_GB
GRGRCGreece🇬🇷 Greek: EL🇬🇧 English (U.K.): EN_GB
GDGRDGrenada🇬🇧 English (U.K.): EN_GB
GTGTMGuatemala🇲🇽 Spanish (Mexico): ES_MX🇬🇧 English (U.K.): EN_GB
GWGNBGuinea-Bissau🇬🇧 English (U.K.): EN_GB🇫🇷 French: FR
GYGUYGuyana🇬🇧 English (U.K.): EN_GB🇫🇷 French: FR
HNHNDHonduras🇲🇽 Spanish (Mexico): ES_MX🇬🇧 English (U.K.): EN_GB
HKHKGHong Kong🇭🇰 Chinese (Traditional): ZH_HANT🇬🇧 English (U.K.): EN_GB
HUHUNHungary🇬🇧 English (U.K.): EN_GB🇭🇺 Hungarian: HU
ISISLIceland🇬🇧 English (U.K.): EN_GB
ININDIndia🇬🇧 English (U.K.): EN_GB🇮🇳 Hindi: HI
IDIDNIndonesia🇬🇧 English (U.K.): EN_GB🇮🇩 Indonesian: ID
IQIRQIraq🇬🇧 English (U.K.): EN_GB🇦🇪 Arabic: AR
IEIRLIreland🇬🇧 English (U.K.): EN_GB
ILISRIsrael🇬🇧 English (U.K.): EN_GB🇮🇱 Hebrew: HE
ITITAItaly🇮🇹 Italian: IT🇬🇧 English (U.K.): EN_GB
JMJAMJamaica🇬🇧 English (U.K.): EN_GB
JPJPNJapan🇯🇵 Japanese: JA🇺🇸 English (U.S.): EN_US
JOJORJordan🇬🇧 English (U.K.): EN_GB🇦🇪 Arabic: AR
KZKAZKazakhstan🇬🇧 English (U.K.): EN_GB🇺🇸 English (U.S.): EN_US
KEKENKenya🇬🇧 English (U.K.): EN_GB
XKXKSKosovo🇬🇧 English (U.K.): EN_GB
KWKWTKuwait🇬🇧 English (U.K.): EN_GB🇦🇪 Arabic: AR
KGKGZKyrgyzstan🇬🇧 English (U.K.): EN_GB
LALAOLaos🇬🇧 English (U.K.): EN_GB🇫🇷 French: FR
LVLVALatvia🇬🇧 English (U.K.): EN_GB
LBLBNLebanon🇬🇧 English (U.K.): EN_GB🇦🇪 Arabic: AR
🇫🇷 French: FR
LRLBRLiberia🇬🇧 English (U.K.): EN_GB
LYLBYLibya🇬🇧 English (U.K.): EN_GB🇦🇪 Arabic: AR
LTLTULithuania🇬🇧 English (U.K.): EN_GB
LULUXLuxembourg🇬🇧 English (U.K.): EN_GB🇫🇷 French: FR
🇩🇪 German: DE_DE
MOMACMacau🇭🇰 Chinese (Traditional): ZH_HANT🇬🇧 English (U.K.): EN_GB
MGMDGMadagascar🇬🇧 English (U.K.): EN_GB🇫🇷 French: FR
MWMWIMalawi🇬🇧 English (U.K.): EN_GB
MYMYSMalaysia🇬🇧 English (U.K.): EN_GB🇲🇾 Malay: MS
MVMDVMaldives🇬🇧 English (U.K.): EN_GB
MLMLIMali🇬🇧 English (U.K.): EN_GB🇫🇷 French: FR
MTMLTMalta🇬🇧 English (U.K.): EN_GB
MRMRTMauritania🇬🇧 English (U.K.): EN_GB🇦🇪 Arabic: AR
🇫🇷 French: FR
MUMUSMauritius🇬🇧 English (U.K.): EN_GB🇫🇷 French: FR
MXMEXMexico🇲🇽 Spanish (Mexico): ES_MX🇬🇧 English (U.K.): EN_GB
FMFSMMicronesia🇬🇧 English (U.K.): EN_GB
MDMDAMoldova🇬🇧 English (U.K.): EN_GB
MNMNGMongolia🇬🇧 English (U.K.): EN_GB
MEMNEMontenegro🇬🇧 English (U.K.): EN_GB🇭🇷 Croatian: HR
MSMSRMontserrat🇬🇧 English (U.K.): EN_GB
MAMARMorocco🇬🇧 English (U.K.): EN_GB🇦🇪 Arabic: AR
🇫🇷 French: FR
MZMOZMozambique🇬🇧 English (U.K.): EN_GB
MMMMRMyanmar🇬🇧 English (U.K.): EN_GB
NANAMNamibia🇬🇧 English (U.K.): EN_GB
NRNRUNauru🇬🇧 English (U.K.): EN_GB
NPNPLNepal🇬🇧 English (U.K.): EN_GB
NLNLDNetherlands🇳🇱 Dutch: NL_NL🇬🇧 English (U.K.): EN_GB
NZNLZNew Zealand🇬🇧 English (U.K.): EN_GB🇦🇺 English (Australia): EN_AU
NINICNicaragua🇲🇽 Spanish (Mexico): ES_MX🇬🇧 English (U.K.): EN_GB
NENERNiger🇬🇧 English (U.K.): EN_GB🇫🇷 French: FR
NGNGANigeria🇬🇧 English (U.K.): EN_GB
MKMKDNorth Macedonia🇬🇧 English (U.K.): EN_GB
KPPRKNorth Korea🇰🇷 Korean: KO🇬🇧 English (U.K.): EN_GB
NONORNorway🇬🇧 English (U.K.): EN_GB🇳🇴 Norwegian: NO
OMOMNOman🇬🇧 English (U.K.): EN_GB🇦🇪 Arabic: AR
PKPAKPakistan🇬🇧 English (U.K.): EN_GB
PWPLWPalau🇬🇧 English (U.K.): EN_GB
PAPANPanama🇲🇽 Spanish (Mexico): ES_MX🇬🇧 English (U.K.): EN_GB
PGPNGPapua New Guinea🇬🇧 English (U.K.): EN_GB
PYPRYParaguay🇲🇽 Spanish (Mexico): ES_MX🇬🇧 English (U.K.): EN_GB
PEPERPeru🇲🇽 Spanish (Mexico): ES_MX🇬🇧 English (U.K.): EN_GB
PHPHLPhilippines🇬🇧 English (U.K.): EN_GB
PLPOLPoland🇬🇧 English (U.K.): EN_GB🇵🇱 Polish: PL
PTPRTPortugal🇵🇹 Portuguese (Portugal): PT_PT🇬🇧 English (U.K.): EN_GB
QAQATQatar🇬🇧 English (U.K.): EN_GB🇦🇪 Arabic: AR
KRKORRepublic of Korea🇰🇷 Korean: KO🇬🇧 English (U.K.): EN_GB
ROROURomania🇬🇧 English (U.K.): EN_GB🇷🇴 Romanian: RO
RURUSRussia🇷🇺 Russian: RU🇬🇧 English (U.K.): EN_GB
🇺🇦 Ukrainian: UK
RWRWARwanda🇬🇧 English (U.K.): EN_GB🇫🇷 French: FR
STSTPSao Tome and Principe🇬🇧 English (U.K.): EN_GB
SASAUSaudi Arabia🇬🇧 English (U.K.): EN_GB🇦🇪 Arabic: AR
SNSENSenegal🇬🇧 English (U.K.): EN_GB🇫🇷 French: FR
RSSRBSerbia🇬🇧 English (U.K.): EN_GB🇭🇷 Croatian: HR
SCSYCSeychelles🇬🇧 English (U.K.): EN_GB🇫🇷 French: FR
SLSLESierra Leone🇬🇧 English (U.K.): EN_GB
SGSGPSingapore🇬🇧 English (U.K.): EN_GB🇭🇰 Chinese (Simplified): ZH_HANS
SKSVKSlovakia🇬🇧 English (U.K.): EN_GB🇸🇰 Slovak: SK
SISVNSlovenia🇬🇧 English (U.K.): EN_GB
SBSLBSolomon Islands🇬🇧 English (U.K.): EN_GB
ZAZAFSouth Africa🇬🇧 English (U.K.): EN_GB
ESESPSpain🇪🇸 Spanish (Spain): ES_ES🇪🇸 Catalan: CA
🇬🇧 English (U.K.): EN_GB
LKLKASri Lanka🇬🇧 English (U.K.): EN_GB
KNKNASt. Kitts and Nevis🇬🇧 English (U.K.): EN_GB
LCLCASt. Lucia🇬🇧 English (U.K.): EN_GB
VCVCTSt. Vincent and the Grenadines🇬🇧 English (U.K.): EN_GB
SRSURSuriname🇬🇧 English (U.K.): EN_GB🇳🇱 Dutch: NL_NL
SESWESweden🇸🇪 Swedish: SV🇬🇧 English (U.K.): EN_GB
CHCHESwitzerland🇩🇪 German: DE_DE🇬🇧 English (U.K.): EN_GB
🇫🇷 French: FR
🇮🇹 Italian: IT
TWTWNTaiwan🇭🇰 Chinese (Traditional): ZH_HANT🇬🇧 English (U.K.): EN_GB
TJTJKTajikistan🇬🇧 English (U.K.): EN_GB
TZTZATanzania🇬🇧 English (U.K.): EN_GB
THTHAThailand🇬🇧 English (U.K.): EN_GB🇹🇭 Thai: TH
TOTONTonga🇬🇧 English (U.K.): EN_GB
TTTTOTrinidad and Tobago🇬🇧 English (U.K.): EN_GB🇫🇷 French: FR
TNTUNTunisia🇬🇧 English (U.K.): EN_GB🇦🇪 Arabic: AR
🇫🇷 French: FR
TRTURTurkey🇬🇧 English (U.K.): EN_GB🇹🇷 Turkish: TR
TMTKMTurkmenistan🇬🇧 English (U.K.): EN_GB
TCTCATurks and Caicos Islands🇬🇧 English (U.K.): EN_GB
UGUGAUganda🇬🇧 English (U.K.): EN_GB
UAUKRUkraine🇷🇺 Russian: RU🇬🇧 English (U.K.): EN_GB
🇺🇦 Ukrainian: UK
AEAREUnited Arab Emirates🇬🇧 English (U.K.): EN_GB🇦🇪 Arabic: AR
GBGBRUnited Kingdom🇬🇧 English (U.K.): EN_GB
USUSAUnited States🇺🇸 English (U.S.): EN_US🇦🇪 Arabic: AR
🇨🇳 Chinese (Simplified): ZH_HANS
🇭🇰 Chinese (Traditional): ZH_HANT
🇫🇷 French: FR
🇰🇷 Korean: KO
🇧🇷 Portuguese (Brazil): PT_BR
🇷🇺 Russian: RU
🇲🇽 Spanish (Mexico): ES_MX
🇻🇳 Vietnamese: VI
UYURYUruguay🇬🇧 English (U.K.): EN_GB🇲🇽 Spanish (Mexico): ES_MX
UZUZBUzbekistan🇬🇧 English (U.K.): EN_GB
VUVUTVanuatu🇬🇧 English (U.K.): EN_GB🇫🇷 French: FR
VEVENVenezuela🇲🇽 Spanish (Mexico): ES_MX🇬🇧 English (U.K.): EN_GB
VNVNMVietnam🇬🇧 English (U.K.): EN_GB🇻🇳 Vietnamese: VI
YEYEMYemen🇬🇧 English (U.K.): EN_GB🇦🇪 Arabic: AR
ZMZMBZambia🇬🇧 English (U.K.): EN_GB
ZWZWEZimbabwe🇬🇧 English (U.K.): EN_GB

Cross-localization Interface

Sort countries
Save changes to App Store
Refresh information
Settings
Go to documentation

Country sorting options:

  • By name
  • By population
  • By GDP (nominal) per capita

Creating a New Version

Metadata editing is available when the app status is “Ready for Submission” in the App Store.
If you haven’t created a new app version after an update that can be edited, the interface will prompt you to Create a new app version.

Country Card

Each country displays a card showing:

  • Country code
  • Country name
  • Population
  • GDP (nominal) per capita
  • List of languages for cross-localization

Clicking a country card opens the localization editor with metadata.

Localization Card

Each localization displays a card showing:

  • Localization code
  • Localization name
  • List of countries using this localization – clicking a country opens its card
  • 3 input fields affecting cross-localization:
    • Title
    • Subtitle
    • Keywords

Editor Input

Editor input
Editor input

Each input field contains several buttons:

  • Metadata Editor: Quick access to the metadata editor.
  • Bulk Metadata Editor: Quick access to the bulk metadata editor.
  • Translate: Translates text from the primary localization to the current language.
  • Reverse Translate: Translates the current text in the input field back to the base language set in settings screen.
  • Copy from Previous Version: Copies content from the last modified version.
  • Show Differences: If the value differs from the last saved version, this button will show the difference.
  • Add to tracking list: Only for fields that support keywords. Adds all keywords from the input field to your tracked keywords list.

Clear button: Clears all entered data in the input field.

For memberships with access to the ASO analysis: Indie and Pro

For fields that affect search results in the App Store, such as Title, Subtitle, and Keywords, additional keyword analysis features are available:

  • Keyword Breakdown: The entered text is automatically split into individual keywords.
  • Display Metrics: Relevant metrics for each keyword are shown, including:
    • Current App Rating: The current rating of your app for this keyword.
    • Search Ads Popularity (SAP): The popularity of the keyword in Apple Search Ads-hovering over it shows the date of the last update.
    • Difficulty: The competitiveness of the keyword.
    • Total Number of Apps: The number of apps using this keyword.
    • Suggestions: The number of suggestions for this keyword in the App Store.
    • Keyword Management: Buttons to add or remove keywords from your keyword list.
    • Edit Field: Options to remove or add this keyword directly in the current input field.

For memberships with access to the ASO analysis: Indie and Pro

For the Keywords field, Keyword Recommendations are also available, based on:

  • Current App Keywords: Keywords for which your app already has search queries.
  • User’s Keyword List: Keywords from your personalized keyword list.
  • Competitor Apps: Keywords used by competitor apps.

Each input field has a dynamic border that reflects the current state, unless disabled in the page Settings:

  • Blue: Indicates that the field has been changed.
  • Red: Displays when there is no data in the field.
  • Gray: Shows when the field has no changes and is filled.

Additionally, each input field displays the character count and maximum field length, helping to ensure compliance with App Store requirements.

Settings

Changes indicator

Before each input field, a vertical colored stripe is displayed as a status indicator.

By default, the indicators are visible, but they can be turned off using the “Hide change indicators” setting.

Color scheme:

  • Red: field is not filled
  • Blue: field has been changed
  • Gray: field has not been changed

Localization Providers

Keywords Settings
Keywords Settings

You can configure the translation provider of your choice (Google Translate, DeepL, Chat GPT, Claude AI) in the ASO.dev settings and also set stop words for translations.

Google Translate

Google Translate is available by default as a free translation provider in ASO.dev.

If you don’t have API keys for other providers, Google Translate will be used automatically.

DeepL, Chat GPT, Claude AI, DeepSeek

DeepL, Chat GPT, Claude AI, DeepSeek are paid translation providers that offer more accurate and high-quality translations compared to Google Translate.

These providers use advanced technologies and AI models to ensure a high level of translation accuracy.

To use these providers, you need to obtain an API key, enter it in the settings, and, if necessary, select a model or specify additional parameters.

How to Set the Priority of Translation Providers

You can change the priority of translation providers by dragging their cards in the list.

The order determines which provider will be used first when translating content.

Disabling a Translation Provider

To disable a specific translation provider, simply toggle the switch to the “Off” position.

This provider will no longer be used for content translation.

You can also change the order of providers to adjust their priority.

Excluding Specific Keywords or Phrases from Translation

Settings: Brand Names
Settings: Brand Names

If you need to exclude certain words or phrases from translation, such as brand names, follow these steps:

  • Enter the keyword or phrase you want to exclude from translation.
  • After entering a word, press Enter or .

Excluded words or phrases will remain in their original language and will not be altered during translation.
This is especially useful for maintaining consistency with brand names, technical terms, and other important phrases.

Using both primary and additional languages in ASO, as well as optimizing keyword metadata, can increase your app’s visibility in the App Store.

Cross-localization provides an interactive table displaying metadata for different localizations, allowing you to assess their performance and optimize your app for various regions and languages.