Count your keywords in bytes right in your browser with a free tool, without signup or upload.
What Apple says (and what people observe)
Apple's own pages give different answers:
- The App Store Connect reference describes the Keywords field as: "You can provide up to 100 bytes of content."
- The Creating Your Product Page page talks about 100 characters.
- On the developer forums, in 2022, an Apple team member tested Thai keywords through the API: 100 characters went through, 106 were rejected. And 100 Thai characters weigh far more than 100 bytes.
The reference documentation says bytes, yet at least one observation shows characters being counted. Until Apple settles it, you have to pick a rule.
Why the difference matters
In UTF-8, unaccented Latin letters take one byte, an accented letter two, a Japanese or Thai character three.
| Keyword | Characters | Bytes |
|---|---|---|
| shopping | 8 | 8 |
| épicerie | 8 | 9 |
| supermarché | 11 | 12 |
| Einkaufsliste | 13 | 13 |
| 買い物リスト | 6 | 18 |
| รายการ | 6 | 18 |
In English, both counts give the same number. In French or Spanish, a full list differs by a few bytes, while in Japanese or Thai the same field holds three times less text if you count bytes.
Counting it yourself
In a terminal, on your fastlane file ($(cat …) drops the trailing newline):
printf '%s' "$(cat fastlane/metadata/fr-FR/keywords.txt)" | wc -c # bytes
printf '%s' "$(cat fastlane/metadata/fr-FR/keywords.txt)" | wc -m # characters
wc -m counts characters according to your terminal's locale; with a non-UTF-8 locale it returns the same number as wc -c. In Dart:
import 'dart:convert';
final keywords = 'courses,épicerie,liste,famille,partagée';
print(utf8.encode(keywords).length); // 41 bytes
print(keywords.runes.length); // 39 characters
The rule we apply
Count bytes. The reference documentation says so, and it's the strictest option: a field that fits in 100 bytes necessarily fits in 100 characters, so it will never be rejected. LocalePilot applies it on its App Store listing screen, which shows for example "94 / 100 bytes" as you type.
For Japanese, Chinese, Korean or Thai, this rule may leave room unused. If those markets matter to you, try a longer list in App Store Connect: it rejects an over-long field immediately, so you'll know what goes through today.
What doesn't depend on the unit
- Separate keywords with commas and no spaces: every space after a comma costs a byte for nothing.
- Most ASO guides advise against repeating in keywords what your name and subtitle already say.
- With fastlane, each localization has its own
fastlane/metadata/<locale>/keywords.txt. Translating the English list word for word rarely gives you the terms people actually type: start from search in the target language.