Handset screen, stuttering pull-back

Tight on the face inside a retro handset screen with tiny lowercase captions at the top and a script word at the bottom; the picture steps back about 6 times a second and a first reframe jump lands at ~0.83 s. Lo-fi vlogs, music and streetwear intros that should feel shot on an old camera phone.

Open my video with this hook: "Handset screen, stuttering pull-back" from the 24fps video editor library.
Preset JSON: https://24fps.dev/video-editor/hooks/handset-frame-stutter-pullback-hook-e2x/preset.json (pass its "preset" to the engine).
Engine (MIT, no dependencies, ES module): https://24fps.dev/editor/engine.js. Download the engine next to your page (curl -O) rather than importing cross-origin, then import { mount } from "./engine.js" in a <script type="module"> served over http.
Wiring: root = a position:relative box at the video's size. media = { main }: main is a wrapper holding my video, filling the root. Then const fx = mount(root, { kind: "text", preset, media }) and call fx.render(seconds) every frame. The preset runs 3s from t = 0; offset t to place it later. It is seek-safe: drive it from the GSAP timeline in HyperFrames or call render(frame / fps) in Remotion. Before capturing frames, await (fx.ready ?? document.fonts.ready). Check it on my footage: if text is hidden behind the subject or doesn't read against my colours, nudge the layer positions or colours.
Replace the demo text with mine: set preset.layers[n].text (use \n for line breaks); if none given, write lines that fit my footage and tell me.
Hook formula: Lowercase caption 'when i'm making [topic]' on the top edge of a handset screen, script word [topic] rises at the bottom, stepped pull-back runs underneath
Pair with captions preset tiny-cyan-lowercase-screen-top (https://24fps.dev/video-editor/captions/tiny-cyan-lowercase-screen-top/preset.json); the captions kind takes script as [{ w, s, e, emph }], plus karaoke and activeColor.
Sound design: sub-drop at 0.75s on first reframe jump at ~0.83 s (60-120 Hz thump, ~0.2 s, seen in 2 of 3 clips (0.72 s streetwear; 1.87 s music at the second jolt pair)). In HyperFrames, fetch each with media-use (e.g. npx hyperframes media-use resolve --type sfx --intent "sub-drop" --project .; media-use needs `heygen auth login`, without it use `--local-only`, check with `--doctor`); elsewhere use royalty-free SFX or ones I give you.
Field reference: https://24fps.dev/video-editor/llms.txt. Keep sizes as fractions of the frame height so it works at any resolution. Credit: 24fps.dev/video-editor
Formula
Lowercase caption 'when i'm making [topic]' on the top edge of a handset screen, script word [topic] rises at the bottom, stepped pull-back runs underneath
Example lines
when i'm making music i always start by finding a vibe · for my everyday look i usually start with an oversized windbreaker · the biggest tip i have for energized is front-loading your day
Beats
0.0s tight crop of the face in the LCD, scan texture visible → 0.1s first jolts: bezel starts creeping in at the bottom, first lowercase word appears at the top → 0.3s script word fades up at the bottom of the handset → 0.8s reframe jump (score 0.36-0.46); sub thump starts ~0.7 s in 2 of 3 clips → 1.0s captions build on two lines at the top; jolts continue every ~0.15 s; full handset reveal comes later at 3.4-4.7 s
Sound design
sub-drop at 0.75s on first reframe jump at ~0.83 s (60-120 Hz thump, ~0.2 s, seen in 2 of 3 clips (0.72 s streetwear; 1.87 s music at the second jolt pair))
Same idea
Also called: Y2K (AI Edit)
Technique
Common AI-edit hook: handset-framed lo-fi open with a stuttering pull-back
Footage
Man talking and gesturing, Pexels

Similar hooks