ToolBuddyToolBuddy
GameNew

Normal Map Generator

Generate tangent-space normal, ambient occlusion, roughness, metallic, and height maps from a height image, with OpenGL and DirectX green-channel control.

Know your workflow

Supported files and how to use.

Check supported input/output details and follow the tool steps before exporting.

🧾

Technical specs and decision signals

Use these specs to validate workflow fit, privacy boundaries, and output expectations before you run the Normal Map Generator.

Cost

Free workflow with no signup gate for core usage.

Security

All processing runs in-browser — images never leave your device.

Device

Supports modern desktop and mobile browsers.

Tech specs

Input: PNG, JPG, WebP. Output: PNG, individually or as a ZIP. Maps: normal, ambient occlusion, roughness, metallic, height. Derived from the source image, not baked from mesh geometry.

🧭

How to use

Check supported input/output details and follow the tool steps before exporting.

01

Choose a height image (a greyscale height map gives the best result).

02

Tick the maps you want: normal, ambient occlusion, roughness, metallic, height (displacement) or specular.

03

Set the normal strength and edge filter (Sobel, Scharr or Prewitt), flip green for DirectX engines, and use Detail to blur noise or sharpen relief.

04

Click Make maps, then switch to 3D to see them lit on a sphere, cube or plane, or preview them as 3 × 3 tiles.

05

Download one map or all of them as a ZIP.

Guide

Learn, decide, and apply.

Understand how to how to generate a normal map from a height image in your browser, why it matters in repeat workflows, and when to use this tool with confidence.

✨

In-browser normal and pbr map generation

  • Runs entirely in your browser — images never leave your device.
  • Sobel-gradient normals with adjustable strength and edge wrapping for tileable sources.
  • First-class OpenGL/DirectX green-channel control, not a hidden default.
  • Generates five map types from one source in a single pass.
  • States when a colour source was converted to luminance instead of assuming you knew.
  • Honest about the boundary: derived from an image, not baked from geometry.
🎯

Derive pbr texture maps from a single height image

  • Turn a height or bump image into a usable tangent-space normal map.
  • Derive an ambient occlusion map for extra surface depth.
  • Produce roughness and metallic maps from a single greyscale source.
  • Convert a normal map between the OpenGL and DirectX conventions.
  • Build a full PBR map set from one source image without installing software.
About

About Normal Map Generator

How to generate a normal map from a height image in your browserIn-browser normal and pbr map generationDerive pbr texture maps from a single height image

Normal maps, with the convention made explicit

Normals are derived from a Sobel gradient over the source's luminance, with adjustable strength and optional edge wrapping for tileable sources.

OpenGL expects +Y up and DirectX expects +Y down. A map authored for the wrong one appears lit from the wrong side — the single most common normal-map complaint — so the green-channel toggle is a first-class control here rather than a hidden default.

Occlusion, roughness, metallic, and height in one pass

Ambient occlusion is approximated from the height field by sampling a ring of directions per pixel and measuring how much the surroundings rise above it. It is an approximation, not a ray-traced bake, and it is labelled that way.

Roughness, metallic, and height are levels remaps of the source luminance, each with its own minimum, maximum, contrast, and invert controls.

Know what you are getting

These maps are derived from a 2D image, not baked from mesh geometry. A normal map generated here encodes the gradient of your height image; it is not a high-to-low-poly bake, and the tool does not claim to be one.

If you supply a colour image, it is converted to luminance first and the tool says so — feeding an albedo map into a height-based generator is a common mistake that the output alone does not make obvious.

FAQ

Common questions.

Have more questions? Reach out via our contact page and we will respond within 24 hours.

Do my images upload to a server?

No. Map generation runs in your browser and nothing is sent to a server.

Is this a high-to-low-poly bake?

No. These maps are derived from the image you supply, not baked from mesh geometry. A normal map here encodes the gradient of your height image.

Why does my normal map look lit from the wrong side?

OpenGL expects +Y up and DirectX expects +Y down. Use the invert-green toggle to switch convention.

Can I use a colour image?

Yes, but it is converted to luminance first and the tool tells you so — feeding an albedo map into a height-based generator is a common mistake.

Is the ambient occlusion ray-traced?

No. It is a height-field approximation, not a ray-traced bake over geometry.

Can I generate several maps at once?

Yes. Select any combination of normal, AO, roughness, metallic, and height, and download them individually or as a ZIP.

Can I see the maps on a 3D shape?

Yes. After making the maps, switch the preview to 3D to see them together on a lit sphere, cube or plane, repeated up to 4 × 4, and orbit around it.

Which edge filter should I use?

Sobel suits most images. Scharr follows fine diagonal detail more accurately; Prewitt is softer and less sensitive to noise. Strength means the same for all three.

Guides

Learn with practical workflow guides.

Read intent-focused guides, then jump straight into the live tool workflow.

View all guides