Convert image contrast into surface direction.
An image-to-normal-map workflow begins by treating luminance as height. The browser measures local brightness changes, converts those slopes into RGB direction vectors, and shows the result immediately. The best source is one where brightness describes relief rather than painted color or existing shadows.
Remove baked lighting first
A photograph may contain highlights and cast shadows unrelated to geometry. Those tonal changes become false slopes. Flatten lighting, reduce color noise, and create an intentional grayscale height image when the material needs reliable physical cues.
Preserve detail without chatter
The Scharr preset is a useful starting point for curved or diagonal details. Add one or two smoothing steps when compression noise creates speckled normals. Increase strength only after the noise pattern is under control.
Fix raised and recessed regions
When the light preview makes cavities look like bumps, try Invert height. When only vertical lighting looks reversed inside the target engine, change OpenGL Y+ to DirectX Y− instead. These controls solve different orientation problems.
Inspect the material, not just RGB
The familiar purple-blue image is only an encoding. Material mode decodes it into a simple lit surface, which makes broken slopes and excessive strength easier to notice before the PNG reaches a game engine or renderer.
- Add a sourceChoose a PNG, JPG, or WebP, drag it into the input panel, or begin with a built-in sample.
- Tune reliefAdjust strength, smoothing, filter, orientation, height inversion, and edge behavior.
- Inspect lightingCompare source and normal views, then move the material light with a pointer or the X/Y sliders.
- Export PNGDownload the full generated normal map. Nothing is sent to a server during conversion.
Image to normal map FAQ
Does this tool upload my texture?
No. Image decoding, filtering, preview rendering, and PNG creation happen in the browser. The service has no upload endpoint, analytics script, account system, or third-party image processor.
Should white be high or low in the source?
By default, white is treated as high and black as low. Enable Invert height when your source uses the opposite convention or when the result looks embossed instead of engraved.
Which normal map format should I use?
Use the format your target engine requests. Blender and many OpenGL workflows typically use Y+, while several DirectX pipelines use Y−. If uncertain, import a small test and confirm the green-channel direction under a known light.
Can any image become a normal map?
The converter accepts ordinary color images, but usefulness depends on whether their brightness corresponds to relief. A cleaned height map usually produces a more accurate result than a photograph with baked illumination.
Why is the preview limited to a 1200-pixel edge?
Large images are resized for predictable interactive performance on phones and ordinary laptops. This is an explicit working limit, not an upload limit, because processing stays local. The output keeps the working dimensions shown in the interface.