Skip to main content
Free browser-based texture tool

Free Normal Map Generator Online

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.

No sign-upSource stays localPNG export
Browser tool·no server upload

Build a production-ready map from one image.

Generate Normal, Height, AO, Roughness, Metallic, Specular, Displacement, and ORM maps with live controls for strength, blur, contrast, and Y direction.

Processed in your browser
stone-sample.png

Upload an image or choose a sample texture to start.

Preparing a Stone sample…
Preview surface
PNG exportHeight-based conversionNo sign-upSee supported outputs

A better normal map workflow

From a flat image to a lighting-ready surface.

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

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.

PREVIEW FIRST

See the surface before export

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

Use the right engine direction

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

Four small steps. A cleaner material pass.

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 sample
01

Add a texture or height map

Drop in a PNG, JPG, or WebP. Photos, grayscale height maps, and tileable material textures all work as starting points.

02

Shape the surface detail

Tune strength, blur, and contrast while the browser regenerates the map locally after every adjustment.

03

Check the lighting direction

Use a 3D preview and select an engine preset to verify that the result reads correctly under directional light.

04

Download a clean PNG

Export the normal map or any supporting height, AO, and displacement map for your next material pass.

NORMAL MAP BASICS

How this normal map generator turns pixels into surface detail.

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.

01

Choose a source that carries height information

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.

02

Tune strength before contrast

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.

03

Validate the map in the target renderer

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

More than a blue-purple preview.

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.

MapWhat it storesUseful for
NormalRGB tangent directionsLighting response on a low-poly surface
HeightGrayscale luminanceBump, displacement, or further map baking
AOGrayscale occlusion estimateContact shadow and crevice detail
DisplacementGrayscale surface heightMaterial displacement experiments
RoughnessGrayscale highlight responseGloss and surface response control
MetallicGrayscale metalness estimatePBR material starting points
SpecularGrayscale reflection estimateSpecular workflow starting points
ORMR = AO · G = Roughness · B = MetallicPacked PBR channel workflows

Built for real workflows

One conversion tool, three common destinations.

Normal map direction and color-space settings are easy to miss. These presets keep the important handoff details visible while you work.

Blender

Keep the OpenGL Y direction, set the imported image to Non-Color, and connect it through a Normal Map node.

  • OpenGL tangent space
  • Non-Color texture data
  • Fast material iteration
Use the presetRead the guide

Unity

Use the DirectX preset when your material expects a flipped green channel, then set the texture type to Normal map.

  • DirectX Y direction
  • Normal map import type
  • No forced server upload
Use the presetRead the guide

Unreal Engine

Generate a DirectX-compatible map, import it as a normal texture, and keep compression settings consistent with your material.

  • DirectX tangent basis
  • Normal map compression
  • Material preview before export
Use the presetRead the guide

Private processing is the default

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.

Know what the algorithm cannot infer

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

Questions before you export?

The short version: normal maps are a fast shading shortcut, not a replacement for geometry or a physically accurate depth scan.

What is a normal map generator?

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.

Can I generate a normal map from any image?

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.

How do I convert a height map to a normal map?

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.

Should I use OpenGL or DirectX normal maps?

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.

Are my images uploaded to a server?

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.

What is the difference between a normal map and a bump map?

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.

Why does my normal map look inverted or too strong?

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.

Can I generate AO or displacement maps too?

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.