Normal map
Available as PNG
A Sobel gradient converts the height field into a normal map for surface lighting.
A free normal map generator for turning image detail into surface depth, right in your browser.
Start with a texture or height map. A normal map follows brightness, so photos with shadows or large objects can produce misleading relief.
Try a prepared height map
Generated examples with known heights, for checking relief and normal map settings.
Choose an image to generate your maps.
Your normal map preview will appear here after you choose an image.
Canvas lighting preview. The plane keeps your image proportions and uses a neutral material color.
Repeat the texture to check its edges. This preview does not remove seams.
A normal map is a color texture that tells a renderer which direction each point on a surface faces. Its red, green and blue channels encode those directions, creating the appearance of bumps, grooves and fine grain under light. Unlike added geometry, a normal map leaves the model's outline unchanged. This normal map generator estimates surface directions from image brightness: lighter areas become higher, darker areas lower. It works best with evenly lit texture photographs or prepared height images. Shadows and painted color can be mistaken for depth, so inspect the result before applying it to a finished material.
Drop a photograph or grayscale height image into the normal map maker. Use PNG, JPG or WebP up to 10 MB. Even lighting helps the converter read surface detail instead of cast shadows.
Tune strength and detail, then smooth unwanted noise. Inspect the normal map on the lit sphere and plane. Invert height if raised features should be recessed, and choose your export preset.
Save the normal map and height map as separate PNG files. Keep their UV scale aligned in your material. Images above 4096 pixels on either edge are resized, with the final dimensions shown before download.
| Map | Stores | Effect on the model |
|---|---|---|
| Normal map | RGB surface directions | Changes shading; preserves the silhouette. |
| Height map | Grayscale elevation | Feeds bump, parallax or displacement effects. |
| Displacement map | Surface offset values | Moves geometry when a displacement system applies it. |
Keep the normal map and height PNG together in your material library. The height PNG can serve as a displacement input; it is not a displaced mesh. Use a normal map for small surface marks and actual geometry for deep cuts or visible edges.
A tangent space normal map describes directions relative to a model's UV surface. OpenGL (+Y) and DirectX (-Y) use opposite green-channel directions, while red and blue remain the same. Start with OpenGL for Blender and Unity, or DirectX for Unreal Engine. The preset and green-channel toggle control the same setting in this normal map creator.
Import the normal map as normal data rather than a color texture. If the vertical lighting looks reversed, check the normal map's green-channel setting in your engine. Flip it in the export or on import; applying the flip twice cancels the correction.
Turn on the 2 × 2 tiled repeat to see four copies of your normal map side by side. Use the flat normal map or height view to inspect the center joins, then switch to the lit plane to see how those joins affect shading. This makes mismatched edges easier to find before tiling a material across a large surface.
If you are looking for a seamless texture generator, note that this tool checks repeats but does not repair seams. Begin with a tileable image or edit its opposing edges elsewhere. A normal map cannot hide a discontinuity already present in the source.
This lightweight PBR texture generator supplies the normal map and grayscale height input for a material workflow. Other PBR channels need information that a single brightness image cannot reliably provide. Here is what is available and what needs separate authoring.
Available as PNG
A Sobel gradient converts the height field into a normal map for surface lighting.
Available as PNG
Grayscale elevation derived from luminance, with your contrast, smoothing and inversion settings applied.
Not generated
Surface gloss needs separate authoring. Dark pixels in a photograph do not necessarily mean a smooth material.
Not generated
Reliable occlusion depends on surrounding geometry. This tool does not bake an AO map from your mesh.
Not generated
A metalness mask identifies material type. Image brightness alone cannot determine whether a surface is metal.
Set the normal map texture to Non-Color and connect it through a Tangent Space Normal Map node. Feed the node into the shader's Normal input.
Choose the OpenGL export, set Texture Type to Normal map on import, and assign it to the material's normal slot. Check its strength under your scene lighting.
Choose DirectX, use normal-map compression and connect the texture to the material's Normal input. Keep color-space conversion disabled for normal data.
A normal map changes rendered light only. Apply the height map as geometry displacement in a modeling application, then inspect thickness and mesh quality before exporting a printable model.
A normal map is an RGB texture that stores surface directions for a material shader. It changes how light falls across a model, adding the appearance of fine detail without adding polygons or changing its silhouette.
Choose a PNG, JPG or WebP texture, then adjust strength, smoothing and contrast in the preview. Select the green-channel convention your renderer expects and download the normal map as a PNG. A separate grayscale height PNG is also available.
Yes, this normal map generator is free to use without an account or credits. The conversion runs on your device, and exported PNG files have no watermark.
A normal map stores a direction in three color channels, which a shader uses for lighting. A height map stores a single grayscale elevation value. When connected to a displacement system, height values can move the actual surface; the resulting geometry depends on subdivision and renderer settings.
Start with OpenGL (+Y) for Blender and Unity, and DirectX (-Y) for Unreal Engine. The presets differ only in the normal map's green channel. If the vertical relief looks reversed, check the texture import settings and flip that channel once rather than in both the file and the engine.
You can inspect a normal map or height map in a 2 × 2 repeat to spot visible seams. The converter does not blend opposite edges or turn an arbitrary photograph into a seamless texture. For a clean repeat, prepare a tileable source image before converting it.
No. Image processing happens locally in your browser, and your images are never uploaded. A Web Worker reads the image and creates the normal map and height PNG on your device.
You retain ownership of your own source images, and each output is derived from your input. Whether you can use it commercially depends on the rights and licenses attached to that source. Check those permissions before including a normal map in a client project or a product for sale.
You can export a normal map and a grayscale height map as separate 8-bit PNG files. Exports keep the input dimensions unless an edge exceeds 4096 pixels, in which case the image is resized proportionally. Roughness, ambient occlusion and metallic downloads are not provided.
The PNG normal map can be used in Blender, Unity and Unreal Engine with the appropriate material and import settings. For 3D printing, a normal map alone does not create printable relief. Use the height output to displace and apply geometry in your modeling software, then check the mesh and physical dimensions before printing.
Build the shape first, then use your normal map for surface detail. Start with an image to 3D model workflow for a reference picture, or a text to 3D model workflow for a written idea.