Normal Map Generator
Turn a height map or texture into a normal map. DirectX for Unreal, OpenGL for Unity, seamless tiling.
- ✓ Free, no sign-up
- ✓ Works for Unreal Engine & Unity
- ✓ Files processed securely, never stored
Result
Processed on our server. Files are never stored.
How to use the Normal Map Generator
- Upload a height map (white = high, black = low) or any texture. Colour images are converted to brightness automatically.
- Choose the format: DirectX for Unreal Engine, OpenGL for Unity, Blender and Godot.
- Set the strength. Low values give subtle surface detail; high values give deep, sharp relief.
- Smooth noisy photos with the blur slider, so the result is not full of tiny speckles.
- Press Generate, move your mouse over the lit preview to check the depth, then download the PNG.
What is a normal map?
A normal map stores the direction each pixel of a surface faces. Game engines use it to fake small bumps, cracks and grooves without extra polygons. The red channel is left/right, green is up/down and blue points out of the surface, which is why normal maps look purple-blue.
DirectX vs OpenGL: the green channel
- Unreal Engine expects DirectX normal maps (green = down).
- Unity, Blender and Godot expect OpenGL normal maps (green = up).
If your bumps look like dents in the engine, the green channel is the wrong way round. Regenerate with the other format, or tick Flip Green Channel in the texture settings (both Unreal and Unity have it). Read the full explanation in DirectX vs OpenGL Normal Maps.
Settings explained
- Strength multiplies the slope of the height map. Start around 2–3 for textures and raise it for subtle height maps.
- Smooth / blur softens the height map before the normals are calculated. Useful for photos and noisy scans.
- Seamless tiling samples across the edges, so a tileable input gives a tileable normal map with no seams.
- Invert height treats dark areas as raised. Use it when grooves come out as ridges.
Import settings
- Unreal: check that Compression Settings is Normalmap (Unreal usually detects normal maps on import).
- Unity: set Texture Type to Normal map in the import settings.
Tips for better results
- A real height map (from Blender, Substance or a scan) gives better results than a photo.
- Photos with strong lighting or shadows create false bumps. Use evenly lit textures.
- Generating from albedo is a quick trick, not a replacement for baked normals on hero assets.
FAQ
Should I use DirectX or OpenGL normal maps?
Unreal Engine uses the DirectX convention (green channel points down). Unity, Blender and Godot use OpenGL (green points up). Pick the format for your engine, or flip the green channel in the texture import settings.
Can I make a normal map from a normal photo or albedo texture?
Yes. The generator reads brightness as height, so light areas become raised and dark areas become dents. For best results use a proper height map, or blur the image a little to remove noise.
Is the result tileable?
With "Seamless tiling" on, edges are sampled from the opposite side of the image, so a tileable input gives a tileable normal map.
Do you keep my textures?
No. Files are processed in memory and deleted as soon as the result is sent back to you.
More free tools
Texture Channel Packer
Pack AO, roughness and metallic into one texture: Unreal ORM, Unity URP and HDRP Mask Map presets.
Open tool →Sprite Sheet Packer
Pack hundreds of sprites into atlases with trimming, padding and extrusion. Exports JSON for Paper2D and more.
Open tool →Power of Two Texture Resizer
Batch resize textures to power-of-two sizes, convert to PNG, JPG or WebP and shrink file sizes.
Open tool →