Free Online Normal Map Generator
Convert height maps and grayscale textures into normal maps instantly. Adjustable strength, side-by-side preview, PNG export — no uploads required.
How Normal Maps Work
Normal maps let you fake surface detail on low-polygon meshes.
Start with a height map
A grayscale image where light areas are high and dark areas are low. Can be painted, photographed, or procedurally generated.
Sobel gradient extraction
The tool computes brightness gradients in X and Y directions using the Sobel operator, then converts them to surface normal vectors.
RGB encoding
Normals are encoded as RGB: red = X (left/right), green = Y (up/down), blue = Z (depth). The characteristic purple tint indicates correct Z-up orientation.
Why Use This Tool
Fully private
Canvas 2D processing runs locally. Your textures never touch a server.
Instant preview
See the normal map side-by-side with your height map before downloading.
Industry standard output
OpenGL tangent-space PNG compatible with Unity, Unreal, Blender, and Three.js.
Frequently Asked Questions
What is a normal map?
A normal map is a texture that encodes surface direction (normals) as RGB color values. Game engines and 3D renderers use normal maps to simulate fine surface detail — like bumps, grooves, and scratches — without adding polygons to the mesh.
What is a height map?
A height map is a grayscale image where brightness represents elevation. White areas are high (raised), black areas are low (recessed). Normal maps are typically generated from height maps.
What algorithm does this use?
The tool applies a Sobel operator, a standard image processing technique that computes the gradient of brightness in the X and Y directions. These gradients are converted to surface normals and encoded as RGB values.
What does the strength slider control?
The strength multiplier scales the gradient before computing the normal. Higher values make bumps more pronounced and exaggerated. Lower values produce a flatter, more subtle normal map.
What color space is the normal map in?
The output is in OpenGL-style tangent space normal map format (+X right, +Y up, +Z toward the viewer). It is compatible with Unity, Unreal Engine, Blender, Three.js, and most other real-time renderers.
Does my image get uploaded?
No. All processing uses the browser Canvas 2D API entirely on your device. Your images never leave your browser.