X (Twitter) Decodificatore di Snowflake ID
Introduzione
Ogni post su X porta un ID numerico, e quel numero non è casuale. Dal novembre 2010 X costruisce gli ID dei tweet nel formato snowflake — un intero a 64 bit che impacchetta l'ora esatta di pubblicazione, l'identità della macchina generatrice e un contatore di sequenza in un unico numero ordinabile. Il X (Twitter) Decodificatore di Snowflake ID di Toollect spacca quel numero — incolla un ID di tweet, 2089759704335482961, e restituisce l'istante preciso di pubblicazione, 18 agosto 2026 alle 17:01:54.028 UTC, insieme al numero di worker, alla sequenza e alla struttura binaria completa dell'ID.
Incollare invece un link di stato completo funziona allo stesso modo — il decodificatore estrae prima l'ID dalla URL, così https://x.com/jack/status/2089759704335482961 e il numero nudo producono risultati identici. In entrambi i casi appaiono otto righe di risultato mentre scrivi — quattro che descrivono quando (ora locale, UTC, ISO 8601 e millisecondi Unix, più un'età relativa compatta) e tre che descrivono cosa dicono i bit (worker ID, sequenza e il binario completo a 64 bit).
La decodifica è aritmetica di bit pura, non una consultazione. Nulla viene inviato a X, non serve chiave API e non esiste limite di richieste — il calcolo gira nel tuo browser mentre scrivi, e lo stesso ID si decodifica nello stesso istante ovunque nel mondo, per sempre.
Casi d'uso
Un numero che registra di nascosto il proprio momento di nascita si rivela utile in più lavori di quanti ci si aspetterebbe.
Giornalismo e verifica
Screenshot, repost e citazioni staccano un post dal suo ritmo originale. Decodificare l'ID lo ripristina — il millisecondo esatto della creazione è scritto dentro il numero, indipendentemente da ciò che la pagina intorno sostiene. I fact-checker lo usano per stabilire se un post precede o segue l'evento di cui parla — l'ID non si può modificare dopo, a differenza del testo attorno.
Analisi dei dati e archivi
Ordinare gli ID numericamente significa ordinare i post cronologicamente — senza bisogno di una colonna di timestamp. Gli analisti che esportano ID di tweet da API o dataset usano il decodificatore per ancorare quegli ID a date di calendario, individuare buchi di raccolta e deduplicare archivi dove lo stesso tweet è arrivato attraverso più forme di URL ma portava sempre lo stesso numero.
Moderazione e ricerca
Esaminando un'onda di attività, la riga relativa dà subito un senso della scala — minuti contro mesi — senza leggere i timestamp ad alta voce. I ricercatori che studiano i pattern di cancellazione o i comportamenti di ripubblicazione decodificano intervalli di ID per ricostruire linee temporali che non esistono più pubblicamente.
Sviluppatori e integrazioni
Il codice che memorizza ID di tweet spesso ha bisogno di un controllo di sanità durante lo sviluppo — questa costante è davvero un ID plausibile, e quale momento dichiara di essere? Incollare il valore qui risponde con una pressione, e copiare l'output ISO scende dritto in log, fixture o semi di database.
Come funziona
Lo strumento lavora mentre scrivi — non c'è nessun bottone. Ogni tasto percorre gli stessi quattro passaggi:
- Classificare l'input — il testo viene confrontato con due forme — uno snowflake nudo di 15-19 cifre o un link di stato x.com/twitter.com che lo porta. Tutto il resto mostra il messaggio di input non valido.
- Estrarre l'ID — da una URL viene ignorato tutto tranne la rotta di stato e il numero — sottodomini, varianti di vista come
/photo/1e parametri di query non raggiungono mai il calcolo. - Decodificare i bit — spostamenti BigInt tirano fuori timestamp, worker e sequenza dall'intero a 64 bit, e l'epoca di Twitter viene aggiunta per trasformare l'offset grezzo in una data vera — l'aritmetica è posata nel capitolo Come funziona la decodifica.
- Validare la finestra — un ID il cui tempo decodificato cadde oltre un minuto nel futuro viene rifiutato invece che mostrato, così i numeri digitati male o inventati falliscono rumorosamente invece di produrre una data assurda in tutta sicurezza.
Tutto accade localmente in ben meno di un millisecondo. La finestra di validazione è l'unico giudizio del flusso, e pende verso il rifiuto — un numero che dice di essere pubblicato domani non è un tweet.
Formati di input supportati
Due famiglie di input si decodificano, e tutto il resto viene rifiutato con un messaggio chiaro. Il contratto è volutamente stretto — questo strumento fa una cosa a un solo genere di numero.
Formati accettati
| Formato | Esempio | Rilevato come |
|---|---|---|
| Snowflake nudo | 2089759704335482961 |
ID di tweet |
| Link di stato | x.com/jack/status/2089759704335482961 |
URL → ID |
| Con protocollo e sottodominio | https://www.twitter.com/jack/status/2089759704335482961/ |
URL → ID |
| Sottodominio mobile | https://mobile.x.com/jack/status/2089759704335482961 |
URL → ID |
| Sottodominio corto | m.twitter.com/jack/status/2089759704335482961 |
URL → ID |
| Variante di vista | x.com/jack/status/2089759704335482961/photo/1 |
URL → ID |
| Parametri di tracciamento | x.com/jack/status/2089759704335482961?s=20&t=abc |
URL → ID |
Entrambi i domini — x.com e twitter.com — si comportano identicamente su tutte le forme di host, il prefisso https:// è facoltativo, e barre finali, varianti foto o video e stringhe di query vengono tollerate e scartate. Arrivi come arrivi, l'ID estratto è lo stesso — l'output decodificato è identico al byte sulle sette righe della tabella.
Formati rifiutati
| Input | Perché viene rifiutato |
|---|---|
x.com/jack/ |
Un profilo — nessuna rotta di stato, nessun ID |
x.com/i/web/status/2089759704335482961 |
Rotta dell'app web senza nome utente — non ha la forma {user}/status/{id} |
x.com/search?q=snowflake |
Una pagina di ricerca — porta una query, non un ID |
12345678901234 (14 cifre) |
Troppo corto — anteriore al formato o troncato |
12345678901234567890 (20 cifre) |
Troppo lungo — nessun valore mai emesso da X |
| Uno snowflake di Discord | Si decodifica senza errori, ma con una data sbagliata — vedi Cosa non fa |
Due rifiuti meritano una spiegazione. La rotta dell'app web x.com/i/web/status/… appare quando il client a pagina singola riscrive internamente gli indirizzi, ma omette il segmento del nome utente, quindi non entra nella grammatica sopra — incolla la forma canonica e lo stesso ID si decodifica normalmente. E guarda bene l'ultima riga — un ID di Discord supera il controllo di lunghezza e si decodifica verso una data di aspetto plausibile. Il decodificatore non può individuarlo, e quel limite è documentato onestamente invece di essere truccato.
Anatomia di un Snowflake ID
Uno snowflake è un intero a 64 bit tagliato in quattro campi. Leggendo dal bit più significativo:
| Bit | Larghezza | Campo | Significato |
|---|---|---|---|
| 63 | 1 | Segno | Sempre 0 — mantiene il valore positivo nei linguaggi con segno |
| 62–22 | 41 | Timestamp | Millisecondi dall'epoca di Twitter, 04/11/2010 alle 01:42:54.657 UTC |
| 21–12 | 10 | Worker | Quale macchina ha generato l'ID |
| 11–0 | 12 | Sequenza | Contatore per macchina — l'N-esimo ID nello stesso millisecondo |
L'epoca
I timestamp non contano dal 1970 — contano dal 4 novembre 2010 alle 01:42:54.657 UTC, il momento in cui il servizio snowflake ha sostituito gli ID sequenziali. Scegliere un'epoca fresca tiene piccolo il campo del timestamp — 41 bit contengono circa 2.200 miliardi di millisecondi, circa 69,7 anni di margine. Il formato quindi si esaurisce solo nel luglio 2080 — comodamente lontano, e uno dei motivi per cui il campo non può essere allargato senza rompere tutti i client esistenti.
Un esempio lavorato
Prendi l'ID usato in tutti gli strumenti X di questo sito — 2089759704335482961. Tagliato ai confini dei campi, si legge a colpo d'occhio ogni valore che il decodificatore stampa:
| Campo | Intervallo di bit | Binario | Decodificato |
|---|---|---|---|
| Timestamp | 63–22 | 000111010000000001010001011000010000101011 |
2026-08-18T17:01:54.028Z |
| Worker | 21–12 | 0101111000 |
376 |
| Sequenza | 11–0 | 000001010001 |
81 |
Lo zero iniziale nella riga del timestamp è il bit del segno, sempre zero. Ogni riga di output deriva da questo unico taglio — i bit del timestamp diventano l'istante di pubblicazione, il campo worker nomina la macchina 376, e la sequenza mostra che era l'ID numero 81 coniato da quella macchina in quel millisecondo.
Quantità di ID che ci stanno
La sequenza a 12 bit consente fino a 4.096 ID per macchina al millisecondo, e il campo worker a 10 bit nomina fino a 1.024 macchine. In pratica, la sequenza sale raramente vicino al suo tetto — esiste perché le raffiche, non il totale, non collidano mai. Due ID della stessa macchina nello stesso millisecondo differiscono solo in questi dodici bit bassi.
La cronologia delle cifre
Poiché il timestamp occupa i bit alti, il valore totale cresce senza sosta — il numero di cifre decimali dice più o meno quando un ID è stato coniato:
| Cifre | Prima comparsa | Era |
|---|---|---|
| 15 cifre | 4 novembre 2010 — giorno del lancio | I più vecchi snowflake |
| 16 cifre | 6 novembre 2010 | Il volume ha raddoppiato il conteggio in pochi giorni |
| 17 cifre | 1 dicembre 2010 | A un mese dall'inizio |
| 18 cifre | 7 agosto 2011 | L'anno della crescita |
| 19 cifre | 25 maggio 2018 | Intervallo attuale — gli ID di oggi iniziano con 2 |
Per questo il decodificatore accetta da 15 a 19 cifre e nient'altro — 15 copre i primissimi post dell'era snowflake, 19 tutto ciò che è stato coniato dal 2018, e nessun ID legittimo di tweet è mai uscito da quell'intervallo.
Come funziona la decodifica
La matematica sono tre operazioni — uno spostamento, due maschere e una somma:
const TWEET_EPOCH = 1288834974657n; // 2010-11-04T01:42:54.657Z in ms Unix
timestampMs = Number((id >> 22n) + TWEET_EPOCH);
workerId = Number((id >> 12n) & 1023n); // i 10 bit bassi del campo centrale
sequence = Number(id & 4095n); // i 12 bit bassi
Spostare di 22 bit a destra butta via i campi worker e sequenza e lascia l'offset del timestamp dall'epoca propria; aggiungere l'epoca lo converte in normali millisecondi Unix. Le maschere isolano poi i due campi bassi — & 1023 conserva dieci bit, & 4095 dodici. Rielaborando l'esempio, 2089759704335482961 spostato dà un offset di 498237539371 millisecondi, che sommato all'epoca vale 1787072514028, cioè 2026-08-18T17:01:54.028Z; il worker mascherato è 376 e la sequenza 81.
Due dettagli di precisione contano. Primo, lo strumento fa tutta l'aritmetica in BigInt, perché un ID a 19 cifre supera l'intervallo intero sicuro di JavaScript (9.007.199.254.740.991) e un numero normale arrotonderebbe silenziosamente i bit bassi — corrompendo proprio i valori di worker e sequenza che lo strumento riporta. Secondo, una volta convertito, il timestamp risultante sta comodamente nell'intervallo sicuro, così presentarlo come numero ordinario a Date non perde nulla.
Un'altra cosa che vale la pena sapere — altre piattaforme tagliano quegli stessi 22 bit bassi diversamente, e i decodificatori generici li etichettano spesso con i nomi dei campi di un altro sistema:
| Piattaforma | 22 bit bassi | Specifica pubblicata |
|---|---|---|
| X / Twitter | Worker a 10 bit + sequenza a 12 bit | Definizione dell'era del blog; mai documentata oltre |
| Discord | Worker a 5 bit + processo a 5 bit + incremento a 12 bit | Documentazione ufficiale |
| Stesso taglio di X, altra epoca e codifica base-64 | Reverse engineering della community |
Se uno strumento ti mostra il tuo ID di tweet diviso tra workerOrShard e processId, sta applicando le etichette di Discord ai bit di X — i numeri si calcolano, ma un tweet non ha un campo processo, e i dodici bit bassi sono un contatore di sequenza, non un identificativo di processo. Questo decodificatore resta sui campi che X definisce davvero.
Uso
Quattro passaggi, nessun bottone:
- Incolla il tuo input — un ID di tweet nudo, o qualsiasi link di stato x.com/twitter.com nelle forme elencate sopra.
- Leggi il gruppo dei tempi — ora locale, UTC, ISO 8601 e millisecondi Unix si riempiono all'istante, e la riga relativa dà l'età a colpo d'occhio.
- Leggi il gruppo dell'anatomia — worker ID, sequenza e il binario raggruppato mostrano com'è costruito il numero.
- Copia ciò che ti serve — ogni riga ha il suo pulsante di copia; la riga ISO scende pulita in fogli di calcolo e log.
L'input invalido svuota le righe e mostra una singola riga di errore; correggere l'input cancella l'errore con la stessa automaticità.
Tutorial
Percorri una decodifica dall'inizio alla fine.
Passaggio 1 — Decodificare un ID nudo. Incolla 2089759704335482961 nell'input. Il gruppo dei tempi si riempie subito — riga ISO 2026-08-18T17:01:54.028Z, riga Unix 1787072514028 — e il gruppo dell'anatomia riporta worker 376, sequenza 81, con il binario nei suoi gruppi 42/10/12.
Passaggio 2 — Decodificare da un link completo. Svuota l'input e incolla https://x.com/jack/status/2089759704335482961?s=20&t=abc. I parametri di tracciamento non cambiano nulla — ogni riga si legge identica al passaggio 1, perché solo la rotta di stato e l'ID sopravvivono all'estrazione.
Passaggio 3 — Confermare l'indipendenza dal dominio. Incolla https://www.twitter.com/someone/status/2089759704335482961/ — il vecchio dominio con prefisso del nome utente e barra finale. Stesso ID, stesso timestamp. Come arriva il link, il numero che porta dentro è l'unica fonte di verità.
Passaggio 4 — Vedere fallire un ID impossibile. Incolla 20 — l'ID del primo tweet mai pubblicato, dall'era precedente allo snowflake. Il decodificatore lo rifiuta — due cifre non possono portare un timestamp codificato, perché quell'ID fu emesso anni prima che il formato esistesse. Il rifiuto è corretto, non un bug.
Passaggio 5 — Portare l'output dove serve. Premi il pulsante di copia della riga ISO e incolla in una cella del foglio di calcolo — 2026-08-18T17:01:54.028Z si ordina cronologicamente come testo, sopravvive ai viaggi di andata e ritorno CSV e non ha bisogno di contesto di fuso orario per essere letto.
Consigli pro
- Ordinare per ID è ordinare per tempo. Ovunque gli ID di tweet vivano in una colonna — esportazioni, database, log — l'ordine per ID è l'ordine cronologico. Il decodificatore aiuta a etichettare quell'ordine con date vere.
- Preferisci la riga ISO per l'archiviazione. L'ora locale dipende dalle impostazioni del dispositivo di chi legge; ISO 8601 con il suffisso
Zè inequivocabile ovunque e si ordina bene come testo semplice. - UTC per i team tra fusi orari. Quando un archivio copre continenti, mettetevi d'accordo sulla riga UTC e nessuno discuterà se il post ha attraversato la mezzanotte.
- Usa la riga relativa per il triage. Ripassando un lotto di ID, l'età compatta —
3h,2d,5mo— separa il fresco dal vecchio più veloce che leggere date complete. - La riga binaria è materiale didattico. Mostrare a qualcuno quali bit sono esattamente il timestamp fa scattare tutto il formato più veloce di qualunque diagramma.
- Abbinalo al parser di URL. Il parser pulisce e canonizza i link; il decodificatore li data. Passa lo stesso link di stato per entrambi ed esci con una URL ordinata e un timestamp verificato.
Alternative
In quali altri modi un ID di tweet può diventare una data?
| Metodo | Campi X corretti | Serve API/chiave | Carica i tuoi dati |
|---|---|---|---|
| Spostamento di bit manuale | Possibile, soggetto a errori | No | No |
| Snippet console del browser | Se lo scrivi bene | No | No |
| Decodificatori snowflake generici | Spesso etichettati Discord | A volte | Sì, di solito |
| Scriptare la matematica da te | Sì, con cura | No | No |
| Questo strumento | Sì — worker + sequenza | No | No |
Decodificare a mano significa potenze del due e lunghe catene binarie — fattibile una volta, tedioso per sempre, e un bit slittato rovina la data. I decodificatori online generici puntano spesso prima a Discord, etichettano male i campi X e a volte sbagliano epoca, e comunemente inviano l'ID a un server. Questo strumento esegue l'aritmetica esatta in locale, etichetta i campi come X li definisce e rifiuta gli input impossibili invece di mostrare un anno falso in tutta sicurezza.
Contro le API ufficiali
Leggere un'ora di creazione è il raro caso in cui la via ufficiale è strettamente peggiore:
| Capacità | API v2 di X | oEmbed | Questo strumento |
|---|---|---|---|
| Timestamp esatto di pubblicazione | Sì (created_at) |
Non leggibile dalla macchina | Sì, esatto |
| Costo | Pagamento per uso, nessun piano gratuito | Gratuito | Gratuito |
| Autenticazione | Richiesta | Nessuna | Nessuna |
| Dettaglio worker e sequenza | No | No | Sì |
| Limiti di richieste | Sì | Non documentati, limitati in pratica | Nessuno — zero richieste |
Dal febbraio 2026, l'API di X è a pagamento per uso senza piano gratuito — ottenere created_at anche per un solo tweet costa denaro ed exige credenziali registrate. oEmbed restituisce HTML renderizzato per l'incorporamento, senza un campo di timestamp strutturato analizzabile in modo affidabile. L'aritmetica snowflake consegna lo stesso millisecondo gratis, offline e per sempre — il prezzo è che non rivela nulla oltre il numero stesso, precisamente il limite documentato sotto.
Decodificatore vs. parser di URL
Toollect spedisce due strumenti X che leggono entrambi link di stato e conoscono entrambi gli ID snowflake. Rispondono a domande diverse:
| Domanda | Parser di URL X | Questo decodificatore |
|---|---|---|
| Che tipo di link è? | Tutti i tipi — tweet, profilo, space, lista, hashtag, ricerca | Solo — porta un ID di stato? |
| Pulire e canonizzare l'URL | Sì, con elenco dei parametri rimossi | Non serve — niente viene ricostruito |
| Estrarre l'ID del tweet | Sì | Sì |
| Decodificare il timestamp | No — valida solo la forma | Sì — tutto il lavoro |
| Dettaglio worker e sequenza | No | Sì |
| Altre rotte (profili, space, liste) | Analizzate con tipo e dettaglio | Rifiutate come invalide |
Il parser è il generalista dei link; il decodificatore, lo specialista dei numeri. La sua accettazione di URL complete è una comodità — appena un link chiede pulizia, digitazione o spiegazione, è territorio del parser, e i due strumenti si passano il testimone pulitamente all'ID.
Cosa non fa
I limiti valgono la pena di essere nominati perché il decodificatore non venga mai fidato troppo:
- Non va a prendere nulla. Zero richieste — lo strumento non può vedere se il tweet esiste ancora, chi l'ha scritto o cosa dice. Dall'ID esce solo ciò che vi è stato infornato alla nascita.
- Non può invertire la conversione. Riportare una data a un ID fabbrica un numero che nessun tweet ha mai ricevuto — apri
x.com/i/status/{fabbricato}e X risponde che la pagina non esiste. Gli ID sintetici hanno servito solo come soglie di paginazione nella vecchia API gratuita; sul web di oggi, gli operatori di ricerca per data fanno quel lavoro direttamente. - Non distingue le piattaforme. Uno snowflake di Discord condivide la struttura e qui si decodifica senza errori — a una data in anticipo di circa quattro anni, perché Discord conta dal 2015. Se l'input viene da un'altra piattaforma, considera l'output sbagliato per costruzione.
- Non decodifica gli ID anteriori al 2010. I tweet più vecchi del servizio snowflake portano piccoli numeri sequenziali senza orologio incorporato — letteralmente non c'è niente da decodificare.
- Non indovina. Un input che non corrisponde a nessuna forma accettata mostra il messaggio di errore invece di un risultato parziale.
Risoluzione dei problemi
| Problema | Causa | Soluzione |
|---|---|---|
| Un numero lungo mostra l'errore | Non ha 15-19 cifre o contiene caratteri non numerici | Copia l'ID completo — le celle dei fogli di calcolo a volte troncano le cifre iniziali o aggiungono separatori |
| Un link mostra l'errore | All'URL manca la forma {user}/status/{id} |
Controlla se è la forma app web x.com/i/web/status/… — incolla invece il link canonico con il profilo |
| Un ID di messaggio di Discord si decodifica senza problemi | Stessa suddivisione di bit, altra epoca — lo strumento non distingue le piattaforme | Considera il risultato scorretto; questo decodificatore è per X per progetto |
| Il timestamp sembra sfalsato di anni | Probabilmente il caso sopra — uno snowflake di un'altra piattaforma | Verifica la provenienza dell'ID prima di fidarti della data |
| La riga relativa mostra un divario enorme | ID molto recente o orologi di sistema leggermente diversi | Il valore relativo confronta con l'orologio del tuo dispositivo — per i registri affidati alle righe assolute |
| L'ID si decodifica ma il tweet è sparito | La cancellazione è invisibile all'aritmetica offline | Il timestamp resta storia valida — l'esistenza richiede di controllare X |
Privacy e gestione dei dati
Questo decodificatore opera sotto il modello di privacy più rigoroso del sito — non effettua nessuna richiesta di rete.
- Nulla viene caricato. Decodificare è aritmetica di bit nel tuo browser. L'ID o il link che incolli non raggiunge mai alcun server.
- Nessun account, nessuna analitica, nessuno script di terze parti. La pagina esegue solo il proprio codice.
- Nulla viene conservato. Niente cookie, nessuno stato tra le visite — chiudi la scheda e la sessione sparisce.
Per i flussi di lavoro che coinvolgono ID da archivi privati, dataset di ricerca o code di moderazione, la decodifica avviene interamente sul tuo dispositivo.
Specifiche tecniche
Dettagli:
- Formato — snowflake a 64 bit — segno (1 bit) + timestamp (41 bit, ms dal
2010-11-04T01:42:54.657Z) + worker (10 bit) + sequenza (12 bit) - Precisione — aritmetica BigInt capillare; risultati esatti per tutti gli ID a 19 cifre oltre l'intervallo intero sicuro di JavaScript
- Finestra di validazione — il tempo decodificato non può superare quello attuale oltre i 60 secondi; i valori anteriori all'epoca sono irraggiungibili da 15 cifre in su
- Formati di input —
\d{15,19}nudo, o URL di stato x.com/twitter.com con protocollo opzionale, sottodominiwww./mobile./m., varianti di vista e stringhe di query - Output — ora locale, stringa UTC, ISO 8601, millisecondi Unix, età relativa, worker ID, sequenza, binario a 64 bit raggruppato — ogni riga copiabile individualmente
- Elaborazione — JavaScript 100% lato client, zero richieste di rete, nessuna chiave API, nessun componente server
- Supporto browser — tutti i browser moderni (BigInt e Clipboard API)
Caratteristiche
- Decodifica qualsiasi ID snowflake di X o Twitter nel suo momento esatto di pubblicazione, al millisecondo
- Accetta ID di tweet nudi e link di stato completi su x.com o twitter.com — l'ID viene estratto automaticamente
- Presenta l'istante decodificato in quattro modi — ora locale, UTC, ISO 8601 e millisecondi Unix
- Scompone l'ID nelle sue parti — worker ID, contatore di sequenza e binario completo a 64 bit
- Rifiuta i valori impossibili — gli ID con data futura mostrano un errore invece di una supposizione
- Funziona interamente nel tuo browser senza richieste di rete — senza chiave API né account
- Copia con un clic per ogni riga di risultato