Upload a texture or photo and this free online normal map generator turns it into a normal map. The same pass can also produce displacement, ambient occlusion, and specular maps. Preview the result in 2D and 3D, then download a PNG while the source image stays in your browser.
Create and Preview Your Texture Maps
The texture to normal map workspace below lets you adjust Strength, Level, and Blur/Sharp. Switch between Normal, Displacement, AO, and Specular to inspect each result and download the selected PNG.
Use Your Maps in Blender, Unity, and Unreal Engine
Generate Four Texture Maps from One Image
This normal map generator creates four texture maps from one image. They are not a complete PBR set, because the tool does not create base color, roughness, or metalness maps.
Normal Map
A normal map stores surface direction and mainly changes lighting detail. It does not add polygons or change the model outline. Confirm bump direction in the 2D result and 3D Preview.
Displacement Map
A displacement map stores grayscale height. Real geometric relief appears only when the renderer, material, and mesh subdivision support it. Without that setup, the image is height data, not a new mesh.
Ambient Occlusion Map
An ambient occlusion map darkens crevices and contact areas. Use it as extra shading on top of your lights. It does not replace lighting, and it should stay subtle if the scene already has contact shadows.
Specular Map
A specular map controls highlight or reflection strength by region. Many PBR materials use roughness or metalness instead, so confirm the target shader before you assign this map.
How to Generate a Normal Map from an Image
Follow this short path in the normal map generator, then inspect the result before download. The steps cover source choice, upload limits, parameter checks, and PNG export.
1
Choose a suitable source image
Prefer even lighting, clear surface detail, and little glare. Hard shadows can be mistaken for height, so a photo with a sharp cast shadow often creates false ridges in an image to normal map conversion.
2
Upload the texture
Upload a PNG or JPG up to 10MB. The file is processed in your browser as a normal map maker would, and the source image is not sent to this site's servers.
3
Adjust and inspect
Change Strength, Level, and Blur/Sharp while watching the 2D result. Use Invert Y or Invert Height if bumps look reversed, then rotate 3D Preview and move the light to confirm direction.
4
Select and download an output
After you make a normal map, open the Normal, Displacement, AO, or Specular tab. Check the current map, then download that PNG. Preview may use a smaller size for speed; download rebuilds the PNG at the source image size.
Normal Map Settings Explained
Each control changes a different part of the result. Judge values with the 2D map and 3D Preview together, then keep the setting that still matches the real surface.
Strength
Strength controls how obvious the surface-direction change is. Raise it when brick joints or scratches look too flat. Lower it if details turn sharp or unnatural once the 3D Preview light moves.
Level
Level adjusts overall depth response. There is no fixed correct value; judge it with Strength. If broad shapes look too deep, change Level first, then raise Strength only if fine edges still look weak.
Blur/Sharp
Negative values smooth noise. Positive values emphasize edges. Grainy or compressed photos usually need modest smoothing so JPEG blocks and sensor noise are not treated as surface detail.
Sobel vs Scharr
Sobel and Scharr both measure brightness change. Sobel is a solid default for most textures. Scharr can pick up finer responses; keep the preview that matches the real surface instead of the busier one.
Invert X / Invert Y / Invert Height
Invert X flips horizontal direction. Invert Y flips the green channel for another tangent-space convention. Invert Height reverses cavities and ridges. Change one control at a time and recheck the preview.
3D Preview
3D Preview lets you rotate the mesh, move the light, and check bump direction. A 2D map can still be inverted in engine, so confirm the same lighting response in your target software.
Where These Maps Are Used
Downloaded maps from this normal map generator can enter common 3D workflows after you set texture type and direction.

Game Development
Use a normal map for surface detail so you rely less on high-poly geometry. After import into Unity or Unreal Engine, check texture type and Y direction rather than assuming one invert setting.

3D Rendering and ArchViz
Add lighting detail to brick, stone, wood, and fabric. If the wall or prop still looks flat in silhouette, you need displacement or real modeling; a normal map will not push the outline.

PBR Texture Preparation
Generate first-pass Normal, AO, Displacement, and Specular maps from the same source. Continue in your target software: modern PBR graphs may need roughness or metalness instead of specular, and height still needs a displacement setup.
Learn More About Normal and Height Maps
Start with the concept, follow the making guide, or open a dedicated generator when your workflow needs normal, displacement, AO, or specular map data.
What Is a Normal Map?
Understand RGB direction data, purple normal maps, and how normal maps differ from bump and displacement maps.
How to Make a Normal Map
Compare image conversion, high-poly baking, and AI-assisted workflows, then choose the method that fits your asset.
Displacement Map Generator
Create a grayscale height map from an image, adjust height response, preview the result, and download a PNG in your browser.
AO Map Generator
Generate an ambient occlusion map from an image, adjust contact shading, preview the result, and download a PNG.
Specular Map Generator
Create a specular map from an image, adjust highlight response, preview the result, and download a PNG.
Common Questions
Answers about choosing a source image, local processing, download size, and software import.
Generate Your Normal Map in the Browser
Upload a texture to this normal map generator, inspect the result, and download the map you need as a PNG.