Sing-song es un esquema de codificación reversible que transforma cadenas de bytes arbitrarias —como claves criptográficas, hashes o grandes identificadores— en secuencias de sílabas pronunciables. El proyecto, publicado como borrador en su versión 0.1.0, nació como un experimento para generar nombres de usuario deterministas a partir de las claves npub del protocolo Nostr, donde los formatos habituales en hexadecimal o Base58 resultan difíciles de leer, transcribir o dictar por teléfono.
El sistema emplea un alfabeto fijo de 64 sílabas abiertas del tipo consonante-vocal (CV), sin diptongos ni codas, construido a partir de 16 consonantes (b, d, f, g, j, k, l, m, n, p, r, s, t, v, w, z) y 4 vocales (a, i, o, u). Las letras h, y y e se omiten por su pronunciación irregular. Cada sílaba codifica exactamente 6 bits: la consonante ocupa los 4 bits altos y la vocal los 2 bajos, lo que permite separar la entrada en bloques de 6 bits y asignar una sílaba por bloque.
El códec es determinista, reversible, estable frente a prefijos y no requiere metadatos externos de longitud. Conserva los bytes cero iniciales y utiliza guiones cosméticos para agrupar las sílabas de dos en dos, facilitando la lectura y la verificación oral sin que los guiones formen parte de la codificación. Un mecanismo de variantes, basado en máscaras SHAKE-256, ofrece hasta 16 representaciones alternativas reversibles del mismo byte string, identificadas con un sufijo de dos letras.
El documento compara Sing-song con hex y Base58 en términos de densidad escrita y hablada, y analiza tres alternativas descartadas: diccionarios curados de sílabas, relajación de la alternancia CV y arranque con grupos consonánticos seleccionados. Frente a hex, Sing-song sacrifica densidad escrita —3 bits por letra frente a 4— a cambio de una pronunciación más natural, lo que lo hace útil para dictar, transcribir o recordar manualmente identificadores largos sin perder reversibilidad.
