🧊 Photo to 3D

Turn one photo into a 3D camera move — orbit, zoom in, swing or a dolly zoom — and save it as MP4 or GIF. A depth model reads your photo right in your browser: no upload, no sign-up, no limit.

✓ Free Forever · ✓ No Signup · ✓ No Upload · ✓ Works Offline

🔒 Your image never leaves your device. All processing happens locally in your browser using Depth Anything V2 Small (Apache-2.0) via onnxruntime-web — WebGPU, with a CPU (WebAssembly) fallback — then a WebGL camera move over the depth; MP4 via WebCodecs, GIF via gif.js. No upload, no server, no tracking.

Features

  • Depth from one photo — Depth Anything V2 Small, an AI depth model, estimates how far away every part of your photo is. That depth map drives the camera move — you can look at it with Show depth map.
  • Four camera moves — Orbit, zoom in, swing and the Hitchcock dolly zoom, with a live preview. Set the strength and the length (2–8 s); zoom and dolly can go in and come back for a seamless loop.
  • Your photo stays on your device — Nothing is uploaded. The model (about 27 MB) downloads once from toolkoala.com; your browser keeps it, so the next photo starts in seconds. Use it as often as you like.
  • MP4 and GIF — MP4 up to 1080p at 30 fps (never larger than your photo) and a 480 px GIF at 15 fps, or all four moves in one ZIP.

How It Works

  1. Drop a photo — Any JPG, PNG, WebP or iPhone HEIC. The first time, the depth model (about 27 MB) downloads once; reading the depth then takes a second or a few, depending on your device.
  2. Pick a camera move — Orbit, zoom in, swing or dolly zoom. Watch the preview and adjust the strength and length — small moves look the most natural.
  3. Download — Save the MP4 or the GIF of the move you picked, or all four as a ZIP. Files are named after your photo.

Use Cases

  • Turn a travel or portrait photo into a short 3D clip for Reels, Shorts or TikTok
  • Give a product shot a little depth for a listing or an ad
  • Bring an old photo or a painting to life for a slideshow
  • Make a looping 3D GIF for a chat, a forum or a README

Frequently Asked Questions

Is this a real 3D model?

No. It's a parallax animation: a depth model estimates how far away each part of your photo is, and the camera moves a little over that depth. There's no 3D mesh to export — no GLB, OBJ or STL — and you can't walk around behind things. The result is a video or a GIF.

What appears behind the subject when the camera moves?

A single photo has nothing behind the subject, so the tool makes a guess. When the picture has a clear subject (a person, an animal, an object in front of its background), it cuts the subject out — from the depth map, lined up with the photo's own edges, loose hair included — and fills the background behind it from the background around it, never from the subject. The subject then moves over that background as one piece, so no outline of it is left behind. What shows in the gap is a soft continuation of the surroundings, not the real scene: with a strong move it reads as a blurry patch, and hair the cut-out misses can stay with the background. A landscape with no single subject is moved as one surface, and there a strong move can stretch the edge of a near rock or tree. Lower the strength if it shows.

Is my photo uploaded?

No. The depth model runs in your browser and the video is encoded in your browser. The only download is the model itself (about 27 MB, once) from toolkoala.com — or, only if that copy can't be loaded, the same file from Hugging Face. Your photo never leaves your device.

How fast is it, and does it need a GPU?

Where your browser supports WebGPU, the model runs on your GPU; everywhere else it runs on the CPU with WebAssembly. On a recent laptop reading the depth takes about one to two seconds either way, longer on an older phone. Making a 4-second 1080p MP4 then takes a few seconds.

Which model is it, and can I use the result commercially?

Depth Anything V2 Small, released under the Apache-2.0 licence (the larger Base and Large versions are non-commercial, so they aren't used here). The clips you make are yours.

What sizes do I get?

The MP4 is up to 1920 × 1080 (or 1080 × 1920 for a portrait photo) at 30 fps, never larger than your photo. The GIF is up to 480 px on the long side at 15 fps, to keep the file small. Transparent areas are filled with white. In a browser without MP4 encoding (WebCodecs), the video is recorded in real time, usually as WebM.

Notes from Milo 🐨

2026-10-26

Someone looked at the sample clip and said what I'd been half-ignoring: there's a ghost of the girl hanging in the snow behind her. They were right. Every time the camera moved, the edge of her hat and hair got dragged across the background, leaving a pale outline that floated a step behind her. So the subject now gets its own layer. When a photo has a clear subject, I cut it out (lined up with the photo's real edges, stray hair included), fill the background behind it using only the background around it, and let the subject glide over that as one piece. Nothing of her stays behind any more. What shows in the gap is still a soft guess, not the real scene, and landscapes without one subject work exactly as before.

2026-10-26

A friend showed me one of those "photo to 3D" sites: upload a picture, wait five minutes in a queue on someone else's GPU, two free photos a month. I wanted the same thing without handing over the photo, so I built it to run in your browser. A small depth model (about 27 MB, downloaded once) works out what's near and what's far, and the camera then orbits, zooms, swings or does the Hitchcock dolly zoom over it — MP4 or GIF, as many as you like. To be straight about it: it's a parallax animation, not a 3D model, and what hid behind your subject is filled in by stretching the background, so keep the moves small and it looks surprisingly real.

Related Tools

💬 Bug, idea, or just to say hi? Tell Milo 🐨 · [email protected]