SupaVoxel
Free 3D texturing tool

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 ·Updated

01

How to UV unwrap a model in 3 steps

  1. 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.
  2. 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.
  3. 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.
02

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

xatlas splits the surface at sharp edges and strong curves, so each chart (UV island) is a patch that flattens with little distortion.

One packed atlas

Every chart is scaled to the same texel density and packed into the 0–1 square, with no overlaps, ready for baking or painting.

Checker preview

A tinted checker texture goes straight onto the model. Squares that stay square mean low stretch; a break in the pattern is a seam.

Honest numbers

After each run you see the chart count, how much of the UV square is used and the area stretch, where 1.00 means no stretch at all.

Layout PNG for painting

Download the UV layout at 1K, 2K or 4K, on a dark grid or on a transparent background to use as a layer in Photoshop, Krita or Substance.

Runs on your device

xatlas runs as WebAssembly in a Web Worker inside the page. Nothing is uploaded, so client and unreleased models stay private.
03

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
SettingOptionsWhat it changes
Texture size1K, 2K, 4KThe resolution padding is measured in. Pick the size you will actually bake or paint at
Padding1, 2, 4, 8 pxEmpty 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 seamsxatlas max cost 4Bigger charts, fewer cuts, more stretch: 510 charts, area stretch 1.23
Charts: Balancedxatlas max cost 2 (default)The middle ground: 555 charts, area stretch 1.10
Charts: Less stretchxatlas max cost 1Smaller, flatter charts and more seams: 604 charts, area stretch 1.09
Tighter packingOn or offTries 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.

04

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.

05

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.

06

UV unwrapping online: tips

Do
  • 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
Avoid
  • 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
FAQ

Frequently asked questions

Is this UV unwrap tool free?

Yes. There's no account, no watermark and no limit on files. The unwrap runs on your own computer inside the browser, so there's nothing to pay for. Files up to 200 MB load; a model with hundreds of thousands of triangles takes a couple of minutes, and the tool offers to reduce it first.

How do I generate a UV map for a 3D model?

Drop the model onto the tool above, pick the texture size and padding, and click Unwrap UVs. When it finishes, check the Checker preview for stretch and seams, then download the GLB or OBJ with the new UVs. The Layout PNG shows the flat map at your texture size.

What is UV unwrapping?

It's flattening a 3D surface into 2D so an image can be mapped onto it. The surface is cut along seams into pieces called charts or UV islands, each piece is flattened with as little distortion as possible, and the pieces are packed into a square. Every point on the model then has a coordinate in the texture.

Why are my textures wrong after unwrapping?

Because they were painted for the old UV layout. New UVs put every part of the surface somewhere else in the square, so an old image no longer lines up. Bake the old texture onto the new UVs in Blender with Selected to Active, or create new texture maps for the new layout.

Which setting gives the least stretching?

Choose Less stretch under Charts. It stops charts from growing sooner, so you get smaller, flatter islands and more seams. On our 10,000-triangle test mesh it gave 604 charts with an area stretch of 1.09, against 510 charts and 1.23 for Fewer seams.

What padding should I use?

Four pixels at your chosen texture size is a safe default for game and web textures. Use 8 px if the texture will be mipmapped heavily or downscaled later, because padding shrinks along with the image. One or two pixels only suits a texture that stays at full size.

Is my model uploaded?

No. The file is read, unwrapped and written by JavaScript and WebAssembly inside the page. xatlas runs in a Web Worker on your device and nothing is sent to a server, so purchased assets and unreleased work stay private.

Can I UV unwrap a model with 500,000 triangles?

Yes, but it's slow. Our 500,000-triangle sample took 144.9 s at full size in Chrome. Above 200,000 triangles the tool offers to reduce the mesh to 100,000 first, which brought that same sample under 30 s in total and kept the shape. A texture can't show more detail than its pixels anyway.

Sources

  1. 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. 2.
    xatlas — GitHub (jpcy/xatlas)
    “Meshes are segmented into charts, which are parameterized and packed into an atlas.”
  3. 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. 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. 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. 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).”
Start free

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