PRIVATE BY DEFAULT
Your source stays in your tab
The free normal map generator decodes and processes images locally. No account, upload queue, or server round trip is required.
Turn an image or height map into a production-ready normal map, height map, AO, and displacement map. Private, local, and ready for Blender, Unity, and Unreal Engine workflows.
Generate Normal, Height, AO, Roughness, Metallic, Specular, Displacement, and ORM maps with live controls for strength, blur, contrast, and Y direction.
Upload an image or choose a sample texture to start.
A better normal map workflow
This normal map generator puts the useful controls first: local processing, visible output maps, and enough context to make a better decision before the asset reaches your material graph.
PRIVATE BY DEFAULT
The free normal map generator decodes and processes images locally. No account, upload queue, or server round trip is required.
PREVIEW FIRST
Switch between raw maps and a lit sphere, plane, or cube preview so you can catch weak details, inverted Y, and over-sharpening early.
READY FOR 3D
Apply Blender, Unity, or Unreal presets with the correct OpenGL or DirectX green-channel direction before downloading a PNG.
How to use the normal map generator
Start with what you already have, validate the result under light, and export only when the surface detail feels intentional. The tool is designed for quick iteration rather than a black-box conversion.
Try it with a sampleDrop in a PNG, JPG, or WebP. Photos, grayscale height maps, and tileable material textures all work as starting points.
Tune strength, blur, and contrast while the browser regenerates the map locally after every adjustment.
Use a 3D preview and select an engine preset to verify that the result reads correctly under directional light.
Export the normal map or any supporting height, AO, and displacement map for your next material pass.
NORMAL MAP BASICS
Use this free normal map generator online to match the input, controls, and target renderer. Run these checks before treating an exported map as final.
A normal map generator can only react to information that is present in the input. Grayscale height maps and evenly lit material textures give a clearer signal than photos with baked shadows, highlights, or perspective. Use a seamless texture when the final material will tile.
Strength controls how deep the surface appears, Blur removes small noise, and Contrast changes the separation between low and high areas. Start gently, compare the preview at the scale of the final asset, and change one setting at a time so the result stays believable.
The same normal map can look correct in one renderer and inverted in another. Check the green-channel direction, import the texture as Non-Color or a normal map where required, and inspect it under real lighting. If detail disappears, improve the source or material scale instead of only increasing Strength.
Supported outputs
A normal map is only one part of a material. Use the supporting maps as a starting point, then validate them inside your renderer where lighting, scale, and texture filtering are visible.
| Map | What it stores | Useful for |
|---|---|---|
| Normal | RGB tangent directions | Lighting response on a low-poly surface |
| Height | Grayscale luminance | Bump, displacement, or further map baking |
| AO | Grayscale occlusion estimate | Contact shadow and crevice detail |
| Displacement | Grayscale surface height | Material displacement experiments |
| Roughness | Grayscale highlight response | Gloss and surface response control |
| Metallic | Grayscale metalness estimate | PBR material starting points |
| Specular | Grayscale reflection estimate | Specular workflow starting points |
| ORM | R = AO · G = Roughness · B = Metallic | Packed PBR channel workflows |
Choose your starting point
Each tool page keeps the same local generator, but adds focused guidance for images, material textures, grayscale height data, and AI-assisted workflows.
IMAGE TO NORMAL MAP
Start with a photo, painted image, or material reference and turn its luminance detail into a normal map.
TEXTURE TO NORMAL MAP
Use wood, stone, fabric, brick, or other repeated texture detail in a focused material workflow.
HEIGHT MAP TO NORMAL MAP
Treat grayscale values as relative height and generate a normal map with explicit, predictable controls.
PBR TEXTURE GENERATOR
Export Normal, Height, AO, Roughness, Metallic, Specular, Displacement, and ORM maps, with batch ZIP processing for texture folders.
ROUGHNESS MAP GENERATOR
Create a roughness starting map from an image, then preview the highlight response before exporting it for your shader.
DISPLACEMENT MAP GENERATOR
Turn luminance into a displacement and height starting point for material or geometry experiments.
AI NORMAL MAP
Use a material prompt and optional reference image to prepare an API-ready normal map workflow with a local preview today.
Built for real workflows
Normal map direction and color-space settings are easy to miss. These presets keep the important handoff details visible while you work.
Keep the OpenGL Y direction, set the imported image to Non-Color, and connect it through a Normal Map node.
Use the DirectX preset when your material expects a flipped green channel, then set the texture type to Normal map.
Generate a DirectX-compatible map, import it as a normal texture, and keep compression settings consistent with your material.
Your original image is not uploaded by the free conversion flow. That makes the homepage useful for client textures, internal prototypes, and early material exploration.
A single image cannot recover true geometry. The generated map changes lighting response; it does not add polygons, correct perspective, or remove baked shadows from a photograph.
FAQ
The short version: normal maps are a fast shading shortcut, not a replacement for geometry or a physically accurate depth scan.
A normal map generator converts brightness changes in an image or grayscale height map into RGB surface directions. A renderer uses those directions to make a flat mesh respond to light as if it had more fine detail.
You can generate a usable starting point from most images, but the result depends on the image. Clear, consistent surface detail converts better than portraits, smooth gradients, or images with strong color lighting that does not represent physical height.
Upload the grayscale height map, keep contrast close to the source, adjust Strength until the edges read naturally, and download the Normal PNG. The tool treats luminance as height rather than trying to recover hidden geometry.
Use the tangent-space convention expected by your renderer. Blender commonly uses OpenGL Y direction, while many Unity and Unreal workflows expect DirectX-style green-channel orientation. Use the engine preset to make the switch explicit.
Not for the free generator on this page. The image is decoded, resized for browser memory safety when necessary, and processed in the current browser tab. It is not sent to a conversion endpoint.
A bump map stores height as grayscale and lets a shader derive a surface direction. A normal map stores the direction directly in RGB, which gives real-time renderers more control and is usually the more portable game-engine input.
An inverted result usually means the green channel direction does not match the target engine. A surface that looks inflated or noisy usually needs lower Strength, more Blur, or a less aggressive Contrast value.
Yes. The homepage tool exposes Height, AO, Roughness, Metallic, Specular, Displacement, and ORM previews alongside the Normal output. The supporting maps are heuristic starting points and should be validated in your material setup.