In 1967 Ted Nelson sketched stretchtext — a writing surface where any token could be pulled
apart in place to reveal a longer, more detailed version of itself. No new page, no footnote,
no modal. The reader controls the depth.
The hard part was never the data model; it was the motion. Each variant below is a different
answer to the question of how a sentence should grow — same content, different geometry of the
reflow.
Built to roughly 50% of the original vision. Four variants below explore the geometry; three
pending slots show what's planned.
Built · 04 of 07
Aaword-FLIP
Per-word transforms via the Web Animations API. Each affected word measures its before/after
rect and animates the delta. Reactive streaming push, but every word renders as display: inline-block — typography reads slightly blocky at rest.
A good harness compresses skill where skill was never the point.
The mental model is
closer to a sentence elongating than to a drawer opening.
Pre-LLM, you'd cut. Post-LLM, you stretch.
Bbchar-stream
Plain inline DOM at rest, proper typography, no per-word spans. Pretext precomputes the target
paragraph height in pure JS, the parent reflows once, then elaboration chars stream in via
opacity.
A good harness compresses skill where skill was never the point.
The mental model is closer to a sentence elongating than to a drawer opening.
Pre-LLM, you'd cut. Post-LLM, you stretch.
Ccwidth-grow
Each elaboration word is an inline-block whose width animates from 0 to its natural value, all
simultaneously. Anchors and surrounding prose are physically pushed by the changing geometry
rather than teleported via FLIP.
A good harness compresses skill where skill was never the point.
The mental model is closer to a sentence elongating than to a drawer opening.
Pre-LLM, you'd cut. Post-LLM, you stretch.
Ddinline-FLIP
Words stay display: inline with relative positioning; left/top deltas animate after
the DOM rewrite. Per CSS Positioned Layout, relative offsets are visual only — surrounding
layout is unaffected, so kerning, baselines, and line breaks all remain native inline.
A good harness compresses skill where skill was never the point.
The mental model is closer to a sentence elongating than to a drawer opening.
Pre-LLM, you'd cut. Post-LLM, you stretch.
Pending · 03 of 07
Eespring-physics
Critically-damped springs in place of cubic-bezier easing. Will explore whether physical
settling reads as more honest than tuned curves when the reflow is irregular.
Reserved · Ee
Ffllm-fork
LLM-generated long versions on demand. Nelson's original cost-structure objection — that
authoring two depths is twice the work — is broadly resolved as of 2026; the variant tests
whether the affordance still reads as the author's voice.
Reserved · Ff
Ggoverlay-anim
Plain inline DOM at rest. During the brief animation window, an absolutely-positioned word layer
renders the transition, then hands back to flow. Aiming for the stability of Aa with the
cheapness of Cc.
Reserved · Gg
Trade-offs · so far
Aa is the only one of the four built that stays stable when the expansion forces a line wrap
mid-paragraph — the FLIP technique can absorb the full reflow into a single coordinated
animation. It is also twice as much code as the other three combined.
Bb feels alive in a way the others don't, but it cheats: the "expansion" is really a fast
typewriter, and on long passages the eye notices it isn't keeping up.
I paused at four because the remaining three change the underlying model, not just the curve.
Stretchtext only feels right when the reader forgets it is animation at all; Ee–Gg are the
angles I have not tried yet.