Skip to main content

Normal Map Generator

Turn any photo or texture into a normal map in seconds. AI reads the real surface, so shadows stay shadows. Check every bump under a moving light, then export normal, height, roughness and AO maps for Blender, Unity and Unreal.

Try
Photo
Red brick wall, the sample texture
Normal mapopengl
Normal map of the brick wall
3D preview
Brick texture lit in 3D with its normal map
Detail, roughness, AO and single-map downloads

Bump detail

Size

Roughness and AO

Download one map

AI photo mode: shape read from the photo, shadows stay shadowsRuns in your browser. Images never leave your device.

Normal Map Examples from Real Photos

Eight surfaces shot straight on and run through the normal map generator in AI photo mode with default settings. Hover a ball to see its normal map, click to open it in the generator and change any setting.

AI Normal Map Generator vs Brightness as Height

Most normal map tools treat bright pixels as high. On this brick wall the pale mortar comes out raised and the bricks stay flat. AI photo mode reads the shape instead: the bricks stand out, the mortar sinks in and the dark stains stay flat.

  • Brick normal map with beveled bricks and recessed mortar
    Brick normal map where the mortar lines come out raised
    Brightness as heightAI photo mode

What Is a Normal Map?

A normal map is an RGB image that stores which way the surface faces at every pixel. Red is the X direction (left to right), green is Y (bottom to top) and blue is Z (straight out of the surface). A flat pixel is 128, 128, 255: the light purple blue that every normal map is mostly made of.

A game engine or renderer reads those directions and lights a flat polygon as if it had bricks, cracks and grooves. You get the look of millions of polygons on a low poly model, which is why every game asset and PBR material ships with a normal map. A normal map generator makes one from a photo or a height map, so you skip sculpting and baking.

MapWhat it storesMoves the mesh?Best for
Normal mapSurface direction per pixel, as RGBNo, only the lightingGame engines and real-time detail
Bump mapHeight as grayscale, turned into shading at render timeNoQuick detail in offline renders
Height mapHeight as grayscale, white is highOnly as an inputParallax, displacement and terrain
Displacement mapHeight that moves the verticesYesClose-ups that need a real silhouette
Normal map of crocodile scales

Move over the normal map (or tap it) to read the direction of any pixel.

RGB 128, 128, 255
XYZ 0.00, 0.00, 1.00
Facing straight out: a flat spot

How to Make a Normal Map from an Image

Image to normal map in four steps, from a photo on your phone to a material in your engine. The normal map generator already shows a brick wall, so you can try every setting before you upload anything.

  1. 1

    Upload, paste or take a photo

    Drop a PNG, JPG or WebP, paste one with Ctrl+V, or tap Take photo on your phone. Several files at once make a batch you download as one ZIP.

  2. 2

    Pick AI photo mode or image mode

    AI photo mode is for real photos: it reads the shape and ignores shadows and color. Image mode is for clean textures, scans and sprites where brightness already means height.

  3. 3

    Tune strength and detail

    Set the strength, then balance large, medium and fine bumps. Turn on Seamless for a texture that tiles. The 3D preview updates as you drag.

  4. 4

    Choose OpenGL or DirectX and download

    OpenGL for Blender, Unity and Godot, DirectX for Unreal Engine. Download the normal map as a PNG or every map in one ZIP.

Best Images for Normal Map Generation

AI photo mode copes with soft shadows, but every normal map generator gives the cleanest result from a flat, evenly lit photo of the surface.

Slate wall photographed straight on in soft light

Works well

  • Camera straight on, parallel to the surface
  • Soft, even light: an overcast day or a shaded wall
  • The material fills the whole frame
  • Sharp focus and at least 1024 pixels wide
Slate wall photographed at an angle in hard sunlight

Gives weaker maps

  • Shot at an angle, with perspective
  • Hard sun with long shadows and glare
  • Wet or shiny spots that mirror the light
  • Blurry, tiny or heavily compressed images

Height, Roughness and AO Maps from the Same Image

The normal map generator gives you a full PBR set from one photo, all in one ZIP. The height map doubles as a 16-bit displacement map.

  • Cobblestone photo

    Base color

    The photo itself, blended across its edges when you turn on Seamless so it tiles.

  • Cobblestone normal map

    Normal map

    Bends the light per pixel so a flat surface shows every stone, crack and groove without extra polygons.

  • Cobblestone height map

    Height map

    Grayscale depth, white is high. Saved as a 16-bit PNG, so displacement has no stair steps.

  • Cobblestone roughness map

    Roughness map

    How matte or glossy each spot is. Gaps and dusty spots stay rough, worn tops catch the light.

  • Cobblestone ambient occlusion map

    Ambient occlusion

    Darkens the gaps where light cannot reach, for depth in real-time scenes.

  • Cobblestone ORM map

    ORM map

    AO in red, roughness in green, metallic in blue: one texture for Unreal, Godot and glTF.

Use Your Normal Map in Blender, Unity and Unreal

Every map from the normal map generator drops straight into your engine. Two settings decide whether it looks right: the green channel format and a non-color texture. Here is where they live in each one.

  • Blender

    Add an Image Texture node, set Color Space to Non-Color, connect it to a Normal Map node and that to the Normal input of the Principled BSDF. Blender uses OpenGL. For real depth, feed the height map into a Displacement node.

    OpenGL · Non-Color
  • Unity

    Select the PNG and set Texture Type to Normal map, then drop it into the Normal Map slot of a Lit or Standard material and set the strength there. Unity uses OpenGL.

    OpenGL · Texture Type: Normal map
  • Unreal Engine

    Download with the DirectX format. Check that the texture uses the Normalmap compression setting and connect it to the Normal pin of your material. If the bumps look inverted, tick Flip Green Channel.

    DirectX · Compression: Normalmap
  • Godot

    Godot 4 uses OpenGL. In a StandardMaterial3D, enable Normal Map and load the texture, then put the roughness and AO maps in their own slots or use the ORM map with an ORMMaterial3D.

    OpenGL · StandardMaterial3D

Free, Private and Ready for Commercial Use

  • Your images stay on your device

    Most normal map online tools send your image to a server. This normal map generator runs in your browser, AI model included. Nothing is uploaded, so client work and unreleased art stay private.

  • Free, no sign-up

    No account, no watermark and no daily limit. Open the page and make as many maps as you need.

  • Yours for commercial use

    Maps made from your own images belong to you. Use them in games, renders, client projects and asset packs.

Normal Map Generator FAQ

Wood planks material ballCobblestone material ballBrick material ballCrocodile skin material ballRusty metal material ball

Make Your Normal Map Now

Drop in a photo and get normal, height, roughness and AO maps in seconds. Free, in your browser.

Upload an image