A Blender addon for pixel-perfect UV editing. Every operator is reachable from the 3D Viewport's UV menu, so packing, snapping, and unwrapping pixel-aligned UVs never requires opening the UV editor. The same operators are also available from the UV Editor.
Two options:
From a release zip (recommended for most users)
- Download the latest
pixel-uv-tools-vX.Y.zipfrom the Releases page. - In Blender, open
Edit > Preferences > Add-ons > Install from Disk...and select the zip. - Enable Pixel UV Tools in the add-on list.
From source (for development or to track main)
Clone the repo directly into your Blender scripts/addons/ directory:
cd <blender-config>/scripts/addons
git clone https://github.com/Capacap/pixel-uv-tools.git
Then enable Pixel UV Tools in Edit > Preferences > Add-ons. Pulling the repo updates the addon in place.
Operators appear under UV > Pixel UV Tools in both the 3D Viewport (Edit Mode, U) and the UV Editor.
For a typical pixel-art model:
- Select the mesh faces you want to unwrap.
- Run Pixel Unwrap. For symmetric meshes Pixel Unwrap (Centerline) gives better results, and Pixel Unwrap (Active Edge) suits flat surfaces where a specific edge should define the UV baseline.
- If you re-edit the mesh or add islands later, run Pixel Pack Islands to re-pack to the pixel grid.
- For fine adjustments use Pixel Move UVs, Pixel Scale UVs, or the snap operators.
Every operator takes a Texture Size (or Resolution) parameter that defines the pixel grid. Set it to the resolution of your target texture.
At low texture sizes some islands come out smaller than a single pixel. Inflating them to a whole pixel count would turn long thin islands into squares, so every operator follows the same rule instead:
- Islands with a side smaller than one pixel are scaled uniformly from their larger side, so their true proportions survive. Islands smaller than a pixel on both sides keep their exact size.
- Subpixel sides are placed inside a single texel row or column, so they reveal as few partial pixels as possible.
- Islands collapsed to zero width or height (a common trick for giving a face a single flat color) are never resized, and are centered inside a texel so they sample one color unambiguously.
Subpixel islands render as solid strips or single-texel colors. Pixel Pack Islands and the unwrap operators report a warning when this happens; increase the texture size if those islands need paintable detail.
Pixel Move UVs
Translates the UVs of selected faces by an integer number of pixels. When invoked without arguments it enters an interactive drag mode where 20 screen-pixels of mouse movement equals one texture pixel. Confirm with LMB or Enter, cancel with RMB or Esc.
- Texture Size: width and height of the target texture. Default 256.
- Delta X, Delta Y: pixels to move on each axis. Default 0.
Pixel Scale UVs
Rounds the bounding-box size of the selection to an integer pixel count, then adds a pixel delta on each axis. Scales around the selection centroid.
- Texture Size: default 256.
- Delta X, Delta Y: additional pixels to add to the bounding-box width and height. Default 1.
Pixel Snap UVs
Snaps every UV vertex of selected faces to the nearest pixel corner. Best for hard-surface meshes. Tip: run it at twice the target resolution to preserve features smaller than a pixel, then snap again at the real resolution.
- Texture Size: default 256.
Pixel Snap Islands
For each selected UV island, rounds the bounding box to an even pixel count and centers the box on a pixel corner. Keeps island proportions pixel-perfect without squashing small details. Islands smaller than one pixel keep their true proportions (see Subpixel islands).
- Resolution: default 256.
Pixel Pack Islands
Packs islands, snaps their dimensions to the pixel grid, re-packs to close the gaps created by snapping, then snaps island positions to pixel corners. A drop-in replacement for Blender's Pack Islands when the target is a fixed-resolution texture. Islands smaller than one pixel keep their true proportions (see Subpixel islands).
- Texture Resolution: default 256.
- Pixel Margin: margin between islands in pixels. Default 2.
- UDIM Source: forwarded to Pack Islands. Default Closest UDIM.
- Rotate, Scale, Merge Overlapping, Lock Pinned Islands, Pin Method, Shape Method: forwarded to Pack Islands. See Blender's Pack Islands documentation for details.
Pixel Unwrap
Runs Blender's angle-based unwrap over the selected faces (respecting seams and pinned UVs), then packs and snaps the result to the pixel grid with the same pipeline as Pixel Pack Islands. The simplest way to get pixel-aligned UVs on any mesh. Start here if you are unsure which unwrap operator to use.
- Texture Size: default 256.
- Packing Margin: pixels between islands. Default 2.
Pixel Unwrap (Active Edge)
Pins the active edge along the U axis using its 3D length, then runs an angle-based unwrap over the selected faces. Use this when a specific edge should become horizontal in UV space. If no faces are selected, the operator selects faces reachable from the active edge through non-seam edges.
Pixel Unwrap (Centerline)
Pins vertices on the X = 0 plane to a vertical line in UV space, runs an angle-based unwrap on each seam-delimited island, packs the result, and snaps everything to the pixel grid. Designed for symmetric meshes (characters, weapons) where the silhouette's center should land on a texel boundary.
- Texture Size: default 256.
- Packing Margin: pixels between islands. Default 2.
- Shape Method: shape metric used by the packing step. Default Bounding Box.
- Centerline Adjustment:
Pixel Cornerplaces the centerline on a texel boundary,Pixel Centeroffsets by half a pixel so the centerline runs through texel centers. Default Pixel Corner.
Pixel Smart Follow Quads
For each UV island, picks the quad whose 3D shape is closest to a regular rectangle, rebuilds it as a rectangle whose side lengths are rounded to an integer pixel count, then runs Follow Active Quads from that seed. The island is translated so the seed quad's anchor corner lands on a pixel corner, which keeps the full quad grid aligned to the pixel grid. Useful for gridded surfaces (tiled floors, machinery panels) where Follow Active Quads already gives a clean layout but you want the cells to match texel boundaries.
- Texture Size: default 256.
- Edge Length Mode: forwarded to Follow Active Quads.
Evenspaces all edges equally,LengthandLength Averageweight by 3D edge length. Default Even.
Pixel Move Islands and Pixel Scale Islands are registered but not shown in the UV menu. They are used internally by Pixel Pack Islands and can be invoked by name through F3 search if you need them directly.