Responsive design made pages fit the screen.
S—ML makes them fit the situation.
A delivery-profile standard for the open web: one URL serves the same content in three weights — Sparse, Medium, Luxe — negotiated by network, device, and reader, including AI agents. Ordinary HTML and HTTP. No new protocol. No separate internet.
Same URL. Three weights.
The ratio is the point — one page, three honest weights. Only Sparse carries a normative budget; Medium and Luxe are simply what you already build. Sparse is not a preview: it is the whole message at the lowest cost — title, summary, state, and every critical action, readable without JavaScript. A page can travel Sparse and hydrate toward Luxe when conditions allow. If the link drops, the reader still has everything.
The profiles
The name reads three ways: Sparse–Medium–Luxe · S—ML, what machine learning reads · sml — "small," vowels compressed out.
The protocol
One header in, one promise out. A server serves the requested weight — or lighter, never silently heavier.
GET /article/123 HTTP/1.1
Accept-Profile: s
HTTP/1.1 200 OK
Content-Profile: s
Available-Profiles: s, m, l
Budgets make it a contract, not a vibe — and only Sparse carries one: ≤ 50 KB, no required JavaScript, no third-party scripts, auditable pass or fail. Medium and Luxe stay yours; the standard asks just two things of every profile — same content, same security. Full rules in the spec.
Built for
Downloads
Everything lives in its canonical repository at github.com/smlweb-org — these links always point at the current version. Pilot reports and budget disagreements welcome in the spec repo's discussions.
The premise anyone can act on today: the critical path should work in Sparse mode.