Free Cubemap Generator

Convert an equirectangular panorama to cubemap faces online, right in your browser. No signup. No upload.

Drop your panorama here

or click to browse · JPG / PNG / WebP · up to 50 MB

No panorama yet?

A free cubemap converter built for game engines

100% in-browser

Your panorama never leaves your device. All conversion runs locally in your browser using Canvas — no upload, no server, no account.

Engine-ready naming

Pick the naming convention that matches your tool-chain: the Unity preset names each file after the Skybox/6 Sided material’s own slots (front/back/left/right/up/down) so you can match file to slot by name, px/nx/py/ny/pz/nz suits Three.js and most general-purpose tools, and OpenGL tutorials usually use pos_x/neg_x style names.

Free, no signup

Unlike Photoshop scripts or paid tools, this is a free, no-account utility. Made by Panorama Generator to support the panorama-to-game-engine workflow.

ZIP or individual download

Grab all 6 faces as a single ZIP, or download faces individually if you only need certain sides.

Three face sizes

Convert to 512×512, 1024×1024, or 2048×2048 cubemap faces. Pick smaller for mobile or older GPUs; larger when your source resolution is high enough to fill it.

Embedded 360° preview

Upload your panorama and drag to inspect the full sphere before converting. Catch composition issues and seam problems early — without ever leaving the page.

How to convert a panorama to a cubemap

  1. 1. Upload a panorama

    Drop or pick a 2:1 equirectangular panorama (JPG/PNG/WebP). Your file stays on your device.

  2. 2. Preview in 360°

    Confirm you uploaded the right scene using the embedded 360° viewer.

  3. 3. Convert to cubemap

    Pick a face size (512/1024/2048) and naming convention, then click Convert. The equirectangular to cubemap conversion runs in your browser in 2-3 seconds.

  4. 4. Download ZIP

    Get all 6 faces named for your engine, ready to drag into a Unity 6-Sided skybox material or a Three.js CubeTextureLoader.

When to use a cubemap (vs. equirectangular)

A cubemap is a set of six square images that form the faces of an imaginary box around the viewer. It holds the same 360° scene as an equirectangular panorama, projected onto a cube instead of a sphere.

Run the equirectangular to cubemap conversion when your target is a legacy Unity built-in pipeline skybox, a mobile GPU without high-precision panoramic sampling, or a Three.js CubeTextureLoader — those all want six discrete faces. If your engine accepts equirectangular directly (URP/HDRP, modern WebGL, or Unreal — which unwraps an .hdr panorama into a TextureCube on import and feeds HDRI Backdrop), you may not need to convert at all. For the full decision tree, see Skybox Formats Explained.

AspectCubemapEquirectangular
LayoutSix square images, one per faceOne 2:1 image, like a world map
Distortion at polesNo polar singularity; mild corner stretchPixels stretched hard at zenith and nadir
GPU samplingWorks on GPUs without panoramic samplingNeeds high-precision panoramic sampling
Typical consumersLegacy Unity skybox, Three.js CubeTextureLoaderURP/HDRP, modern WebGL, Unreal, 360° viewers
Best forShipping a cubemap skybox into an engineOne-file storage, editing, and previewing

Use your cubemap in Unity, Three.js & more

Unity

Create a Material and set its shader to Skybox/6 Sided. Export with the Unity naming preset, then drag each PNG into the slot with the same name (Front, Back, Left, Right, Up, Down) and assign the material in Lighting → Environment. Tip: Unity’s slot labels already account for its axis quirk — just match names. Alternatively, import the original panorama directly and set Texture Shape = Cube with a Skybox/Cubemap material.

Unreal Engine

Unreal doesn’t assemble cubemaps from 6 separate images — skip the conversion and import your source 2:1 panorama directly (ideally as .hdr): UE unwraps it into a TextureCube on import, ready for HDRI Backdrop or a skysphere material. Use the 6 faces only for engines and libraries that take individual faces.

Three.js

const loader = new THREE.CubeTextureLoader(); const texture = loader.load(['px.png','nx.png','py.png','ny.png','pz.png','nz.png']); scene.background = texture; Export with the Three.js preset and the 6 files come out in exactly the [px, nx, py, ny, pz, nz] order CubeTextureLoader expects.

Cubemap face naming conventions compared

Every cube map naming scheme below describes the same six faces — only the filename differs.

Face (what you see)Three.js / genericUnity 6-Sided slotOpenGL
Right of viewpxleftpos_x
Left of viewnxrightneg_x
Abovepyuppos_y
Belownydownneg_y
Center (front)pzfrontpos_z
Behindnzbackneg_z

The swapped Unity column is deliberate — files are named after the material slot they belong in, not the axis, because Unity’s Left [+X] slot actually holds the right-hand view. Match file name to slot name and the skybox comes out correct.

Uploaded face previews also recognize posx/negx names (three.js’s own example assets) and right/left/top/bottom/front/back names (common in other converter tools).

Fix common cubemap problems

My cubemap looks inside-out or mirrored

An inside-out or mirrored cubemap usually means faces landed in the wrong slots. Re-run the panorama to cubemap export with your engine’s naming preset, trust Unity’s slot labels over axis names, and verify in the preview tab.

My skybox faces the wrong way

The Horizontal rotation slider, not a re-export, fixes a skybox that faces the wrong way. Set it anywhere from 0-360° before converting so your chosen landmark or key light lands on the cubemap’s front face.

Faces come out blurry or low-res

Blurry cubemap faces mean the requested face size exceeds the source panorama’s vertical resolution. Keep the face size at or below the source height, or generate a larger source with the AI Skybox Generator.

Don’t have a panorama yet?

Generate one in 30 seconds with our AI Skybox Generator. Prompt-driven, 2:1 equirectangular, ready to become a cubemap skybox in this converter.

Cubemap Generator FAQ

Is my image uploaded to your server?

No — your image is never uploaded. The image to cubemap conversion runs 100% in your browser using Canvas, and we never see your file.

What’s the difference between cubemap and equirectangular?

Equirectangular (also called a sphere map or spherical panorama) is one image (2:1 ratio, like a world map). Cubemap is the same scene unfolded into 6 square faces of an imaginary box around the viewer. Modern engines often accept equirectangular directly, but legacy pipelines and mobile GPUs still want cubemaps. Read more in our Skybox Formats guide.

Which naming convention should I use?

Use the Unity preset for a Skybox/6 Sided skybox, px/nx/py/ny/pz/nz for Three.js and most other tools, or the pos_x/neg_x preset for OpenGL projects. The Unity preset names each file after the material’s own six Inspector slots — including its counter-intuitive labelling, where Left [+X] holds the face that sits on your right when you face forward, and Right [-X] holds the one on your left — so you just drag each file into the slot with the matching name. Unreal users don’t need cubemap faces at all: Unreal Engine has no official importer for 6 loose face images and instead unwraps an equirectangular panorama — ideally an .hdr — into a TextureCube on import. Re-export with a different convention any time; no re-upload needed.

What face size should I use?

1024 px is a safe default for desktop and modern mobile VR. Use 512 for older mobile GPUs or to save memory. Use 2048 only when you have a very high-resolution source (e.g., 8192×4096) and the engine target supports it. Output face size cannot exceed the source’s vertical resolution.

Can I convert HDR or EXR files?

This page’s converter accepts JPG, PNG, and WebP only. For .hdr and .exr files, use the dedicated HDRI to Cubemap Converter — it keeps the floating-point data intact and exports true HDR cube faces for IBL lighting.

Can I view a cubemap online or convert it back to a panorama?

You can view a cubemap online by uploading its 6 faces to the “Preview a cubemap” tab on this page — they are stitched into an interactive 360° sphere so you can check face orientation and spot seams. To merge faces back into a single 2:1 equirectangular image, use the Cubemap to Panorama Converter.

Why are there visible seams between my faces?

If the source panorama doesn’t wrap seamlessly (left edge ≠ right edge), the cubemap will show that same discontinuity at face boundaries. AI-generated panoramas from Skybox Generator are wrap-corrected; camera-captured panoramas typically wrap correctly; stitched panoramas may not.

How do I change which direction the cubemap faces?

The horizontal rotation slider changes which direction the cubemap faces before you convert. It shifts which longitude of your panorama lands on each cube face, so you can put a specific building, horizon feature, or light source on the front face without re-editing the source image in Photoshop.