<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: MaikiDev</title>
    <description>The latest articles on DEV Community by MaikiDev (@maikidev).</description>
    <link>https://dev.to/maikidev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3618814%2F779d304a-bb07-4911-8986-b75bd820843b.jpg</url>
      <title>DEV Community: MaikiDev</title>
      <link>https://dev.to/maikidev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/maikidev"/>
    <language>en</language>
    <item>
      <title>JSON is Costing You Money: Enter TOON - the Format Built for LLMs</title>
      <dc:creator>MaikiDev</dc:creator>
      <pubDate>Wed, 19 Nov 2025 08:09:55 +0000</pubDate>
      <link>https://dev.to/maikidev/json-is-costing-you-money-enter-toon-the-format-built-for-llms-4ce8</link>
      <guid>https://dev.to/maikidev/json-is-costing-you-money-enter-toon-the-format-built-for-llms-4ce8</guid>
      <description>&lt;p&gt;If you are building with Large Language Models (LLMs), you are essentially a logistics manager. Your job is to ship information from your database to an AI’s brain and back again, as efficiently as possible.&lt;/p&gt;

&lt;p&gt;For years, we’ve defaulted to &lt;strong&gt;JSON&lt;/strong&gt; because it is the lingua franca of the web. But have you ever looked at a 50-item JSON list inside a prompt window? It’s a sea of repetitive keys, curly braces, and wasted tokens.&lt;/p&gt;

&lt;p&gt;In the world of GenAI, &lt;strong&gt;context is currency&lt;/strong&gt;. Every token you waste on syntax is a token you can't use for reasoning, history, or creativity.&lt;/p&gt;

&lt;p&gt;Enter &lt;strong&gt;TOON (Token-Oriented Object Notation)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It’s not just "another standard". It is a purpose-built syntax designed to fix the specific headaches of communicating with AI. Today, let's pop the hood, look at some complex examples, and see how TOON stacks up against the heavyweights: JSON, YAML, and CSV.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is TOON?
&lt;/h2&gt;

&lt;p&gt;TOON is a data format designed to be &lt;strong&gt;human-readable, machine-parsable, and token-cheap&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The philosophy is simple: &lt;strong&gt;"Sparse Trees, Dense Lists"&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Most data formats are either &lt;strong&gt;Trees&lt;/strong&gt; (JSON, YAML, XML) or &lt;strong&gt;Tables&lt;/strong&gt; (CSV, SQL). Real-world data is usually a mix of both. You have metadata (Tree) and lists of items (Table).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;JSON&lt;/strong&gt; forces tables to act like trees (repeating keys for every row).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;CSV&lt;/strong&gt; forces trees to act like tables (flattening everything awkwardly).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;TOON&lt;/strong&gt; lets trees be trees and tables be tables.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Showdown: TOON vs. The World
&lt;/h2&gt;

&lt;p&gt;Let’s look at a realistic scenario: &lt;strong&gt;An E-commerce Order Receipt&lt;/strong&gt;.&lt;br&gt;
We have an Order ID, a Customer (nested object), and a list of Items (array).&lt;/p&gt;
&lt;h3&gt;
  
  
  1. The JSON Way
&lt;/h3&gt;

&lt;p&gt;JSON is explicit, but it charges you a tax for that clarity. Notice how many times we have to write &lt;code&gt;"product_id"&lt;/code&gt;, &lt;code&gt;"name"&lt;/code&gt;, and &lt;code&gt;"price"&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"order_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ORD-123"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"date"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2025-11-19"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"customer"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;99&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"email"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"jane@dev.to"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"items"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"product_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"A1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Wireless Mouse"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"qty"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"price"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;25.00&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"product_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"B2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Mechanical Keyboard"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"qty"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"price"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;120.00&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"product_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"C3"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"USB-C Hub"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"qty"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"price"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;40.00&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; As the list grows, the token count explodes linearly with the schema names.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The YAML Way
&lt;/h3&gt;

&lt;p&gt;YAML removes the brackets, which helps. But for lists, it’s still repetitive. You still have to define the keys for every item, just with dashes instead of braces.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;order_id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ORD-123&lt;/span&gt;
&lt;span class="na"&gt;date&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2025-11-19&lt;/span&gt;
&lt;span class="na"&gt;customer&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;99&lt;/span&gt;
  &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;jane@dev.to&lt;/span&gt;
&lt;span class="na"&gt;items&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;product_id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;A1&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Wireless Mouse&lt;/span&gt;
    &lt;span class="na"&gt;qty&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
    &lt;span class="na"&gt;price&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;25.00&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;product_id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;B2&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Mechanical Keyboard&lt;/span&gt;
    &lt;span class="s"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Still verbose for lists. Also, LLMs notoriously struggle with deep indentation levels in YAML, sometimes losing track of which parent a property belongs to.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The TOON Way
&lt;/h3&gt;

&lt;p&gt;Here is that same order in TOON.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;order_id: ORD-123
date: 2025-11-19
customer:
  id: 99
  email: jane@dev.to

items[3]{product_id, name, qty, price}:
A1, Wireless Mouse, 1, 25.00
B2, Mechanical Keyboard, 1, 120.00
C3, USB-C Hub, 2, 40.00
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Look at the difference.&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Top-level props:&lt;/strong&gt; Look like clean YAML.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;The Array (&lt;code&gt;items&lt;/code&gt;):&lt;/strong&gt; Instantly switches to a CSV-style table.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;The Header (&lt;code&gt;[3]{...}&lt;/code&gt;):&lt;/strong&gt; Tells the LLM exactly what is coming: "I am sending 3 items, and here is the map to read them."&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We just saved the model from reading the word &lt;code&gt;"product_id"&lt;/code&gt; three times. If this were a list of 50 items, we would have saved it 49 times. That is massive token efficiency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Not Just Use CSV?
&lt;/h2&gt;

&lt;p&gt;You might ask, &lt;em&gt;"If the list part is just CSV, why not use CSV?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;CSV is flat. It fails the moment you need metadata. If you wanted to send that Order Receipt in CSV, you'd have to duplicate the &lt;code&gt;order_id&lt;/code&gt; on every single row:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;order_id, date, product_id, name
ORD-123, 2025-11-19, A1, Mouse
ORD-123, 2025-11-19, B2, Keyboard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is data redundancy—another waste of tokens. TOON gives you the hierarchy of JSON with the density of CSV.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Advantages
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Token Efficiency
&lt;/h3&gt;

&lt;p&gt;Benchmarks show TOON uses &lt;strong&gt;~30-50% fewer tokens&lt;/strong&gt; than standard JSON for mixed-structure data. If you are processing massive logs or long context windows (RAG), that savings pays for itself instantly.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Higher Accuracy
&lt;/h3&gt;

&lt;p&gt;This might sound counter-intuitive—isn't JSON the "native language" of code?&lt;br&gt;
Actually, LLMs are pattern matchers. When an LLM reads TOON, it sees a clear, predictable pattern (Headers -&amp;gt; Data). Benchmarks indicate that models like GPT-4 and Claude actually have &lt;strong&gt;higher retrieval accuracy (74% vs 70%)&lt;/strong&gt; when reading TOON compared to JSON. The clutter of JSON brackets can sometimes confuse the model's attention mechanism in deep context windows.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Streaming Friendly
&lt;/h3&gt;

&lt;p&gt;Because TOON is line-based, it is exceptionally easy to stream to a frontend. You don't have to wait for a closing &lt;code&gt;}&lt;/code&gt; or &lt;code&gt;]&lt;/code&gt; to know a row is finished.&lt;/p&gt;
&lt;h2&gt;
  
  
  How to Integrate TOON into Your Workflow
&lt;/h2&gt;

&lt;p&gt;You don't need to rewrite your entire backend. TOON is best used as the &lt;strong&gt;communication layer&lt;/strong&gt; between your code and the LLM.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 1: The Input
&lt;/h3&gt;

&lt;p&gt;When sending data &lt;em&gt;to&lt;/em&gt; the LLM (RAG contexts, few-shot examples), convert your JSON to TOON before inserting it into the prompt.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;encode&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@toon-format/toon&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Compress your data before the LLM sees it&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;context&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;largeLogData&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;indent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;delimiter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;keyFolding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;off&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;flattenDepth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;Infinity&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`Analyze the following logs: \n\n &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: The Output
&lt;/h3&gt;

&lt;p&gt;If you want the LLM to &lt;em&gt;reply&lt;/em&gt; in TOON, just show it an example. You don't need a complex system prompt.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;User:&lt;/strong&gt; "Analyze the following logs and return the errors in TOON format."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model:&lt;/strong&gt;&lt;/p&gt;


&lt;pre class="highlight plaintext"&gt;&lt;code&gt;errors[3]{code,message,severity}:
500,Database connection failed,High
404,User avatar not found,Low
503,Service unavailable,Critical
&lt;/code&gt;&lt;/pre&gt;

&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 3: Parsing
&lt;/h3&gt;

&lt;p&gt;Use the library to turn it back into objects your code can use.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;decode&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@toon-format/toon&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;llmResponse&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;indent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;strict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;expandPaths&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;off&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Want to try it right now?
&lt;/h2&gt;

&lt;p&gt;You don't need to install the CLI just to see how it looks. There is a &lt;a href="https://jsontotoonapp.com" rel="noopener noreferrer"&gt;&lt;strong&gt;free tool&lt;/strong&gt;&lt;/a&gt; available where you can paste your current JSON blobs and see them magically shrink into TOON. It’s a great way to visualize how much token "fat" you can trim from your prompts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;JSON isn't going anywhere—it’s the backbone of the web. But for the specific, high-cost, high-complexity world of Generative AI, it’s showing its age.&lt;/p&gt;

&lt;p&gt;TOON treats data the way LLMs treat text: as a structured, flowing stream of information, not a rigid tree of brackets. Give it a try in your next prompt; your token budget (and your sanity) will thank you.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>ai</category>
      <category>development</category>
      <category>tooling</category>
    </item>
  </channel>
</rss>
