Height converter

Convert a Height Map to a Normal Map

A grayscale height field is the cleanest input for deterministic gradient conversion. White and black only describe relative height; the filter and strength decide how quickly the virtual surface turns between pixels.

Height converterChoose a PNG, JPEG, WebP, or BMP (up to 50 MB).
Local image processing
Drop an image hereChoose a PNG, JPEG, WebP, or BMP (up to 50 MB).Local image processing

A reliable workflow

Height values need an external scale

A height map is scalar data: brightness orders relative elevation, but does not define real-world millimetres without an external scale.

Height gradient to RGB normal directionA grayscale height change becomes horizontal and vertical gradients, then a normalized vector encoded into RGB.1 · HEIGHT2 · GRADIENTdx + dy + level Z3 · RGB NORMALnormalize → 0…255
1

Choose Scharr or Sobel deliberately

Scharr gives more rotationally balanced 3×3 gradients; Sobel remains useful when matching an established asset pipeline.

2

Clamp and wrap solve different boundaries

Clamp sampling repeats border pixels. Wrap sampling reads the opposite edge and is appropriate only when the height source is intended to tile.

3

A practical height map to normal map procedure

Start the height map to normal map conversion with a source that has one clear meaning: lighter pixels are higher, or darker pixels are higher. Use Invert Height to correct that interpretation before changing vector channels. Begin with modest strength and compare Sobel with Scharr on diagonal as well as horizontal details. Clamp is appropriate for a non-repeating asset; Wrap is appropriate only when both pairs of height-map edges are intended to meet. A clean conversion should keep flat areas close to neutral blue while slopes change smoothly.

4

Judge the conversion in its final material

The browser can show whether the height map to normal map calculation is internally consistent, but the destination still controls UV scale, tangent basis, texture decoding, compression, and material strength. Import the PNG as non-color normal data, apply it to the mesh and UV set it was prepared for, and move one directional light across both axes. If the relief reverses only vertically, check the green-channel convention. If it breaks at UV islands, investigate tangents and seams before regenerating the height map to normal map output.