App Store-trefwoorden: 100 bytes of 100 tekens?

Bijgewerkt op · LocalePilot

Het veld Keywords in App Store Connect is beperkt tot 100… bytes of tekens, afhankelijk van welke pagina van Apple je leest. Voor een Engelse lijst is dat hetzelfde. Voor Frans, Japans of Thais niet.

Tel je trefwoorden in bytes, direct in je browser: gratis, zonder account, er wordt niets geüpload.

Wat Apple zegt (en wat mensen zien)

Een eenvoudige vraag, maar de pagina's van Apple zijn het er zelf niet over eens:

  • De referentie van App Store Connect beschrijft het veld Keywords als: "You can provide up to 100 bytes of content." Bytes.
  • De pagina Creating Your Product Page heeft het over 100 tekens.
  • Op de ontwikkelaarsforums testte een medewerker van Apple in 2022 Thaise trefwoorden via de API: 100 tekens gingen erdoor, 106 werden geweigerd. En 100 Thaise tekens wegen veel meer dan 100 bytes.

De referentiedocumentatie zegt dus bytes, en minstens één waarneming laat zien dat er tekens worden geteld. Zolang Apple geen uitsluitsel geeft, moet je een regel kiezen.

Waarom het verschil ertoe doet

In UTF-8 nemen Latijnse letters zonder accent één byte in, een letter met accent twee en een Japans of Thais teken drie.

TrefwoordTekensBytes
shopping88
épicerie89
supermarché1112
Einkaufsliste1313
買い物リスト618
รายการ618

Voor Engels speelt de vraag niet, en voor Nederlands zelden. Voor Frans of Spaans scheelt het een paar bytes over een volle lijst. Voor Japans of Thais past er in hetzelfde veld drie keer minder tekst als je bytes telt.

Zelf tellen

In een terminal, op je fastlane-bestand ($(cat …) laat het afsluitende regeleinde weg):

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 telt tekens volgens de locale van je terminal; met een niet-UTF-8-locale geeft het hetzelfde getal als 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

De regel die wij toepassen

Tel bytes. Dat zegt de referentiedocumentatie, en het is de strengste optie: een veld dat in 100 bytes past, past zeker in 100 tekens en wordt dus nooit geweigerd. LocalePilot past die regel toe op het App Store-scherm, dat tijdens het typen bijvoorbeeld "94 / 100 bytes" toont.

Voor Japans, Chinees, Koreaans of Thais heeft dat een prijs: misschien laat je ruimte onbenut. Zijn die markten belangrijk voor je, probeer dan een langere lijst in App Store Connect: een te lang veld wordt meteen geweigerd, dus je weet direct wat vandaag geaccepteerd wordt.

Wat niet van de eenheid afhangt

  • Komma's, zonder spaties eromheen. Elke spatie na een komma kost een byte die niets oplevert.
  • Geen herhaling van naam en ondertitel. De meeste ASO-gidsen raden af om in de trefwoorden te herhalen wat die twee velden al zeggen.
  • Eén bestand per taal. Met fastlane heeft elke lokalisatie een eigen fastlane/metadata/<locale>/keywords.txt. De Engelse lijst woord voor woord vertalen levert zelden de termen op die mensen echt intypen: ga uit van hoe mensen in de doeltaal zoeken.

Veelgestelde vragen

Hoeveel bytes is een letter met accent?

Twee in UTF-8 (é, ë, à, ç…). Een Japans, Chinees of Thais teken neemt er drie in.

Moet ik spaties na de komma's zetten?

Nee: scheid trefwoorden met komma's zonder spaties, elke spatie kost ruimte.

Waar staat het trefwoordenbestand met fastlane?

In fastlane/metadata/<locale>/keywords.txt, één bestand per taal.