What is Normal Map Generator?
A normal map is a texture that stores surface direction instead of colour. Each pixel encodes a small tilt in red, green and blue, so a flat low-poly model can look like it has bolts, bricks or scratches without adding geometry. This normal map generator converts a grayscale height map - or a plain photo you turn into one - into a tangent-space normal map using a Sobel gradient. Everything runs locally in your browser, so your images are never uploaded to a server.
Common Uses for Normal Map Generator
- Create normal maps for Blender, Unity or Unreal materials from height maps
- Turn a bump map or grayscale displacement into a tangent-space normal map
- Add surface detail to 3D-printed models without extra polygons
- Generate tileable normal maps for game environment textures
- Convert a photographed surface (fabric, stone, wood) into a normal map
How this normal map generator works
The generator converts your image to luminance (a height value per pixel), optionally blurs it to remove noise, then runs a Sobel operator to measure the slope in the X and Y directions. Those slopes become the X and Y components of a surface normal, with Z pointing straight out. The normal is normalised and packed into RGB, where 128,128,255 is a flat surface. Because the maths is simple and local, it runs instantly even on large textures.
Normal map vs bump map - what's the difference?
A bump map stores height in a single grayscale channel, so it can only fake shading. A normal map stores a full 3D direction per pixel, so lighting, reflections and specular highlights all respond correctly. Engines ultimately use normals for lighting, so a bump map is usually converted to a normal map before use - which is exactly what this tool does.
Normal map resolution and format tips
Match the normal map resolution to your diffuse texture and keep it a power of two (512, 1024, 2048, 4096) for clean mipmapping. Export as PNG to avoid JPEG artefacts - compression noise in a normal map shows up as weird shading. For mobile, 1024 is usually plenty; use 2048 or 4096 only for hero assets where the surface is seen up close.
Making a height map from a photo
For photographic surfaces, convert the image to grayscale and boost contrast first, then raise the Smoothing value in this tool - photos carry high-frequency noise that turns into a gritty normal map. A good workflow is: desaturate, adjust levels so the range spans black to white, blur slightly, then generate. For man-made repeating patterns, build the height map by hand or with a displacement layer and the result will be far cleaner.