Stack blocks to animate a single image and export it as a WebM video. Everything runs in your browser
A photo does not move. But add a slow vertical float, a slight zoom in and out, or a camera drifting sideways, and the same single image starts reading as footage. The "moving stills" you see in social posts, thumbnails and title slides are built on exactly that idea.
Movo Blocks lets you build that motion by stacking blocks. You do not need to know what the numbers mean: drop in blocks like "float up and down", "breathe" or "handheld shake", nudge the values, and the preview updates immediately. When you are happy with it, export the result as a WebM video.
From a single photo, the model estimates what is near and what is far and produces a grayscale depth map: bright for near, dark for far. With a depth map available, the "depth parallax" block can move nearer parts further than distant parts as the camera moves, which is what makes a flat photo read as a space. The model here is the small Depth Anything V2.
This cuts the subject out of the photo. Moving the cutout slightly larger and slightly later than the background makes a flat image look like two stacked stage flats. The "build a 2.5D scene from depth" block pushes that separation further.
Both run only when you press their button. Placing a block never starts them. The models are tens of megabytes, and starting a download that large because someone dragged one block would be spending their bandwidth for them.
The image you load never leaves your browser. Depth estimation and background removal run on your own GPU (when WebGPU is available) or CPU (WASM), and the exported video is saved directly to your machine. Nothing is sent to or stored on a server.
However, the AI model weights are downloaded from the distributor (the Hugging Face CDN) on first use, so the first run needs a network connection; later runs read from the browser cache. Not uploading your image is not the same as making no requests at all, so both are stated plainly.
Export uses MediaRecorder to save WebM (VP9 or VP8). Recording in real time drops frames on slower machines and stretches the result, so where the browser supports it we render and commit one frame at a time (captureStream(0) plus requestFrame) to hit the requested length and frame rate exactly. Browsers without that support fall back to real-time recording.
Even the irregular motion — handheld shake — uses no random numbers. It uses pseudo-noise that returns the same value for the same timestamp, so the preview and the export match and re-exporting gives the identical result.
The blocks you are editing are stored in your browser automatically and restored the next time you open the page. "Save program" writes a JSON file you can move to another machine or use to keep several setups side by side. The image itself is not included in that file — only the motion you built.
This tool applies the same idea as the Movo video CLI — build footage from a single asset — as block programming in the browser.
No. The image you load never leaves your browser. Depth estimation and background removal run on your own device, and the exported video is saved straight to your machine. The AI model weights themselves are downloaded from the distributor (Hugging Face) on first use, so the first run needs a network connection. Not uploading your image and making no network requests at all are two different things.
The first run includes a model download, so it takes anywhere from tens of seconds to a few minutes depending on your connection. The download is cached by the browser, so later runs take a few seconds. Browsers with WebGPU use the GPU; otherwise the model runs on WASM (CPU), where inference is slower and can take tens of seconds on some machines.
Only blocks connected below the "when started" block run. Blocks left floating on their own do nothing. Blocks placed below a "wait N s" block only take effect after that many seconds, and if the waits add up to more than the video length, everything below them never runs at all. Both situations are reported in the notice area under the preview.