Free UV Unwrap Online
Drop a model and get new UVs: the surface is cut into charts, flattened with little stretch and packed into one 0–1 layout. Preview it with a checker texture, then download a GLB or OBJ with the UVs and a PNG of the layout. Free, and the file stays on your device.
- Powered by xatlas
- Checker and chart preview
- No sign-up
- GLB, OBJ and layout PNG
By SupaVoxel Team·Updated
How to UV unwrap a model in 3 steps
- 01
Drop the model
Drag a GLB, OBJ, FBX, glTF, STL, 3MF, PLY, USDZ, DAE or STEP file onto the tool above, up to 200 MB. The panel shows its triangle count and whether it carries textures. Try a sample loads a 500,000-triangle AI-generated bust. - 02
Pick the atlas settings
Choose the Texture size you will paint or bake at (1K, 2K or 4K), the Padding between charts in pixels (1, 2, 4 or 8), and how Charts are cut: Fewer seams, Balanced or Less stretch. Turn on Tighter packing if you want a little more of the square used and can wait longer. - 03
Unwrap, check, download
Click Unwrap UVs. Switch the preview between Checker (stretch and seams show up as bent or broken squares), Charts (each UV island in its own colour) and UV layout (the flat 2D map). Then download the GLB with UVs, an OBJ, the Layout PNG at your texture size, or a transparent PNG to paint over.
What this UV map generator does
UV unwrapping lays a 3D surface out flat so a 2D image can wrap around it. This tool does it automatically, with the same open-source unwrapper many engines and bakers use.
Charts cut where they should be
One packed atlas
Checker preview
Honest numbers
Layout PNG for painting
Runs on your device
UV unwrap settings explained
Defaults are 2K, 4 px padding and Balanced, which suit most game and web models. Chart counts below are from our 10,000-triangle test mesh.
Texture size
- Options
- 1K, 2K, 4K
- What it changes
- The resolution padding is measured in. Pick the size you will actually bake or paint at
Padding
- Options
- 1, 2, 4, 8 px
- What it changes
- Empty space around each chart so mipmaps and texture filtering don't bleed colour across seams. Use 8 px if you will downscale the texture later
Charts: Fewer seams
- Options
- xatlas max cost 4
- What it changes
- Bigger charts, fewer cuts, more stretch: 510 charts, area stretch 1.23
Charts: Balanced
- Options
- xatlas max cost 2 (default)
- What it changes
- The middle ground: 555 charts, area stretch 1.10
Charts: Less stretch
- Options
- xatlas max cost 1
- What it changes
- Smaller, flatter charts and more seams: 604 charts, area stretch 1.09
Tighter packing
- Options
- On or off
- What it changes
- Tries more chart positions to fill the square better. Slower on big models
| Setting | Options | What it changes |
|---|---|---|
| Texture size | 1K, 2K, 4K | The resolution padding is measured in. Pick the size you will actually bake or paint at |
| Padding | 1, 2, 4, 8 px | Empty space around each chart so mipmaps and texture filtering don't bleed colour across seams. Use 8 px if you will downscale the texture later |
| Charts: Fewer seams | xatlas max cost 4 | Bigger charts, fewer cuts, more stretch: 510 charts, area stretch 1.23 |
| Charts: Balanced | xatlas max cost 2 (default) | The middle ground: 555 charts, area stretch 1.10 |
| Charts: Less stretch | xatlas max cost 1 | Smaller, flatter charts and more seams: 604 charts, area stretch 1.09 |
| Tighter packing | On or off | Tries more chart positions to fill the square better. Slower on big models |
Measured with xatlas 0.2 (xatlasjs WebAssembly build) on a 10,000-triangle AI-generated mesh. Your counts depend on the shape.
How long does auto UV unwrap take?
It depends on triangle count, and it grows faster than the count does. In Chrome on our test machine, a 30,000-triangle scan took 4.6 s (593 charts, 58% of the square used), a 150,000-triangle character 18.7 s, and the 500,000-triangle sample 144.9 s at full size. Roughly three times the triangles cost almost eight times the wait.
So above 200,000 triangles the tool offers to reduce to 100,000 first. That pass keeps the shape and cut the sample's time to under 30 s (25.5 s and 29.6 s in two runs), with 1,316 charts and an area stretch of 1.08. You can still unwrap at full size, or reduce to an exact count with the mesh simplifier and unwrap that. For dense AI models and scans, reducing first is almost always right: a texture can't use detail finer than its pixels anyway.
Limits of an automatic UV unwrap
Seams land where the math puts them. Charts follow curvature, not your intentions, so a seam can run across a face or a logo. For a hero character you'd still mark seams by hand in Blender.
Large models get extra seams. The WebAssembly build of xatlas indexes vertices with 16 bits, so big meshes are cut into patches of 5,000 vertices before unwrapping and packed into one shared atlas. Each patch border becomes a seam.
Old textures don't carry over. New UVs mean a new layout, so a texture painted for the old one won't fit. The GLB you download has a plain grey material. To keep the look, bake the old texture onto the new UVs in Blender (Selected to Active), or generate fresh maps with the normal map generator.
UV unwrapping doesn't fix geometry. Holes, flipped faces and internal walls stay. Clean the mesh first with STL repair or rebuild it with the remesher, then unwrap.
UV unwrapping online: tips
- Set the texture size before you unwrap, since padding is counted in its pixels
- Check faces, hands and logos in the Checker preview before you download
- Reduce dense AI models to 100,000 triangles or fewer first
- Use the transparent layout PNG as a guide layer when painting by hand
- Expect your existing textures to fit the new UVs
- Use 1 px padding if the texture will be mipmapped or downscaled
- Unwrap a broken mesh; repair or remesh it first
- Expect artist-placed seams on a character's face
Related texturing and mesh tools
Frequently asked questions
Is this UV unwrap tool free?
How do I generate a UV map for a 3D model?
What is UV unwrapping?
Why are my textures wrong after unwrapping?
Which setting gives the least stretching?
What padding should I use?
Is my model uploaded?
Can I UV unwrap a model with 500,000 triangles?
Sources
- 1.xatlas — GitHub (jpcy/xatlas)
“xatlas is a small C++11 library with no external dependencies that generates unique texture coordinates suitable for baking lightmaps or texture painting.”
- 2.xatlas — GitHub (jpcy/xatlas)
“Meshes are segmented into charts, which are parameterized and packed into an atlas.”
- 3.Introduction to UV unwrapping (Blender Manual) — Blender Foundation
“Think of a UV map as projecting the surface of your 3D model onto a 2D image.”
- 4.Seams (Blender Manual) — Blender Foundation
“The more seams there are, the less stretching there is, but this is often an issue for the texturing process. It is a good idea to have as few seams as possible while having the least amount of stretching.”
- 5.UV editing: Smart UV Project (Blender Manual) — Blender Foundation
“A low limit will create lots of small UV islands with little distortion, while a high limit will create a few large islands with potentially more distortion.”
- 6.UV editing: Margin (Blender Manual) — Blender Foundation
“if you have a 1024x1024 texture and set the Margin to 1/1024, each UV island will have a margin of 1 pixel around it (and islands will be no closer than 2 pixels to each other).”
UV unwrap your model now
Drop a model into the tool above, check the new layout on a checker texture, and download GLB, OBJ or a layout PNG, all in your browser.
Free · runs in your browser · no sign-up