There is only one thing stronger than all the armies of the world: and that is an idea whose time has come.

The Story Behind Internet Object

In 2017, I shipped a "simple" REST API. Within weeks, I was watching a 2KB employee list balloon to 8KB because JSON repeated every key in every record. Validation logic sprawled across six layers: server endpoints, web client, mobile apps inbound and outbound. Each team wrote the same rules differently. Bugs leaked through. Bandwidth bills climbed.

I'd noticed the problem before, but that particular day it wouldn't let go.

One question haunted me: What if we sent only the values and let a shared schema handle meaning, validation, and safety?

That spark became Internet Object: a compact, human-readable, schema-first format built for the modern web.

Good design adds value faster than it adds cost.

Data vs metadata, clearly split

As I dug deeper into JSON's limitations, another anti-pattern emerged: data and metadata living side by side. Pagination details, result counts, and status codes tangled with actual records in the same object. Every consumer had to parse through noise to find the signal.

At scale, that blur became expensive, forcing custom DTO logic, defensive validation, and brittle contracts across teams.

A clean format needed separation by design: headers in one place, payload in another.

JSON Example showing employee data structure

The quest for a better web format

Identifying the problems was the easy part. Finding a solution that didn't just swap one set of trade-offs for another, that was harder.

The blur costs clarity, bytes, and time

When metadata (result, count, page info) lives beside records, every consumer has to reconcile it in DTOs, add guardrails, and bolt on pagination/state handling in application code. That adds validation effort and cost, tighter coupling, and higher error rates: an anti-pattern versus a clean envelope/payload split.

What the web needs in a text format

I studied JSON, GraphQL, XML, YAML, CSV and even protocols like MIME and SOAP, looking for patterns. Each had insights, but none solved the full picture. What emerged was a clear set of must-haves:

  • Human-readable and compact (lower payload and parse costs)
  • Contract-first schema and validation (clear DTOs, strong guarantees)
  • Envelope/Payload separation (headers vs data; separation of concerns)
  • Streaming with backpressure (better latency and throughput)
  • Helpful comments (self-documenting contracts)
  • Reusability via variables/references (DRY, indirection for secrets)
  • Rich canonical types (BigInt, precise decimals, temporal, NaN/Infinity)
  • Platform-agnostic across storage, queues, and wire

Perfection is achieved not when there is nothing more to add, but when there is nothing left to take away.

From idea to Internet Object

With those requirements clear, I needed a name that captured the vision. "Internet Object" kept surfacing: a data object purpose-built for the web. It clicked.

No existing format checked every box, so I built one: a simple, schema-first, text format for clean, efficient data exchange.

From concept to reality

The Internet Object became my nights and weekends. I iterated, tested prototypes with developers and architects, gathered feedback, and refined the design. Work paused in 2020 to 2021, then resumed in late 2022.

After years of iteration, I'm finally happy with what we have: compact, human-readable, streaming-friendly, with variables, comments, external/embedded schemas, and a clean split between metadata and data. Most importantly, it's AI-friendly: lower cost through fewer tokens, better contracts through integrated schemas.

The GenAI advantage, a free by-product

I didn't design Internet Object for the GenAI era, that came later. But the architecture choices (compact values, shared schemas, envelope/payload split) turned out to be perfect timing.

In production GenAI workflows, token count is the primary cost driver. A 50% smaller payload can cut inference bills in half. And when models have clear schema contracts instead of ad-hoc JSON, they generate more predictable, debuggable outputs.

It's a double win: lower operational cost, higher reliability. Both free by-products of solving the original web data problem.

What it looks like

Below, you'll see two quick snapshots: a schema (external) and a REST API response mirroring the earlier JSON example but clearer and smaller.

Internet Object schema

The schema defines two pieces: an address object and a default employee object, plus two gender variables.

Detailed schema diagram showing the structure of the Employee Object

Schema at a glance

  • $address: street, city, state, zip (5-digit)
  • $schema (employee): name, age (20 to 60), isActive (boolean), gender (@m/@f), optional address

It's readable, validated, and minimal: ready for both humans and machines.

A REST response in Internet Object

Let's see the format in action: the same employee API from page 1, but reimagined.

Headers (result, count, pagination) live in the envelope. Employee records live in the payload, clean, validated by schema, and half the size. Metadata where it belongs, data where it belongs.

Visual representation of Employee Object Data structure

Join the movement

You've seen the problem, the quest, and the solution. Internet Object is live: parsers are shipping, the playground is running, and real teams are testing it in production.

This is a small step with a big payoff: simpler payloads, clearer intent, and fewer bytes on the wire. But it needs your help to reach its potential.

Read the specs: docs.internetobject.org

Ways to help:

  • Build parsers and tools
  • Review and file issues
  • Share feedback and use-cases

As William Gibson said: "The future is already here, it's just not very evenly distributed." Let's ship it.

(signed) Mohamed Aamir Maniar at linkedin.com/in/aamironline