Token-Oriented Object Notation (TOON) format for LLM-optimized data encoding. Converts JSON to compact, human-readable format that minimizes tokens (~40% reduction) while improving LLM comprehension accuracy.
Scanned 9/2/2026
Install to Claude Code
npx -y skills add majiayu000/claude-skill-registry --skill toon --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Toon?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/majiayu000-toon-claude-skill-registry)More formats (shields.io, HTML) on the badges page.
---
name: toon
description: Token-Oriented Object Notation (TOON) format for LLM-optimized data encoding. Converts JSON to compact, human-readable format that minimizes tokens (~40% reduction) while improving LLM comprehension accuracy.
license: MIT
reference: https://github.com/toon-format/toon
author: George Khananaev
---
# TOON Format Guide
## Overview
TOON (Token-Oriented Object Notation) is a compact encoding of JSON designed for LLM input. Combines YAML-style indentation w/ CSV-style tables for uniform arrays.
**Key benefits:**
- ~40% fewer tokens vs JSON
- 73.9% accuracy vs 69.7% for JSON in retrieval tasks
- Explicit length declarations for validation
- Lossless JSON round-trips
## Syntax
### Objects (YAML-style indentation)
```toon
user:
name: John
age: 30
address:
city: NYC
zip: 10001
```
### Uniform Arrays (Tabular)
```toon
users[3]{id,name,email}:
1,John,john@ex.com
2,Jane,jane@ex.com
3,Bob,bob@ex.com
```
- `[N]` = array length (req for validation)
- `{fields}` = column schema (declared once)
### Scalar Arrays
```toon
tags[4]: api,rest,json,toon
```
### Non-uniform Arrays (Nested)
```toon
items:
- id: 1
type: book
meta:
pages: 200
- id: 2
type: video
meta:
duration: 3600
```
## Conversion Rules
### JSON to TOON
1. **Objects** => indented key-value pairs
2. **Uniform arrays** => tabular `[N]{fields}:` format
3. **Mixed/nested arrays** => `-` list notation
4. **Scalars** => quote only when containing `,` or special chars
### Examples
**JSON:**
```json
{"orders":[{"id":1,"item":"Book","qty":2,"price":29.99},{"id":2,"item":"Pen","qty":10,"price":1.99}]}
```
**TOON:**
```toon
orders[2]{id,item,qty,price}:
1,Book,2,29.99
2,Pen,10,1.99
```
**Nested JSON:**
```json
{"config":{"db":{"host":"localhost","port":5432},"cache":{"enabled":true,"ttl":300}}}
```
**TOON:**
```toon
config:
db:
host: localhost
port: 5432
cache:
enabled: true
ttl: 300
```
## When to Use TOON
TOON replaces **data serialization formats** when sending to LLMs.
### Formats to convert → TOON:
| Format | Convert? | Notes |
|--------|----------|-------|
| JSON | Yes | Primary use case |
| JSON compact | Yes | Same as JSON |
| YAML | Yes | Structured data |
| XML | Yes | Verbose, big savings |
### Do NOT convert to TOON:
| Format | Convert? | Reason |
|--------|----------|--------|
| Markdown | No | Keep as markdown |
| Plain text | No | Keep as text |
| Code files | No | Keep original syntax |
| CSV | No | Already compact for flat tables |
### TOON sweet spot:
Uniform arrays of objects (same fields per item) from JSON/YAML/XML.
### Key insight:
TOON replaces **data serialization formats** when the consumer is an LLM.
## Quick Reference
| Data Type | TOON Syntax | Example |
|-----------|-------------|---------|
| Object | indent | `user:\n name: John` |
| Uniform array | `[N]{fields}:` | `items[2]{a,b}:\n 1,x\n 2,y` |
| Scalar array | `[N]:` | `ids[3]: 1,2,3` |
| Nested array | `- item` | `- name: x\n- name: y` |
| Quoted str | `"val"` | `name: "a,b,c"` |
| Null | `null` | `val: null` |
| Bool | `true`/`false` | `active: true` |
## File Format
- Extension: `.toon`
- Media type: `text/toon`
- Encoding: UTF-8
## Implementations
Official npm: `@toon-format/toon`, `@toon-format/cli`
### Node.js/TypeScript Example
```typescript
// npm install @toon-format/toon
import { encode, decode } from '@toon-format/toon';
// JSON to TOON
const data = { users: [{ id: 1, name: 'John' }] };
const toonStr = encode(data);
// TOON to JSON
const parsed = decode(toonStr);
```
### CLI Example
```bash
# npm install -g @toon-format/cli
toon encode input.json > output.toon
toon decode input.toon > output.json
```
## Validation
TOON's `[N]` notation enables:
- Array truncation detection
- Field count validation
- Schema consistency checks
```toon
# This declares exactly 3 items w/ 2 fields each
products[3]{name,price}:
Widget,9.99
Gadget,19.99
Tool,14.99
```
If LLM receives incomplete data, length mismatch signals corruption.
## Scripts
### Validator (`scripts/validate.py`)
Validates TOON syntax and structure before use.
```bash
# Validate TOON file
python .claude/skills/document-skills/toon/scripts/validate.py input.toon
# Check JSON compatibility for TOON conversion
python .claude/skills/document-skills/toon/scripts/validate.py --json input.json
# Quiet mode (errors only)
python .claude/skills/document-skills/toon/scripts/validate.py -q input.toon
```
**Checks:**
- Array length `[N]` matches actual row count
- Field count `{a,b,c}` matches values per row
- Quote balance
- Consistent indentation
- Empty value warnings
### Converter - Node.js (`scripts/convert.js`) - Recommended
Uses official `@toon-format/toon` library for full spec compliance.
```bash
# Install official library
npm install @toon-format/toon
# JSON to TOON
node .claude/skills/document-skills/toon/scripts/convert.js input.json
# JSON to TOON with output file
node .claude/skills/document-skills/toon/scripts/convert.js input.json -o output.toon
# TOON to JSON
node .claude/skills/document-skills/toon/scripts/convert.js --to-json input.toon
# Verify round-trip
node .claude/skills/document-skills/toon/scripts/convert.js --verify input.json
```
### Converter - Python (`scripts/convert.py`) - Fallback
Basic implementation when Node.js is not available.
```bash
# JSON to TOON
python .claude/skills/document-skills/toon/scripts/convert.py input.json
# TOON to JSON
python .claude/skills/document-skills/toon/scripts/convert.py --to-json input.toon
# Verify round-trip
python .claude/skills/document-skills/toon/scripts/convert.py --verify input.json
```
## Compression Tips
1. Use tabular format for uniform arrays (max savings)
2. Declare lengths `[N]` for validation
3. Quote strings only when necessary
4. Flatten when possible, nest when required
5. Combine related arrays into single tableIs this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!