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.
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: Sparse means ≤ 50 KB, no required JavaScript, no third-party scripts — auditable, pass or fail. Full rules in the spec.
Built for
Downloads
These files are snapshots; the living source — spec, auditor, skills, and this site — is at github.com/smlweb-org. 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.