# Vertical by Småverk > Turns a landscape video into a vertical (9:16) one that keeps the speaker in frame, on the device inside the browser page at https://vertical.smaverk.com. Nothing is uploaded. Free with a small corner mark for clips up to 60 seconds; $24 once (founding price) removes it and allows five minutes. Vertical is one of the tools by Småverk, a one-person studio in Sweden; https://smaverk.com lists every tool. Captions (https://captions.smaverk.com) adds captions to the saved clip. ## What it does - Input: a video file (mp4, mov, webm). Output: the same clip cut to 9:16 at the source's full height (1920x1080 → 608x1080), the window following the largest face with calm pans; sound copied as it is. - The face is found on the device (MediaPipe face detector in WebAssembly) a few times a second; the file is written with WebCodecs. No server, by design. - Not yet: silence cuts, captions (use Captions), enlarging. ## Driving it from a script or an agent (browser automation) The page exposes `window.vertical` and stable element ids (`#file`, `#action`, `#status`, `#result`). Example with Playwright: ```js await page.goto("https://vertical.smaverk.com/"); await page.setInputFiles("#file", "talk.mp4"); // state: loaded await page.click("#action"); // "Make it vertical": finds the speaker await page.waitForFunction(() => window.vertical.state === "ready"); // window.vertical.track = [{t, cx, cy}, …] window.vertical.mode("hold"); // or keep "follow" const [dl] = await Promise.all([page.waitForEvent("download"), page.click("#action")]); // "Save video" await dl.saveAs("talk-vertical.mp4"); ``` Diagnostics after a save: `window.__vert` (exportPath, exportMs, exportTiming, detector, scanMs, found). Add `?debug` to the URL for a plain readout on the page.