Contador de tokens LLM
Cuenta los tokens que cuesta tu texto según la codificación real de un modelo, en tu navegador. No se sube nada y ningún número de aquí es una estimación.
Nada de lo que pegues aquí sale de este navegador. El vocabulario de la codificación que elijas se descarga una vez desde este sitio, y el recuento se ejecuta en un Web Worker en esta pestaña: abre tu propio panel de red y compruébalo, ninguna petición lleva tu texto.
Elige el modelo al que realmente apuntas. Un modelo usa una codificación, varios modelos comparten una, y un recuento pertenece a la codificación y no al nombre.
o200k_basePega o escribe algo arriba y el recuento exacto de tokens aparecerá aquí.
Qué es en realidad un token
Un modelo de lenguaje no lee tu texto como letras ni como palabras. Antes de que ocurra ninguna otra cosa, el texto se corta en tokens, y un token es una secuencia de bytes para la que el modelo tiene un único número. Algunos tokens son de verdad palabras enteras. Muchos son una palabra junto con el espacio que la precede, y por eso una misma palabra puede costar distinto según lo que venga antes. Otros son una terminación, un signo de puntuación, una sangría o un fragmento que no es parte de nada que un lector fuera a nombrar. El corte lo hace una tabla que se construyó contando qué secuencias aparecen juntas con más frecuencia en un cuerpo de texto grande, y nada en ella se diseñó para encajar con la manera de escribir de nadie.
- Un token es una secuencia de bytes y no una secuencia de caracteres. La distinción parece una pedantería hasta que se escribe fuera del alfabeto latino, donde lo es todo.
- Una palabra inglesa frecuente suele ser un token. Una rara, un nombre, un código de producto o una errata son varios, porque la tabla no tiene una entrada para el conjunto y ha de armarlo con piezas más cortas.
- Los espacios en blanco no son gratis. La sangría, las líneas vacías y los espacios dentro de una tabla pegada son todos bytes, y todos se cuentan. Un prompt que parece ordenado puede costar bastante más que ese mismo prompt escrito en plano.
- El recuento depende de los bytes exactos y de nada más. Dos textos que se ven idénticos en pantalla pero difieren en un carácter invisible — un espacio duro, una marca de orden de bytes, un apóstrofo de otra clase — son textos distintos y pueden dar números distintos.
Por eso la regla general que todo el mundo repite — dividir los caracteres entre cuatro — no es ninguna regla. Es un promedio sobre un tipo de texto en un idioma, y se equivoca en la dirección que cuesta dinero en cuanto el texto es código, una tabla, una lista de identificadores o algo escrito en cualquier idioma que no sea el inglés. El número de esta página no es ese promedio. Es el corte real, hecho por la tabla real, en tu navegador.
La codificación es la que hace el recuento
La tabla y las reglas de fusión juntas se llaman una codificación, y esta tiene un nombre propio. Ese nombre es lo que vale la pena aprender, porque el recuento le pertenece a ella y no a ningún modelo: varios modelos comparten una codificación, y un modelo al que sustituye otro más nuevo conserva muy a menudo la codificación de su predecesor. Cuando esta página muestra un número, muestra también la codificación bajo la que se calculó, justo al lado del modelo que elegiste.
- Un modelo usa una codificación. La correspondencia es de muchos a uno, así que saber qué codificación usa tu modelo dice más que saber cuál es el modelo.
- Una codificación tiene un nombre propio publicado, como o200k_base, y ese nombre designa la misma tabla dondequiera que aparezca. Un recuento tomado bajo una codificación en esta página y otro tomado bajo la misma codificación en cualquier otro sitio coinciden, y eso es lo que hace que un recuento con su codificación al lado sea comprobable siquiera.
- Un recuento solo significa algo con su codificación al lado. Un número citado con un nombre de modelo y sin codificación es un número que no se puede comprobar, y es lo que dan casi todas las páginas sobre este asunto.
La consecuencia práctica sorprende a mucha gente: cambiar entre dos modelos que comparten codificación no mueve el número en absoluto, y eso es la herramienta acertando y no la herramienta rota. Para ver cambiar un recuento hay que cambiar la codificación, no el nombre del modelo.
Por qué el texto que no está en inglés cuesta más
Aquí viene la parte que ninguna página escrita partiendo del inglés va a contar, y es la razón de que esta exista. Las codificaciones en uso trabajan a nivel de byte: operan sobre los bytes UTF-8 de tu texto y no sobre sus caracteres. Una letra latina es un byte. Una letra hebrea, árabe, griega o cirílica son dos. Un carácter chino, japonés o coreano son tres. Un emoji son cuatro, y una bandera o una familia unida son varios de esos seguidos. Así que, antes de consultar tabla alguna, la misma frase ya son dos o tres veces más bytes en un idioma que en otro.
- Las tablas se construyeron contando secuencias en un corpus abrumadoramente inglés, así que las palabras inglesas obtuvieron entradas y las de otros idiomas a menudo no. Un idioma sin entrada para sus propias palabras frecuentes se deletrea en fragmentos.
- Eso se suma al coste en bytes en vez de sustituirlo. Una palabra que hay que armar con tres fragmentos, cada uno de dos o tres bytes, sale cara dos veces.
- El efecto no es uniforme entre los idiomas que no son el inglés. Una escritura con secuencias frecuentes propias en la tabla sale mucho mejor parada que otra que apenas estaba representada, y la única manera de saber dónde queda la tuya es pegar texto propio y mirar.
- Por eso un presupuesto calculado en inglés no se traslada. Si te dijeron que una ventana de contexto admite cierto número de páginas, esa cifra casi con seguridad se midió en inglés, y tu idioma no llegará a ella.
Nada de esto es un defecto que se pueda esquivar escribiendo de otro modo, y tampoco es una razón para escribir en inglés. Es un coste que se debería poder ver antes de asumirlo, y ese es todo el trabajo del número de arriba.
Un carácter puede quedar partido entre varios tokens
Como un token es una secuencia de bytes y un carácter fuera del alfabeto latino son varios bytes, un solo carácter queda partido con toda normalidad: sus primeros bytes caen en un token y los últimos en el siguiente. Ninguno de esos dos tokens es texto por sí mismo. Imprimirlos como si lo fueran es lo que produce esa fila de caracteres de reemplazo que quizá hayas visto en otras páginas que prometen enseñarte tus tokens, y destruye justo la comprensión que la imagen debía dar.
Por eso este sitio dibuja un segmento en su lugar: la secuencia más corta de tokens consecutivos cuyos bytes salen como texto completo. Normalmente es un token. Donde un carácter quedó partido son dos o más — hasta cuatro, en un carácter de cuatro bytes cortado byte a byte — y el segmento se dibuja entero con el número de tokens que lleva dentro escrito al lado, de modo que ves el corte en lugar de perder el carácter en él. El recuento no se ve afectado por nada de esto. Que algo quede partido es un hecho sobre cómo se cortaron los bytes, y el total es el total.
Leer la imagen de tu propio texto
Debajo del recuento, tu texto se dibuja una segunda vez con sus límites a la vista. Cada bloque de esa imagen es un segmento, los bloques van en el orden en que los escribiste y no se omite ni se acorta nada, así que lo que estás mirando es tu propio texto y no una lista de fragmentos sacados de él. Esa es la pregunta que el número no puede responder: no cuánto cuesta el conjunto, sino qué partes de él son las caras.
- Un bloque sin número encima es un solo token, que es el caso corriente. Se deja sin marcar a propósito: una cifra sobre cada bloque sería un muro de dígitos por encima de tus propias frases y enterraría los bloques que sí vale la pena mirar. El límite es la lectura, y el sombreado es lo que hace que un bloque acabe y empiece el siguiente.
- Un bloque que lleva un número pequeño es un segmento de más de un token, y ahí es donde un carácter quedó cortado por un límite. El carácter sigue estando, dibujado entero, con el número de tokens que costó al lado, así que un corte aparece como un coste y no como un daño a tu texto. Un emoji o un carácter de una escritura antigua pueden llegar a cuatro.
- Los espacios, los saltos de línea y la sangría se dibujan como todo lo demás, porque se cuentan como todo lo demás. Un tramo de bloques sobre lo que parece no ser nada es lo más barato de arreglar en un prompt largo, y es invisible hasta que puedes verlo.
- Cambiar de modelo rehace la imagen siempre que cambia la codificación, y la deja exactamente como estaba siempre que no. Es el mismo hecho que muestra el número, en una forma en la que puedes ver dónde cae la diferencia y no solo que la hay.
Un texto muy largo se dibuja solo hasta cierto punto, y donde el dibujo se detiene la página dice cuántos bloques dibujó de cuántos. El recuento nunca está limitado del mismo modo: abarca todo lo que pegaste, sea cual sea su longitud, y nada de la imagen llega hasta él. El límite existe porque un navegador maqueta los bloques de uno en uno y un documento entero serían más de los que ninguna página podría mostrar con provecho, así que lo que pierdes más allá de ese punto es la imagen del resto, nunca la respuesta sobre él.
Por qué algunos modelos no llevan aquí ningún número
No todos los modelos se pueden contar en tu navegador, y lo honesto al respecto es decir cuáles y por qué en vez de enseñarte un número adivinado. Hay tres estados en los que un modelo puede estar en esta página, y se distinguen en pantalla en lugar de mezclarse.
- Su codificación está publicada y este sitio la sirve. Obtienes un recuento exacto, calculado aquí, contra la tabla real.
- Su codificación está publicada y este sitio no la sirve. La fila nombra la codificación y dice por qué: casi siempre porque quien publica el archivo no declara ninguna licencia que permita a otro republicarlo. La tabla existe; la negativa es nuestra, y la fila lo dice.
- Su codificación no se ha publicado nunca. No hay tabla que servir ni tabla que negar, así que ninguna página, esté donde esté, puede contar ese modelo en tu navegador, diga lo que diga. La fila lo dice, y no lleva número, ni estimación, ni rango.
Esa última fila es donde casi todas las páginas sobre este asunto hacen trampa en silencio: pasan tu texto por la tabla de otro modelo y presentan el resultado como si fuera una medición. No es solo impreciso, está sesgado, y el sesgo es peor justo en el texto que más cuesta presupuestar: el código y todo lo que no está escrito en inglés. El recuento exacto para un modelo así viene del propio servicio de conteo de tokens de quien lo fabrica, y ese necesita una clave de API que una página que se ejecuta entera en tu navegador no tiene manera de guardar y nunca debería pedirte. Acudir a ese servicio es la respuesta honesta, y es la que esta página da en lugar de un número.
Convertir un recuento en un coste por tu cuenta
Esta página no da ningún precio, y es deliberado: un precio caduca más deprisa que cualquier otra cosa de este asunto, y un precio caducado no deja una página incompleta, la deja falsa. Lo que no caduca es la aritmética, así que aquí está, y puedes aplicarla a lo que diga hoy la propia página del proveedor.
- Los proveedores dan un precio por millón de tokens. Toma el recuento de esta página, divídelo entre un millón y multiplícalo por ese precio. Eso es lo que cuesta enviar el texto una vez.
- La entrada y la salida se cobran por separado, y la salida suele ser la más cara de las dos. Esta página cuenta lo que envías. No puede contar una respuesta que todavía no existe, así que cualquier coste que saques de aquí es un mínimo y nunca un total.
- Una conversación reenvía su historial. Si tu texto es un mensaje de sistema que viaja en cada turno, multiplica por el número de turnos que esperas, y otra vez por el número de usuarios, antes de decidir si acortarlo vale una tarde.
El mismo recuento responde a la otra pregunta que la gente trae aquí, que es si un texto va a caber. Tampoco eso te lo dirá esta página, porque una ventana de contexto es una cifra que se mueve y una promesa sobre si algo cabe es una que no puede cumplir ninguna herramienta que no sea el modelo mismo. Lo que da es el número con el que comparar cualquier cifra que publique el proveedor.
Nada de lo que pegas sale de tu navegador
El recuento ocurre en la página que ya has cargado. La tabla de la codificación que elegiste se descarga una vez desde este sitio — eso es descargar un archivo, no subir tu texto — y todo lo demás se ejecuta en tu propia máquina, en un hilo en segundo plano para que un documento largo no congele la pestaña. Abre el panel de red de tu navegador y míralo mientras escribes: no sale ninguna petición que lleve lo que has escrito.
Eso es lo que hace seguro pegar aquí justo aquello que de verdad quieres contar — el prompt de un cliente, un mensaje de sistema interno, un trozo de un documento privado — en vez de una versión saneada que de todos modos habría dado otro número. Tampoco se guarda nada: recarga la página y el campo está vacío, no hay historial ni queda nada que borrar.
Preguntas frecuentes
- ¿Un token es lo mismo que una palabra?
- No, y razonar como si lo fuera es la manera más común de equivocarse con un presupuesto. Una palabra inglesa frecuente suele ser un solo token, pero una palabra rara, un nombre o una errata son varios, una palabra lleva casi siempre el espacio anterior dentro del mismo token, y la puntuación y la sangría se cuentan como todo lo demás. Fuera del inglés el desajuste es mucho mayor, porque un token es una secuencia de bytes y un solo carácter son a menudo dos, tres o cuatro bytes antes de consultar tabla alguna.
- ¿Puedo dividir sin más el número de caracteres entre cuatro?
- Solo si escribes prosa en inglés y no te importa equivocarte por un buen margen. Esa cifra es un promedio sobre un tipo de texto en un idioma. El código fuente, las tablas, las listas de identificadores y todo lo escrito en otra escritura la rompen, y la rompen en la dirección que cuesta más y no menos. El número de esta página es el corte real hecho por la tabla real, así que no hay motivo para estimar cuando se puede medir.
- ¿Por qué el recuento no cambia cuando cambio de modelo?
- Porque esos dos modelos usan la misma codificación, y la codificación es la que hace el recuento. Es lo normal y no un fallo: un modelo más nuevo hereda muy a menudo la tabla de su predecesor, y varios modelos de un mismo fabricante comparten una. La codificación aparece junto al recuento precisamente por eso: si el nombre no cambia al cambiar de modelo, el número tampoco lo hará.
- ¿Por qué mi idioma cuesta muchos más tokens que el inglés?
- Dos razones que se acumulan. Las codificaciones trabajan sobre bytes UTF-8, y una letra fuera del alfabeto latino son dos, tres o cuatro bytes donde una latina es uno. Y las tablas se construyeron contando secuencias en un corpus abrumadoramente inglés, así que las palabras inglesas tienen entradas propias mientras que las de otros idiomas se arman a menudo con fragmentos. Una palabra hecha de tres fragmentos de tres bytes cada uno sale cara dos veces. Pega arriba texto tuyo y verás dónde queda de verdad tu idioma.
- ¿Por qué no hay ningún número para uno de los modelos de la lista?
- Porque su codificación no se ha publicado nunca, así que no hay tabla contra la que esta página — ni ninguna otra que se ejecute en tu navegador — pueda contar. Una página que enseña un número para un modelo así está pasando tu texto por la tabla de otro modelo y presentando una suposición como una medición. Esa suposición cuenta de menos, y cuenta de menos sobre todo con el código y con el texto que no está en inglés, que es justo donde necesitabas que acertara.
- ¿De dónde sale entonces el recuento exacto de ese modelo?
- Del propio servicio de conteo de tokens de quien fabrica el modelo. Es la única fuente que puede ser exacta, porque solo el fabricante tiene la tabla. Necesita una clave de API, que una página que se ejecuta entera en tu navegador no tiene manera de guardar y nunca debe pedirte, así que lo honesto que puede hacer esta página es decir adónde ir en vez de inventarse un número. Si ya llamas a ese modelo desde tu propio código, la misma clave que usas allí responderá también a esto.
- ¿Cuentan los espacios, los saltos de línea y la sangría?
- Sí, todos, y pueden sumar más de lo que la gente espera. El código sangrado, las líneas vacías entre párrafos y el relleno dentro de una tabla pegada son todos bytes, y las codificaciones sí tienen tokens para varios espacios de una vez, así que el coste no es un token por espacio, pero tampoco es nada. Si estás recortando un mensaje de sistema largo, vale la pena medir qué pasa al reformatearlo antes de empezar a quitar frases.
- ¿Se envía mi texto a un servidor?
- No. La tabla de la codificación que elegiste se descarga una vez desde este sitio, y a partir de ahí cada recuento se calcula en tu propio navegador, en un hilo en segundo plano. Abre tu panel de red y míralo mientras escribes: ninguna petición lleva lo que has escrito. Tampoco se guarda nada, así que recargar la página deja un campo vacío y nada que borrar.
- ¿Me dirá esto lo que cuesta mi prompt, o si cabe?
- Ninguna de las dos cosas, y las dos negativas son deliberadas. Un precio estaría caducado en unos meses y nada de aquí podría detectarlo, así que en su lugar se explica la aritmética y el precio se deja a la propia página del proveedor. Una ventana de contexto es una cifra móvil del mismo tipo, y que un texto quepa depende además de la respuesta, que esta página no puede ver. Lo que obtienes es el único número del que parten las dos preguntas, calculado con exactitud.
Herramientas relacionadas
- Longitud de texto
Cuenta caracteres, palabras y líneas, con soporte Unicode.
- Probador de regex
Prueba expresiones regulares — coincidencia, reemplazo y división.
- Comparador de textos
Compara dos textos — cada línea y palabra cambiada.
- Inspector de caracteres Unicode
Descubre exactamente de qué caracteres se compone un texto.