X (Twitter) Decodificador de Snowflake ID
Introducción
Cada publicación en X lleva un ID numérico, y ese número no es aleatorio. Desde noviembre de 2010, X construye los IDs de tweet en formato snowflake — un entero de 64 bits que empaqueta la hora exacta de publicación, la identidad de la máquina generadora y un contador de secuencia en un único número ordenable. El X (Twitter) Decodificador de Snowflake ID de Toollect desenvuelve ese número — pega un ID de tweet, 2089759704335482961, y devuelve el instante preciso de publicación, 18 de agosto de 2026 a las 17:01:54.028 UTC, junto con el número de worker, la secuencia y la estructura binaria completa del ID.
Pegar en su lugar un enlace de estado completo funciona igual — el descodificador extrae primero el ID de la URL, así que https://x.com/jack/status/2089759704335482961 y el número desnudo producen resultados idénticos. En ambos casos aparecen ocho filas de resultados mientras escribes — cuatro que describen cuándo (hora local, UTC, ISO 8601 y milisegundos Unix, más una antigüedad relativa compacta) y tres que describen lo que dicen los bits (worker ID, secuencia y el binario completo de 64 bits).
La descodificación es aritmética de bits pura, no una consulta. Nada se envía a X, no hace falta clave de API y no existe límite de peticiones — el cálculo corre en tu navegador mientras escribes, y el mismo ID se descodifica al mismo instante en cualquier lugar del mundo, para siempre.
Casos de uso
Un número que registra en secreto su propia hora de nacimiento resulta útil en más trabajos de los que cabría esperar.
Periodismo y verificación
Las capturas, los retuits y los citas despegan una publicación de su momento original. Descodificar el ID lo restaura — el milisegundo exacto de creación va escrito dentro del número, al margen de lo que afirme la página circundante. Los verificadores lo usan para establecer si una publicación precede o sigue al acontecimiento del que habla — el ID no se puede editar después, a diferencia del texto que lo rodea.
Análisis de datos y archivos
Ordenar IDs numéricamente es ordenar publicaciones cronológicamente — sin necesidad de columna de marca de tiempo. Los analistas que exportan IDs de tweet desde APIs o conjuntos de datos usan el descodificador para anclar esos IDs a fechas de calendario, detectar huecos de recogida y deduplicar archivos donde el mismo tweet llegó por varias formas de URL pero siempre llevaba el mismo número.
Moderación e investigación
Al revisar una oleada de actividad, la fila relativa da una idea inmediata de la escala — minutos frente a meses — sin leer marcas de tiempo en voz alta. Los investigadores que estudian patrones de borrado o comportamientos de republicación descodifican rangos de IDs para reconstruir líneas temporales que ya no existen públicamente.
Desarrolladores e integraciones
El código que almacena IDs de tweet suele necesitar una comprobación de cordura durante el desarrollo — ¿es esta constante realmente un ID plausible y qué momento reclama ser? Pegar el valor aquí responde con una pulsación, y copiar la salida ISO encaja directa en logs, fixtures o semillas de base de datos.
Cómo funciona
La herramienta trabaja mientras escribes — no hay botón que pulsar. Cada tecla recorre los mismos cuatro pasos:
- Clasificar la entrada — el texto se compara con dos formas — un snowflake desnudo de 15 a 19 dígitos o un enlace de estado de x.com/twitter.com que lo lleve. Cualquier otra cosa muestra el mensaje de entrada inválida.
- Extraer el ID — de una URL se ignora todo salvo la ruta de estado y el número — subdominios, variantes de vista como
/photo/1y parámetros de consulta jamás llegan al cálculo. - Descodificar los bits — desplazamientos BigInt sacan la marca de tiempo, el worker y la secuencia del entero de 64 bits, y se suma la época de Twitter para convertir el desfase bruto en una fecha real (la aritmética aparece en Cómo funciona la decodificación).
- Validar la ventana — un ID cuya hora descodificada cayera más de un minuto en el futuro se rechaza en lugar de mostrarse, de modo que los números tecleados al azar fallan ruidosamente en vez de producir una fecha absurda con total confianza.
Todo ocurre localmente en mucho menos de un milisegundo. La ventana de validación es el único juicio del proceso, y tira hacia el rechazo — un número que dice publicarse mañana no es un tuit.
Formatos de entrada admitidos
Dos familias de entrada se descodifican, y todo lo demás se rechaza con un mensaje claro. El contrato es deliberadamente estrecho — esta herramienta hace una cosa a un solo tipo de número.
Formatos aceptados
| Formato | Ejemplo | Detectado como |
|---|---|---|
| Snowflake desnudo | 2089759704335482961 |
ID de tweet |
| Enlace de estado | x.com/jack/status/2089759704335482961 |
URL → ID |
| Con protocolo y subdominio | https://www.twitter.com/jack/status/2089759704335482961/ |
URL → ID |
| Subdominio móvil | https://mobile.x.com/jack/status/2089759704335482961 |
URL → ID |
| Subdominio corto | m.twitter.com/jack/status/2089759704335482961 |
URL → ID |
| Variante de vista | x.com/jack/status/2089759704335482961/photo/1 |
URL → ID |
| Parámetros de rastreo | x.com/jack/status/2089759704335482961?s=20&t=abc |
URL → ID |
Ambos dominios — x.com y twitter.com — se comportan igual en todas las formas de host, el prefijo https:// es opcional, y las barras finales, las variantes de foto o vídeo y las cadenas de consulta se toleran y descartan. Llegue como llegue, el ID extraído es el mismo, así que la salida descodificada es idéntica byte a byte en las siete filas de la tabla.
Formatos rechazados
| Entrada | Por qué se rechaza |
|---|---|
x.com/jack/ |
Un perfil — sin ruta de estado, sin ID |
x.com/i/web/status/2089759704335482961 |
Ruta de la app web sin usuario — no tiene la forma {user}/status/{id} |
x.com/search?q=snowflake |
Una página de búsqueda — lleva una consulta, no un ID |
12345678901234 (14 dígitos) |
Demasiado corto — anterior al formato o truncado |
12345678901234567890 (20 dígitos) |
Demasiado largo — ningún valor que X haya emitido jamás |
| Un snowflake de Discord | Se descodifica sin error, pero con fecha equivocada — ver Lo que no hace |
Dos rechazos merecen explicación. La ruta de la app web x.com/i/web/status/… aparece cuando el cliente de página única reescribe direcciones internamente, pero omite el segmento del usuario, así que no encaja en la gramática de arriba — pega la forma canónica y el mismo ID se descodifica con normalidad. Y fíjate bien en la última fila — un ID de Discord pasa la comprobación de longitud y se descodifica a una fecha de aspecto plausible. El descodificador no puede detectarlo, y ese límite queda documentado con honestidad en lugar de maquillarse.
Anatomía de un Snowflake ID
Un snowflake es un entero de 64 bits cortado en cuatro campos. Leyendo desde el bit más significativo:
| Bits | Anchura | Campo | Significado |
|---|---|---|---|
| 63 | 1 | Signo | Siempre 0 — mantiene el valor positivo en lenguajes con signo |
| 62–22 | 41 | Marca de tiempo | Milisegundos desde la época de Twitter, el 04-11-2010 a las 01:42:54.657 UTC |
| 21–12 | 10 | Worker | Qué máquina generó el ID |
| 11–0 | 12 | Secuencia | Contador por máquina — el ID número N dentro del mismo milisegundo |
La época
Las marcas de tiempo no cuentan desde 1970 — cuentan desde el 4 de noviembre de 2010 a las 01:42:54.657 UTC, el momento en que el servicio snowflake sustituyó a los IDs secuenciales. Elegir una época fresca mantiene pequeño el campo de marca de tiempo — 41 bits guardan unos 2,2 billones de milisegundos, unos 69,7 años de margen. El formato, por tanto, no se agota hasta julio de 2080 — suficientemente lejos, y una de las razones por las que el campo no puede ensancharse sin romper todos los clientes existentes.
Un ejemplo trabajado
Toma el ID usado en todas las herramientas de X de este sitio — 2089759704335482961. Cortado por los límites de campo se lee de corrido cada valor que imprime el descodificador:
| Campo | Rango de bits | Binario | Descodificado |
|---|---|---|---|
| Marca de tiempo | 63–22 | 000111010000000001010001011000010000101011 |
2026-08-18T17:01:54.028Z |
| Worker | 21–12 | 0101111000 |
376 |
| Secuencia | 11–0 | 000001010001 |
81 |
El cero inicial de la fila de marca de tiempo es el bit de signo, siempre cero. Cada fila de salida sale de este único corte — los bits de marca de tiempo se convierten en el instante de publicación, el campo worker nombra a la máquina 376, y la secuencia muestra que fue el ID número 81 emitido por esa máquina en ese milisegundo.
Cuántos IDs caben
La secuencia de 12 bits permite hasta 4.096 IDs por máquina y milisegundo, y el campo worker de 10 bits nombra hasta 1.024 máquinas. En la práctica, la secuencia rara vez se acerca a su techo — existe para que nunca colisionen las ráfagas, no para el total. Dos IDs de la misma máquina en el mismo milisegundo se diferencian solo en esos doce bits bajos.
La cronología de los dígitos
Como la marca de tiempo ocupa los bits altos, el valor total crece sin pausa — el número de cifras decimales te dice aproximadamente cuándo se acuñó un ID:
| Cifras | Primera aparición | Época |
|---|---|---|
| 15 dígitos | 4 de noviembre de 2010 — día de lanzamiento | Los snowflakes más viejos |
| 16 dígitos | 6 de noviembre de 2010 | El volumen duplicó la cifra en cuestión de días |
| 17 dígitos | 1 de diciembre de 2010 | Un mes después |
| 18 dígitos | 7 de agosto de 2011 | El año del crecimiento |
| 19 dígitos | 25 de mayo de 2018 | Rango actual — los IDs de hoy empiezan por 2 |
Por esto el descodificador acepta de 15 a 19 dígitos y nada más — 15 cubre las primeras publicaciones de la era snowflake, 19 todo lo acuñado desde 2018, y ningún ID legítimo de tweet ha salido jamás de ese intervalo.
Cómo funciona la decodificación
Las matemáticas son tres operaciones — un desplazamiento, dos máscaras y una suma:
const TWEET_EPOCH = 1288834974657n; // 2010-11-04T01:42:54.657Z en ms Unix
timestampMs = Number((id >> 22n) + TWEET_EPOCH);
workerId = Number((id >> 12n) & 1023n); // los 10 bits bajos del campo intermedio
sequence = Number(id & 4095n); // los 12 bits bajos
Desplazar 22 bits a la derecha descarta los campos de worker y secuencia y deja el desfase de marca de tiempo desde la época propia; sumar la época lo convierte en milisegundos Unix corrientes. Las máscaras aíslan después los dos campos bajos — & 1023 conserva diez bits, & 4095 doce. Trabajando el ejemplo de nuevo, 2089759704335482961 desplazado da un desfase de 498237539371 milisegundos, que sumado a la época es 1787072514028, es decir 2026-08-18T17:01:54.028Z; el worker enmascarado es 376 y la secuencia 81.
Dos detalles de precisión importan. Primero, la herramienta opera toda la aritmética en BigInt, porque un ID de 19 dígitos excede el rango entero seguro de JavaScript (9.007.199.254.740.991) y un número normal redondearía silenciosamente los bits bajos — corrompiendo justo los valores de worker y secuencia que la herramienta informa. Segundo, una vez convertido, la marca de tiempo resultante cabe holgada en el rango seguro, así que presentarla como número ordinario para Date no pierde nada.
Una cosa más que conviene saber — otras plataformas cortan esos mismos 22 bits bajos de forma distinta, y los descodificadores genéricos suelen etiquetarlos con los nombres de campo de otro sistema:
| Plataforma | 22 bits bajos | Especificación publicada |
|---|---|---|
| X / Twitter | Worker de 10 bits + secuencia de 12 bits | Definición de la era del blog; nunca documentada más allá |
| Discord | Worker de 5 bits + proceso de 5 bits + incremento de 12 bits | Documentación oficial |
| Mismo corte que X, otra época y codificación base-64 | Ingeniería inversa comunitaria |
Si una herramienta te enseña tu ID de tweet partido en workerOrShard y processId, está aplicando las etiquetas de Discord a los bits de X — los números se calculan, pero un tweet no tiene campo de proceso, y los doce bits bajos son un contador de secuencia, no un identificador de proceso. Este descodificador se atiene a los campos que X define de verdad.
Uso
Cuatro pasos, sin botones:
- Pega tu entrada — un ID de tweet desnudo o cualquier enlace de estado de x.com/twitter.com en las formas listadas arriba.
- Lee el grupo de tiempos — hora local, UTC, ISO 8601 y milisegundos Unix se rellenan al instante, y la fila relativa da la antigüedad de un vistazo.
- Lee el grupo de anatomía — worker ID, secuencia y el binario agrupado muestran cómo está construido el número.
- Copia lo que necesites — cada fila tiene su botón de copia; la fila ISO encaja limpia en hojas de cálculo y logs.
La entrada inválida vacía las filas y muestra una única línea de error; corregir la entrada borra el error igual de automáticamente.
Tutorial
Recorre una descodificación de principio a fin.
Paso 1 — Descodificar un ID desnudo. Pega 2089759704335482961 en la entrada. El grupo de tiempos se rellena al momento — fila ISO 2026-08-18T17:01:54.028Z, fila Unix 1787072514028 — y el grupo de anatomía informa worker 376, secuencia 81, con el binario en sus grupos 42/10/12.
Paso 2 — Descodificar desde un enlace completo. Vacía la entrada y pega https://x.com/jack/status/2089759704335482961?s=20&t=abc. Los parámetros de rastreo no cambian nada — cada fila se lee idéntica al paso 1, porque solo la ruta de estado y el ID sobreviven a la extracción.
Paso 3 — Confirmar la independencia de dominio. Pega https://www.twitter.com/someone/status/2089759704335482961/ — el dominio antiguo con prefijo de usuario y barra final. Mismo ID, misma marca de tiempo. Llegue el link como llegue, el número que lleva dentro es la única fuente de verdad.
Paso 4 — Ver fracasar un ID imposible. Pega 20 — el ID del primer tuit publicado, de la era previa al snowflake. El descodificador lo rechaza — dos cifras no pueden llevar una marca de tiempo codificada, porque ese ID se emitió años antes de que existiera el formato. El rechazo es correcto, no un fallo.
Paso 5 — Llevar la salida a donde sirve. Pulsa el botón de copiar de la fila ISO y pégalo en una celda de hoja de cálculo — 2026-08-18T17:01:54.028Z se ordena cronológicamente como texto, sobrevive a los viajes de ida y vuelta en CSV y no necesita contexto de zona horaria para interpretarse.
Consejos pro
- Ordenar por ID es ordenar por tiempo. Dondequiera que los IDs de tweet vivan en una columna — exportaciones, bases de datos, logs — el orden por ID es el orden cronológico. El descodificador te ayuda a etiquetar ese orden con fechas reales.
- Prefiere la fila ISO para almacenar. La hora local depende de los ajustes del dispositivo de quien lee; ISO 8601 con el sufijo
Zes inequívoca en todas partes y se ordena bien como texto plano. - UTC para equipos entre zonas horarias. Cuando un archivo abarca continentes, acordad la fila UTC y nadie discutirá si la publicación cruzó la medianoche.
- Usa la fila relativa para triar. Repasando un lote de IDs, la antigüedad compacta —
3h,2d,5mo— separa lo fresco de lo antiguo más rápido que leyendo fechas completas. - La fila binaria es material didáctico. Enseñar a alguien exactamente qué bits son la marca de tiempo hace clic en el formato entero más rápido que cualquier diagrama.
- Empareja con el analizador de URLs. El analizador limpia y canoniza enlaces; el descodificador les pone fecha. Pasa el mismo enlace de estado por ambos y sales con una URL ordenada y una marca de tiempo verificada.
Alternativas
¿De qué otras maneras puede un ID de tweet convertirse en fecha?
| Método | Campos correctos de X | Necesita API/clave | Sube tus datos |
|---|---|---|---|
| Desplazamiento de bits manual | Posible, propenso a errores | No | No |
| Snippet de consola del navegador | Si lo escribes bien | No | No |
| Descodificadores snowflake genéricos | A menudo etiquetados para Discord | A veces | Sí, normalmente |
| Programarte la matemáticas tú mismo | Sí, con cuidado | No | No |
| Esta herramienta | Sí — worker + secuencia | No | No |
Descodificar a mano son potencias de dos y cadenas binarias largas — viable una vez, tedioso para siempre, y un bit deslizado arruina la fecha. Los descodificadores online genéricos apuntan a menudo primero a Discord, etiquetan mal los campos de X y a veces se equivocan de época, y suelen enviar el ID a un servidor. Esta herramienta ejecuta la aritmética exacta en local, etiqueta los campos como X los define y rechaza entradas imposibles en vez de mostrar un año erróneo con total seguridad.
Frente a las APIs oficiales
Leer una hora de creación es la tarea rara en que la vía oficial es estrictamente peor:
| Capacidad | API v2 de X | oEmbed | Esta herramienta |
|---|---|---|---|
| Marca de tiempo exacta de publicación | Sí (created_at) |
No legible por máquina | Sí, exacta |
| Coste | Pago por uso, sin capa gratuita | Gratis | Gratis |
| Autenticación | Requerida | Ninguna | Ninguna |
| Desglose de worker y secuencia | No | No | Sí |
| Límites de peticiones | Sí | Sin documentar, limitada en la práctica | Ninguno — cero peticiones |
Desde febrero de 2026, la API de X es de pago por uso sin capa gratuita, así que obtener created_at de un solo tweet cuesta dinero y exige credenciales registradas. oEmbed devuelve HTML renderizado para incrustar, sin campo estructurado de marca de tiempo que se pueda analizar con fiabilidad. La aritmética snowflake entrega el mismo milisegundo gratis, sin conexión y para siempre — el precio es que no revela nada más allá del propio número, que es precisamente el límite documentado abajo.
Decodificador vs. analizador de URLs
Toollect publica dos herramientas de X que leen enlaces de estado y conocen los IDs snowflake. Responden a preguntas distintas:
| Pregunta | Analizador de URLs de X | Este descodificador |
|---|---|---|
| ¿Qué tipo de enlace es? | Todos los tipos — tuit, perfil, space, lista, hashtag, búsqueda | Solo — ¿lleva un ID de estado? |
| Limpiar y canonizar la URL | Sí, con lista de parámetros eliminados | Innecesario — no se reconstruye nada |
| Extraer el ID de tweet | Sí | Sí |
| Descodificar la marca de tiempo | No — valida solo la forma | Sí — el trabajo entero |
| Desglose de worker y secuencia | No | Sí |
| Otras rutas (perfiles, spaces, listas) | Analizadas con tipo y detalle | Rechazadas como inválidas |
El analizador es el generalista de los enlaces; el descodificador, el especialista en números. Que acepte URLs completas es una comodidad — en cuanto un enlace necesita limpieza, escritura o explicación, es territorio del analizador, y ambas herramientas se pasan el testigo limpiamente en el ID.
Lo que no hace
Merece la pena nombrar los límites para que nadie confíe de más en el descodificador:
- No consulta nada. Cero peticiones — la herramienta no puede ver si el tweet sigue existiendo, quién lo escribió ni qué dice. Del ID solo sale lo que se horneó en él al nacer.
- No puede invertir la conversión. Devolver una fecha a un ID fabrica un número que ningún tweet recibió jamás — abre
x.com/i/status/{fabricado}y X contesta que la página no existe. Los IDs sintéticos sirvieron solo como umbrales de paginación en la antigua API gratuita; en la web de hoy, los operadores de búsqueda por fecha hacen ese trabajo directamente. - No distingue plataformas. Un snowflake de Discord comparte la estructura y se descodifica aquí sin error — a una fecha unos cuatro años prematura, porque Discord cuenta desde 2015. Si la entrada vino de otra plataforma, considera la salida incorrecta por construcción.
- No descodifica IDs anteriores a 2010. Los tweets más viejos que el servicio snowflake llevan números secuenciales pequeños sin reloj incrustado — sencillamente no hay nada que descodificar.
- No adivina. Una entrada que encaje con ninguna forma aceptada muestra el mensaje de error en lugar de un resultado parcial.
Solución de problemas
| Problema | Causa | Solución |
|---|---|---|
| Un número largo muestra el error | No tiene 15–19 dígitos o contiene caracteres que no son dígitos | Copia el ID completo — las celdas de hoja de cálculo a veces truncan cifras iniciales o añaden separadores |
| Un enlace muestra el error | A la URL le falta la forma {user}/status/{id} |
Comprueba si es la forma de la app web x.com/i/web/status/… — pega en su lugar el enlace canónico con el perfil |
| Un ID de mensaje de Discord se descodifica sin problema | Misma distribución de bits, otra época — la herramienta no distingue plataformas | Considera el resultado incorrecto; este descodificador es de X por diseño |
| La marca de tiempo parece estar años desviada | Probablemente el caso anterior — un snowflake de otra plataforma | Verifica el origen del ID antes de fiarte de la fecha |
| La fila relativa muestra una brecha enorme | ID muy reciente o relojes del sistema ligeramente distintos | El valor relativo compara contra el reloj de tu dispositivo — para registros fíate de las filas absolutas |
| El ID se descodifica pero el tweet ya no está | El borrado es invisible para la aritmética sin conexión | La marca de tiempo sigue siendo historia válida — la existencia exige comprobar X |
Privacidad y manejo de datos
Este descodificador opera bajo el modelo de privacidad más estricto del sitio — no realiza ninguna petición de red.
- Nada se sube. Descodificar es aritmética de bits en tu navegador. El ID o enlace que peges jamás llega a servidor alguno.
- Sin cuenta, sin analítica, sin scripts de terceros. La página ejecuta solo su propio código.
- Nada se guarda. Sin cookies, sin estado entre visitas — cierra la pestaña y la sesión desaparece.
Para flujos de trabajo con IDs de archivos privativos, conjuntos de investigación o colas de moderación, la descodificación ocurre por completo en tu dispositivo.
Especificaciones técnicas
Detalles:
- Formato — snowflake de 64 bits — signo (1 bit) + marca de tiempo (41 bits, ms desde
2010-11-04T01:42:54.657Z) + worker (10 bits) + secuencia (12 bits) - Precisión — aritmética BigInt en todo el proceso; resultados exactos para todos los IDs de 19 dígitos fuera del rango entero seguro de JavaScript
- Ventana de validación — la hora descodificada no puede superar la hora actual en más de 60 segundos; los valores anteriores a la época son inalcanzables con 15+ dígitos
- Formatos de entrada —
\d{15,19}desnudo, o URLs de estado de x.com/twitter.com con protocolo opcional, subdominioswww./mobile./m., variantes de vista y cadenas de consulta - Salida — hora local, cadena UTC, ISO 8601, milisegundos Unix, antigüedad relativa, worker ID, secuencia, binario de 64 bits agrupado — cada fila copiable individualmente
- Procesamiento — JavaScript 100 % del lado del cliente, cero peticiones de red, sin clave de API, sin componente de servidor
- Compatibilidad — todos los navegadores modernos (BigInt y Clipboard API)
Características
- Descodifica cualquier ID snowflake de X o Twitter en su momento exacto de publicación, al milisegundo
- Acepta IDs de tweet sueltos y enlaces de estado completos de x.com o twitter.com — el ID se extrae automáticamente
- Presenta el momento descodificado de cuatro formas — hora local, UTC, ISO 8601 y milisegundos Unix
- Divide el ID en sus partes — worker ID, contador de secuencia y la descomposición binaria completa de 64 bits
- Rechaza valores imposibles — los IDs con fecha futura muestran un error en lugar de una suposición
- Funciona íntegramente en tu navegador sin peticiones de red — sin clave de API ni cuenta
- Copia con un clic en cada fila de resultados