Vertically Stitch

Vertical text sewn strand by strand, the way a hand-guided embroidery shop letters a name tag, and unpicked the way it came. A study of entrance and exit motion for embroidered text.

BetaWebEntrance and exit motion
Open the app
stitch.vertically.works

Type a name in Hangul, Hanja, kana or Latin and sew it. Drag the scrubber through the beats: a stroke, a re-grip between components, the hairline span to the next character, the trim. Then pick an exit and remove it.

What the craft dictates

Sixty reels of one Seoul name-tag shop, read down to the single strand, settle most of the entrance. Each rule below is a finding first and a behaviour of the app second.

Accumulated, not revealed

The render unit is a single strand: one swing of the needle laid across the stroke. A letter is never drawn and then shown; it piles up strand by strand, and nothing exists ahead of the frontier. No ghost outline, no glyph mask, no guideline.

A font traced by hand

The shop reproduces a customer's chosen font by hand, so the letters here are traced from real faces: the site's vertical Korean display face or Gungseo for Hangul, a serif face for Hanja and kana, a connected cursive for Latin names. Each glyph is rendered off screen, thinned to a skeleton and traced into strokes carrying the ink's own width. The column sits at a slight slant, like an italic laid down the strap: the vertical axis stays put and the horizontals rise 4° to the right; a URL parameter ranges it from −10° to 10°. Nothing rendered is ever shown.

Stroke order is the schedule

Strokes are ordered the way a hand writes them: Hangul by jamo, initial then vowel then final; Hanja and kana top to bottom, left to right, one component before the next; a cursive word as one path from left to right, then turned a quarter turn to run down the strap. Characters run down the column and the next column opens to the left.

Density is the rhythm

Every strand takes the same time; the spacing between strands does not. A hand-speed profile slows into a stroke's start, its end and every corner, so those places pack more strands and take longer. The rhythm is not animated. It falls out of density.

One swing axis

The shop's machine swings its needle along one axis only; the hands move the fabric. So every strand in a piece lies parallel, and a stroke that runs along the axis comes out thin while one that crosses it comes out thick. That is the Mincho contrast arrived at by mechanism, and a serif face brings the same contrast of its own. The app fixes the axis at 50° with ±15° of hand play. The pen's reading, where the strand turns with each stroke, and any other angle stay one URL parameter away for comparison.

Spans, then a finishing pass

Between components and characters the thread crosses the gap as a hairline, laid flat while the hands reposition. It stays until a finishing beat trims every span and lifts the thread away. The sewn object and the finished object are different things.

No needle, no hands

In the reels the needle is still and the fabric moves. A screen cannot honestly show both, so the app shows neither: one soft light from the upper left, a glint at the frontier, the live feeding strand, and the thread. The ground can also walk past a fixed frontier, as a strap walks under the needle.

Design Decisions

Why strands instead of a reveal?

An earlier sketch revealed a font glyph column by column, and the study rejected it: nothing in the real process ever reveals a pre-existing letter. A strand engine costs more, but it makes the entrance honest and gives the exit something to run backward through. The face still matters, as it does in the shop, where the customer picks a font sample and the sewer follows it by eye: so the path comes from a real typeface's skeleton, while the letter itself is only ever thread. A hand-drawn stroke library stays as a third style for comparison.

Why does the ground walk?

Two readings of the craft are both honest: a frontier moving down a fixed column (pen on paper) or a column walking past a fixed frontier (fabric under the needle, which is also what scrolling is). Mixing them reads as parody. The app ships the second, in a close view: the strap walks up under a needle that holds its height, and once the last strand lands the view eases out to show the whole piece, the way the eye leaves the needle for the finished strap, and stays out through the exit. The first reading, text arriving inside a fixed area, stays one URL parameter away, because the question is open.

Why does it leave by unpicking?

The spec says enter and exit along the same path with mirrored easing, and unpicking is the only exit that does: the strands lift in the reverse of their order and the thread draws back out. It runs at 1.6 times the sewing speed, the Toast's precedent of an exit quicker than its entrance. Three other exits were built and compared by eye, cut and lift, fade and walk off; the app now ships unpicking alone and keeps the three behind a URL parameter, with the comparison recorded in the study brief.

Why 光明正大?

It is the text the shop sewed down a red strap in the frames the study read most closely: four characters, upright to the strap, a hairline span from one to the next. It is a public idiom rather than a customer's name, each language has its own form of it (광명정대, 公明正大, 光明正大), and between them the four characters exercise verticals, horizontals, hooks and a crossing.

Why does 1x take twenty seconds?

Because that is how long it takes. Frame by frame, the gold Hanja reel sews a character in about five seconds at natural speed, which matches the machine's own cycle rate of up to two thousand stitches a minute against the strand counts here. One needle cycle is one strand, forty a second at 1x. The re-grip between characters, about half a second, and the shorter hesitation between components are read off the same reel. A loading state would run this at 4x; the study runs it true.

Why one angle for every strand?

Because the machine has one. A zigzag needle swings along a single axis and the sewer steers the fabric under it, so the hatch never turns with the letter: a vertical stroke is crossed by the swing, a horizontal stroke is run along it. An earlier build laid each strand across its own stroke, which read as satin filled by software. The strands now share one axis, set in degrees from the machine's own left-right swing, and the thin horizontals the first build imposed as a factor now fall out of the geometry. The hand holding the fabric is not a fixture, so the axis carries a few degrees of play: a slightly different set at every re-grip, a slow drift along the stroke, a flicker from strand to strand. The app fixes the play at ±15°; at zero, one URL parameter away, the hatch is a machine's. A true zigzag would also tilt alternate strands by one stitch length; at the reels' distance that reads as parallel, so the app keeps them parallel.

What is verified and what is inferred?

Strand accumulation, the width envelope, thin horizontals, carried spans and the finishing pass were all seen in motion or stated by the shop in its own explainer reels. Stroke order inside a glyph is a heuristic: Hangul strokes are grouped by jamo region, Hanja and kana by connected part from top to bottom and left to right, and the reels never froze a syllable finely enough to check it. Gungseo is used only when the device has it; otherwise the vertical display face stands in and the app says so. A character no face can render is reported, never faked.

Source

The behaviours above were read from the public reels of Cheongyusa, a hand-guided embroidery shop in Namdaemun, Seoul, lettering name tags on a JUKI zigzag machine since 1972: sixty reels in October 2026, eight of them frame by frame. Findings the shop stated or that were seen in motion are treated as fact; the one standing inference, Hangul stroke order inside a moving syllable, is marked above. The app imitates the thread and the light, never the shop.