Palabras clave de App Store: ¿100 bytes o 100 caracteres?

Actualizado el · LocalePilot

El campo Keywords de App Store Connect está limitado a 100… bytes o caracteres, según la página de Apple que leas. Para una lista en inglés es lo mismo. Para el español, el japonés o el tailandés, no.

¿Tienes prisa? Cuenta tus palabras clave en bytes directamente en el navegador: gratis, sin registro, no se sube nada.

Lo que dice Apple (y lo que se observa)

Las propias páginas de Apple no coinciden:

  • La referencia de App Store Connect describe así el campo Keywords: «You can provide up to 100 bytes of content.», es decir, en bytes.
  • La página Creating Your Product Page habla de 100 caracteres.
  • En los foros para desarrolladores, en 2022, un miembro del equipo de Apple probó palabras clave en tailandés a través de la API: 100 caracteres pasaron, 106 fueron rechazados. Y 100 caracteres tailandeses pesan mucho más que 100 bytes.

Así que la documentación de referencia dice bytes, y al menos una observación muestra que se cuentan caracteres. Hasta que Apple lo aclare, tienes que elegir una regla.

Por qué importa la diferencia

En UTF-8, las letras latinas sin acento ocupan un byte, una letra acentuada dos, un carácter japonés o tailandés tres.

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

Para el inglés, la cuestión no se plantea. Para el francés o el español, la diferencia es de unos pocos bytes en una lista completa («canción», por ejemplo, tiene 7 caracteres y 8 bytes). Para el japonés o el tailandés, el mismo campo admite tres veces menos texto si cuentas bytes.

Contarlo tú mismo

En una terminal, sobre tu archivo de fastlane ($(cat …) elimina el salto de línea final):

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 cuenta caracteres según la configuración regional de tu terminal; con una configuración que no sea UTF-8 devuelve el mismo número que wc -c. En 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

La regla que aplicamos

Contar bytes. Es lo que dice la documentación de referencia, y es la opción más estricta: un campo que cabe en 100 bytes cabe necesariamente en 100 caracteres, así que nunca será rechazado. LocalePilot la aplica en su pantalla de ficha de App Store, que muestra por ejemplo «94 / 100 bytes» mientras escribes.

En japonés, chino, coreano o tailandés esta regla tiene un coste: puede que dejes espacio sin usar. Si esos mercados te importan, prueba una lista más larga en App Store Connect: rechaza de inmediato un campo demasiado largo, así sabrás qué pasa hoy.

Lo que no depende de la unidad

  • Separa con comas, sin espacios alrededor: cada espacio después de una coma gasta un byte.
  • No repitas tu nombre ni tu subtítulo. La mayoría de las guías de ASO desaconsejan repetir en las palabras clave lo que ya dicen esos dos campos.
  • Hay un archivo por idioma. Con fastlane, cada localización tiene su propio fastlane/metadata/<locale>/keywords.txt. Traducir la lista en inglés palabra por palabra rara vez te da los términos que la gente escribe de verdad: parte de las búsquedas en el idioma de destino.

Preguntas frecuentes

¿Cuántos bytes ocupa una letra acentuada?

Dos en UTF-8 (á, é, ñ, ü…). Un carácter japonés, chino o tailandés ocupa tres.

¿Pongo espacios después de las comas?

No: separa las palabras clave con comas y sin espacios, cada espacio ocupa sitio.

¿Dónde está el archivo de palabras clave con fastlane?

En fastlane/metadata/<locale>/keywords.txt, un archivo por idioma.