Generate tangent-space normal maps from your base color images using Sobel edge detection. Adjust strength, smoothing, and coordinate system (OpenGL / DirectX). Real-time 3D preview. All processing happens in your browser.
Click and drag to rotate • Scroll to zoom
Drag and drop any image file — PNG, JPEG, WebP, or BMP. The tool loads your albedo map for edge detection analysis. Nothing is uploaded to a server.
Adjust strength for depth intensity, smooth to reduce noise, and toggle DirectX Y-inversion for Unity/Unreal Engine compatibility. All changes update instantly in the preview.
Inspect the normal map on a 3D sphere with adjustable lighting. Rotate to see how surface detail reacts to light. Download as PNG for Blender, Unity, Unreal, or any 3D software.
The normal map is generated using Sobel-like edge detection on your base color image. Here's how each component works.
The tool uses Sobel-like gradient filtering across neighboring pixels to detect edges and color transitions in your image. Luminance differences are converted into tangent-space normal vectors (X, Y, Z direction per pixel).
Normal maps store surface direction as RGB values: Red channel = X axis (right/left), Green = Y axis (up/down), Blue = Z axis (facing direction). The characteristic blue-purple color means most normals point outward (Z is dominant).
Use the "Invert Y" toggle for DirectX engines (Unity, Unreal Engine, 3ds Max). Leave unchecked for OpenGL engines (Blender, Godot, Maya). The difference is only in the green channel's vertical direction.
The generated normal map is applied to a Three.js mesh alongside your base color. Rotate, zoom, and adjust lighting to verify surface detail and bump direction before downloading.
Follow this quick workflow to turn any photo or base color texture into a usable normal map for PBR materials.
Upload a high-resolution photo or albedo texture. Images with clear edges, patterns, and texture detail produce the best normal maps. Avoid blurry or heavily compressed images. The edge detection algorithm needs sharp contrast transitions to generate meaningful surface normals.
Set normal strength to 5–10 for subtle surface detail (wood grain, fabric weave), or 12–18 for exaggerated relief (cracked stone, rough terrain). Add smoothing (1–3) if the source image has noise or grain that creates unwanted bump artifacts. Higher smooth values produce cleaner, softer normal maps at the cost of fine detail.
Check the 3D preview, rotate the mesh and watch how surface detail catches the light. Ensure bumps appear to rise outward, not sink inward (if they look inverted, toggle Invert Y). When satisfied, download the normal map as PNG. For Unreal Engine or Unity, make sure Invert Y (DirectX) is checked before exporting.
The BaseColor to Normal Map converter is one step in a complete PBR material workflow. Combine it with these free tools.