Free · runs in your browser · files stay on your device

Low Poly Palette Texture: One Material, One PNG

Drop a low-poly model. Every face gets its colour from a cell in one small palette PNG (16 to 256 px), all parts share one material, and the whole model can draw in a single call. Click or lasso faces to paint them from the palette, swap the palette later without touching the UVs, and download a GLB, the PNG or an OBJ zip. Nothing is uploaded.

Loading the palette tool...
Demo with a sample file, recorded in this tool.

How to make a low-poly palette texture

  1. 1

    Drop the low-poly model

    A .glb/.gltf, .obj (with its .mtl), .fbx, .stl or .ply. The colours it has today, from materials, vertex colours or a texture, are read face by face.

  2. 2

    Pick a palette

    Keep the model's own colours (merged to the number you choose), pick a preset, paste hex codes, or take the colours of an image. Turn on gradient cells for a soft top-to-bottom shade.

  3. 3

    Paint faces

    Choose a colour, then click a part, a flat face set, a material, all faces of one colour, or single faces. Drag a lasso to paint everything inside it. Undo is one click.

  4. 4

    Download one material

    Get a GLB with one material and the palette PNG (nearest filtering, no mipmaps), the PNG on its own, an OBJ + MTL + PNG zip, or a .gpl palette for your paint app.

What the download does

Every face keeps its shape and gets its colour from one cell of the palette PNG. All parts share one material, so engines can batch them:

Draw callsOne material and, with "Join into one mesh", one mesh: the model draws in 1 call instead of one per material. The page shows before and after for your file.
TextureOne PNG of colour cells in a power-of-two grid (2x2 up to 8x8 cells, so up to 64 colours), 16 to 256 px. Small enough for the web, mobile and game jams.
UVsEach face's UVs sit in the centre of its colour cell, so the exact colour shows with nearest filtering. Gradient cells shift each vertex down the cell by its height.
Palette swapsChanging a cell's colour only changes the PNG. A new PNG drops onto the model you already exported, which is how day/night or team colour variants are made.
FilteringFlat cells: Nearest (point) filtering and no mipmaps are written into the GLB. In your engine keep it on point / closest. Gradient cells use linear filtering.

The limit, plainly: a palette holds flat colours (or a soft vertical shade with gradient cells). Photo textures, painted details, normal maps and decals do not fit in a palette; keep those models on their own textures.

Need a low-poly model first?

Make a low-poly 3D model from a text prompt or a photo with AI, then bring it here for one material and one palette PNG. The AI generator uses credits; this tool does not.

More free 3D tools

Low poly palette texture FAQ

A palette texture is a small image made of flat colour squares. Instead of giving each part of a low-poly model its own material, every face's UVs point at one square, so the whole model uses one material and one tiny PNG. Changing the colours means editing a few pixels, and the model can draw in one call.
Each material on a mesh is usually its own draw call. A scene of low-poly props with five to ten materials each adds up quickly, while one shared material lets an engine batch or merge them. It also keeps exports simple: one texture to import, one material to tweak.
Drop the model onto the tool at the top of this page. It reads the colour of every face, merges them into a palette of the size you choose, lays the colours out in one PNG and moves each face's UVs into its colour. Paint any faces you want to change, then download the GLB or the OBJ zip.
Yes. The UVs only say which cell a face uses. Change a swatch, or use "Swap colours (keep UVs)" with a preset, and only the PNG changes. The tool tells you when the UVs are still the same as your last download, so the new PNG fits the model you already exported.
With gradient cells on, each cell is a vertical shade of its colour, lighter at the top and darker at the bottom, and every vertex sits higher or lower in its cell by its height in the model. Trees, rocks and buildings get a soft fade without extra materials. The GLB then uses linear filtering, and each cell needs at least 8 pixels.
In Blender: make one material with an Image Texture node using your palette PNG (Interpolation: Closest), assign it to every object, then in the UV editor select faces, scale their UVs to 0 and move them onto the colour you want. Join the objects with Ctrl+J to get one mesh. This page does those steps for the whole model at once.
Kept: the shape, the colours (as palette cells), normals, part names when you do not join, and roughness as one value. Dropped: other texture maps (normal, metal, emission), animations and bones, and the node hierarchy (world positions are baked in). Detailed photo textures do not suit a palette; for those, keep the texture or repaint it with AI.
Yes. The tool is free with no signup, and the files it gives you are free for personal and commercial use, no attribution. Everything runs in your browser, so your model is never uploaded. Files up to 60 MB and 500,000 triangles work.

Palettes are made and checked in your browser. Downloads are free for personal and commercial use, no attribution needed. Blender, Unity, Unreal Engine, Godot, GIMP, Krita and Aseprite are named only to describe compatibility; The3DAI is not affiliated with or endorsed by them.