# TOON vs JSON: Il formato che taglia il 60% dei token nei prompt AI > Fonte: https://francescogruner.it/toon-vs-json-token-prompt-llm/ Quando usi un modello come ChatGPT, Claude o Gemini per lavorare con dati strutturati, probabilmente ti affidi al solito formato **JSON**. È lo standard universale ma anche **uno dei più costosi in termini di token**. Ogni parentesi, virgoletta e virgola è un token in più da pagare, e quando gestisci migliaia di record… il conto sale. Da questa esigenza è nato **TOON**, acronimo di *Token-Oriented Object Notation*: un formato **compatto, leggibile e ottimizzato per i modelli linguistici**, progettato per **ridurre del 30-60%** i token rispetto al JSON senza perdere struttura o chiarezza. 👉 Repositorio ufficiale: [github.com/toon-format/toon](https://github.com/toon-format/toon) Indice dei contenuti [Toggle](#) - [Origine e razionale tecnico](#Origine_e_razionale_tecnico) - [Come funziona (e quanto risparmi)](#Come_funziona_e_quanto_risparmi) - [Ti sta piacendo?](#Ti_sta_piacendo) - [JSON classico](#JSON_classico) - [TOON equivalente](#TOON_equivalente) - [Benchmark estesi e dati reali](#Benchmark_estesi_e_dati_reali) - [Tabella comparativa (estratto dai benchmark ufficiali)](#Tabella_comparativa_estratto_dai_benchmark_ufficiali) - [Quando TOON è la scelta giusta (e quando no)](#Quando_TOON_e_la_scelta_giusta_e_quando_no) - [Perfetto per:](#Perfetto_per) - [Da evitare con:](#Da_evitare_con) - [Come provarlo subito](#Come_provarlo_subito) - [Installazione](#Installazione) - [Conversione rapida](#Conversione_rapida) - [Prompting con TOON: esempio pratico](#Prompting_con_TOON_esempio_pratico) - [Best practice e consigli d’uso](#Best_practice_e_consigli_duso) - [TOON e embedding nei database vettoriali](#TOON_e_embedding_nei_database_vettoriali) - [Esempio pratico](#Esempio_pratico) - [Strategia consigliata](#Strategia_consigliata) - [Ecosistema e adozione](#Ecosistema_e_adozione) - [Limiti ancora aperti](#Limiti_ancora_aperti) - [Conclusione](#Conclusione) - [FAQ su TOON](#FAQ_su_TOON) ## Origine e razionale tecnico I Large Language Model (LLM) comprendono il mondo come una sequenza di token. Ogni simbolo, parentesi o virgolette nei tuoi dati JSON **diventa un token** e quindi un costo, un tempo di elaborazione e una barriera alla velocità. Formati come **JSON, YAML o XML** non sono nati per dialogare con modelli linguistici: contengono ridondanze e punteggiatura superflua. **TOON** nasce proprio per risolvere questo: **ridurre al minimo la sintassi e massimizzare la leggibilità** per modello e umano insieme. La sua logica è semplice ma geniale: - niente `{}` o `[]` - niente doppi apici - solo **indentazione e righe tabellari** - le **chiavi vengono dichiarate una sola volta** In pratica, unisce la chiarezza di YAML, la compattezza del CSV e la struttura del JSON. ## Come funziona (e quanto risparmi) ## Ti sta piacendo? Ricevi una guida pratica ogni settimana. AI, tool e automazioni. Iscriviti gratis Perfetto, sei dentro. ### JSON classico ``` { "utenti": [ { "id": 1, "nome": "Alice", "ruolo": "admin" }, { "id": 2, "nome": "Bob", "ruolo": "user" } ] } ``` ### TOON equivalente ``` utenti[2]{id,nome,ruolo}: 1,Alice,admin 2,Bob,user ``` Stesso significato. **Meno della metà dei token.** I modelli lo comprendono facilmente perché la struttura è autoesplicativa. ## Benchmark estesi e dati reali ![Diagramma che mostra il confronto tra JSON e TOON nel flusso verso un LLM, evidenziando un risparmio di token del 30-60% e maggiore accuratezza di retrieval.](https://francescogruner.it/wp-content/uploads/2025/11/toon-vs-json-1024x538.png) TOON riduce i token del 30-60% rispetto a JSON mantenendo la stessa struttura dei dati, migliorando la velocità e l’efficienza nei Large Language Models. Le prove ufficiali mostrano risparmi di **30-60% di token** su dataset ampi e uniformi (ad esempio liste di utenti, prodotti, eventi, ordini). Su 10.000 record utenti, un JSON formattato può richiedere ~10.000 token, mentre TOON solo ~4.500. ### Tabella comparativa (estratto dai benchmark ufficiali) FormatoToken necessariAccuratezza mediaNote principaliJSON classico10.00069.7%Verboso, universaleTOON4.50073.9%Ottimo equilibrio costo/accuratezzaCSV3.90052.3%*Più compatto, ma perde strutturaYAML7.00053.6%Leggibile ma inefficienteXML10.10067.1%Struttura pesante e ridondante > *CSV è ideale solo per dati completamente tabellari, senza annidamenti.* Nei test pubblicati su GitHub, TOON ha mostrato: - **fino al 61% di risparmio token** - **accuratezza maggiore del 4% rispetto al JSON** - **latenza inferiore**, grazie a meno simboli da processare ## Quando TOON è la scelta giusta (e quando no) ### Perfetto per: - Tabelle di dati uniformi (“Excel-like”) → utenti, prodotti, log, ordini - Prompt e agenti AI che leggono liste o tabelle con intestazioni fisse - Dataset omogenei, grandi e ripetitivi, dove contano costi e chiarezza ### Da evitare con: - Strutture profondamente **annidate o eterogenee** - Configurazioni complesse (oggetti JSON multipli e variegati) - API e microservizi che richiedono **solo JSON o YAML** In breve: se i tuoi dati sembrano un foglio Excel → usa TOON. Se sembrano un albero di Natale → resta su JSON. ## Come provarlo subito ### Installazione ``` npm install @toon-format/toon ``` ### Conversione rapida ``` import { encode, decode } from "@toon-format/toon"; const data = { utenti: [ { id: 1, nome: "Alice", ruolo: "admin" }, { id: 2, nome: "Bob", ruolo: "user" } ] }; console.log(encode(data)); ``` 🟢 Output: ``` utenti[2]{id,nome,ruolo}: 1,Alice,admin 2,Bob,user ``` Puoi anche usare il **CLI ufficiale**: ``` cat data.json | npx @toon-format/cli --stats ``` Così vedi immediatamente il risparmio token. ## Prompting con TOON: esempio pratico **Input al modello** ``` Analizza questi dati TOON (tab-separated, 2 spazi di indentazione) e restituisci solo gli utenti con ruolo = "user". ```toon utenti[3 ]{id nome ruolo}: 1 Alice admin 2 Bob user 3 Clara user ``` ``` Il modello restituirà automaticamente una risposta in TOON con lo stesso header, risparmiando token e tempo di parsing. ## Best practice e consigli d’uso - **Usalo solo dove serve**: converti in TOON *solo nel tratto tra backend e modello AI*; mantieni JSON per API e storage. - **Delimitatore tab (`t`)**: spesso riduce ulteriormente i token rispetto alla virgola. - **Valida sempre l’output**: usa `decode()` con `strict` per intercettare errori o `[N]` errati. - **Header chiaro = risultati coerenti**: specifica sempre campi e ordine. - **Non forzarlo su strutture profonde**: rischi di perdere efficienza. ## TOON e embedding nei database vettoriali **Ha senso usare TOON per embedding in un vector DB?** La risposta è **sì, in parte** se parliamo di **dati tabellari o semi-strutturati**. Gli embedding trasformano testo in vettori numerici, quindi la cosa più importante è la **coerenza e la compattezza del testo**. TOON aiuta proprio in questo: fornisce **stringhe brevi, coerenti e consistenti** per record uniformi. ### Esempio pratico ``` prodotti[1]{sku,nome,prezzo,descrizione}: A1,Notebook Pro,1299.00,"Laptop 14 pollici con schermo OLED" ``` Ogni riga può diventare una stringa da embeddare, creando vettori coerenti tra record simili. **Quando funziona bene:** - Cataloghi, ticket, clienti, ordini - FAQ strutturate o knowledge base con pattern ripetuti **Quando è meno utile:** - Testi lunghi e naturali (articoli, descrizioni, conversazioni) - Dati numerici o gerarchici (meglio come metadata filtrabili) ### Strategia consigliata 1. Mantieni JSON come formato sorgente. 2. Converti ogni record in TOON (una riga = un elemento). 3. Embeddalo nel database vettoriale (es. AstraDB, Supabase, Pinecone). 4. Aggiungi metadata per filtri numerici o categoriali. 💡 Risultato: **embedding più consistenti, query semantiche più affidabili e meno rumore**. ## Ecosistema e adozione TOON è un progetto open-source recente ma in rapida crescita. È già compatibile con: - **Node.js / TypeScript** - **Python (in sviluppo)** - **CLI multipiattaforma** - integrazioni in **n8n**, **LangChain**, **Claude Desktop**, **agent frameworks** e pipeline AI. Il formato è stato proposto nell’ottobre 2025, ma in poche settimane ha raccolto oltre **13.000 stelle su GitHub**, con implementazioni in Rust, Go, PHP, Kotlin e Swift. 🔗 Repo ufficiale: [github.com/toon-format/toon](https://github.com/toon-format/toon) ## Limiti ancora aperti Nessun formato è perfetto, e TOON non fa eccezione: - Meno adatto a **dati profondamente annidati** o **eterogenei** - Ecosistema ancora giovane, meno tool enterprise rispetto a JSON - Alcuni **modelli quantizzati** (come Ollama o Mistral locali) possono processare JSON compatto leggermente più veloce - Non tutti i tokenizzatori reagiscono uguale: i vantaggi si misurano con test reali sul tuo modello ## Conclusione **TOON non vuole sostituire il JSON.** È un’estensione intelligente per chi lavora con **AI, automazione e LLM**, un formato “ibrido” che permette di: - **risparmiare token**, quindi denaro, - **mantenere struttura e chiarezza**, - **ridurre errori di parsing nei modelli**. In un mondo in cui le aziende affidano sempre più analisi e workflow agli LLM, TOON può diventare una **lingua franca tra back-end e AI**, migliorando efficienza e standardizzazione dei prompt. Come dice uno degli sviluppatori del progetto: > “TOON è come il JSON, ma scritto con la grammatica che piace ai modelli.” ## FAQ su TOON **Cos’è TOON e perché è diverso da JSON?** TOON (Token-Oriented Object Notation) è un formato dati ottimizzato per modelli linguistici AI, che elimina parentesi e virgolette riducendo fino al 60% i token necessari rispetto a JSON, mantenendo però struttura e leggibilità. **Quando conviene usare TOON?** TOON è ideale per dati tabellari uniformi come liste di utenti, cataloghi prodotti, log e dataset ripetitivi; ottimizza costi e performance dei modelli AI. **Posso sostituire completamente JSON con TOON?** No, TOON affianca JSON nei flussi AI. JSON resta indispensabile per API, storage e dati più complessi o profondamente annidati. **TOON funziona anche per embedding in database vettoriali?** Sì, in particolare per record strutturati e uniformi, dove l’input coerente e compatto aiuta a ottenere embedding più consistenti e query semantiche migliori. **Come posso provare TOON?** TOON è open-source e disponibile su NPM. Puoi installarlo facilmente con `npm install @toon-format/toon` e convertire JSON in TOON e viceversa con pochi comandi.