A 2D panorama shows you a scene from one point. This page renders the same scene from two slightly different points and lays the result out the way headsets and YouTube expect — all inside your browser, nothing uploaded.
Drop a 360 (2:1) or VR180 (1:1) panorama here, or click to choose a file
The output is top-and-bottom: the left eye on top, the right eye underneath, each one a full equirectangular panorama at the same 2:1 (or 1:1 for VR180) shape as the source. That is the layout YouTube uses when an upload is marked as 3D 360 or 3D VR180, and it is what 360 players such as Skybox, DeoVR and the Quest browser expect. Drop it into a player, choose “3D” or “top-bottom”, and the scene gets depth.
The preview above is a red/cyan composite of the same two eyes, so you can judge the result on an ordinary screen before you put anything on your face.
Why it works, and where it gets soft
In an equirectangular panorama the horizontal axis is longitude: a pixel is an angle. So making a stereo pair does not need any perspective trick — a viewer standing a little to the left sees every object shifted by a small, mostly horizontal amount. The page estimates how far each part of the scene is, converts that into a horizontal offset, and resamples the panorama twice.
Two honest caveats:
The poles flatten. The physical size of a horizontal step shrinks with latitude, so the offset is scaled by the cosine of the latitude. Without it, the zenith and nadir smear into streaks; with it, the sky and floor stay nearly flat. That is the correct trade, not a bug.
The depth is a guess. The estimate comes from a single image, and the image is a projection the model was not trained on, so it is a plausible depth ordering rather than a measurement. Dense foliage, glass and mirrored floors are where it shows.
Using it
In a headset: copy the PNG across, open it in a 360 viewer that has a top-bottom mode (Skybox, DeoVR and the Quest browser all do), and set the layout to 3D top-bottom.
On YouTube: upload the PNG as a video, then in the video details set “3D video” to 360 (or VR180) and top-bottom. The player then shows it as a stereo panorama.
On a screen: the red/cyan preview needs paper glasses; if the depth looks reversed, that is the glasses, not the conversion.
Limits, stated plainly
Still images. Video panoramas would need the same work per frame; that is what the video converter does for ordinary footage, not for equirect yet.
2:1 or 1:1 only. The page needs to know the projection; a cropped or resized panorama cannot be identified reliably.
No hole filling at occlusion edges. Where a near object slides off a far one you may see a thin stretch, the same artefact every single-image approach has.
Output is capped at 2048 px wide to keep memory sane in a browser tab.
Can I animate it?
Not here. Each frame would need its own depth pass, and a 30-second panorama video is tens of thousands of frames — that is a batch job, not a browser tab job.
Why top-and-bottom and not side-by-side?
Because for a 360 image side-by-side would double the width of an already very wide picture, and every 360 player standardised on top-and-bottom. Side-by-side is a flat-video convention.