Drop an image
PNG, JPG, JPEG or WebP. Transparent pixels are preserved as a mask.
Convert any image into production-ready PBR texture maps. No account. No upload. Your pixels stay on your machine.
Choose an image or start with the sample material. All processing stays inside this tab.
The 3D viewer loads after a texture is processed.
Drag to orbit · scroll to zoom.
PNG, JPG, JPEG or WebP. Transparent pixels are preserved as a mask.
Tune height, direction and material response while the 2D and 3D previews update.
Download one linear PNG or the complete engine-ready PBR set as a ZIP.
Surface direction from Sobel or Scharr gradients.
Luminance-based depth for displacement workflows.
Approximation from local contrast and high-frequency detail.
Threshold-based mask with controllable edge softness.
Fast curvature approximation derived from the height field.
AO, roughness and metallic packed into R, G and B.
Material properties inferred from a single image are practical approximations—not AI measurements. You stay in control of every threshold.
Start with your own image, or load the local sample to see every preview and export control working.
Decoding, map generation, preview and export happen in your browser. The app has no image upload endpoint, account system or project database.
Read the privacy noteUse an evenly lit, front-facing texture with visible surface detail. Strong shadows and reflections can be misread as depth because a single image does not contain true geometry.
Blender, Unity and Godot use OpenGL (+Y). Unreal Engine uses DirectX (-Y). The difference between these tangent-space exports is the green channel direction.
The underlying detail is the same, but Unreal Engine expects DirectX (-Y) normal maps while Blender, Unity and Godot expect OpenGL (+Y). Export the matching convention, or flip the green channel, so the same source produces engine-correct normal maps without re-authoring the surface.
No. Roughness is estimated from local detail and metallic is threshold-derived. They are useful starting points that should be reviewed by an artist.
More levels reduce visible stepping when a height map drives real displacement. It produces a larger file and offers little benefit for most other map types.
Yes, but the conversion uses brightness as a depth clue. Even lighting and a front-facing source work best because shadows and reflections can be interpreted as surface relief.
No. Image decoding, processing, preview and export happen on your device. The website has no image upload endpoint or project database, and reloading the tab clears the current working session.
Red stores ambient occlusion, green stores roughness and blue stores metallic. Confirm that your destination shader expects the same channel convention.
Reduce Strength and Level, then add a small amount of pre-blur. A useful tangent-space normal map remains predominantly blue, with red and green variation around actual surface changes.
Normal Map Maker is a free online tool for turning an image into a normal map and related PBR textures. This concise guide explains the conversion, source-image choices, essential controls, engine conventions and local processing behind the workspace.
A normal map changes how light reacts across a 3D surface without adding polygons. Each RGB pixel stores a local surface direction, allowing brick joints, fabric grain, scratches and similar details to influence highlights and shading while the model silhouette stays unchanged. This makes normal mapping useful for games, product visualization and other real-time scenes where convincing detail must fit within a practical geometry budget.
Most finished materials rely on more than one texture, so artists usually author several normal maps across an environment or asset library and keep them consistent with the other channels. Normal Map Maker converts an image or height map into tangent-space directions inside your browser. It derives a grayscale height field, measures neighboring pixel changes with a Sobel or Scharr filter, and normalizes those slopes into an RGB texture. The process is deterministic rather than generative AI: strength, blur, edge handling and channel direction remain visible controls, and the 2D output plus 3D material preview help you judge the result before export.
Learn how height maps become normal mapsA clean height map is the most predictable source because brightness already represents elevation. A photo, diffuse texture, PNG, JPG or WebP can also work when it is front-facing and evenly lit. Strong shadows, reflections and painted color patterns may be mistaken for depth because a single image does not contain true geometry. For photo conversion, start with a neutral crop and use a small amount of blur before increasing strength.
PNG is a strong default for lossless sources and transparent materials. JPG is convenient for photographs, but compression blocks can become false fine detail. The tool preserves transparent pixels as a mask and supports images up to 4096 pixels on desktop, with a lower mobile limit to reduce memory pressure. Source quality matters more than file extension: remove lighting gradients, repair visible seams and decide whether bright areas should appear raised before generating the map.
Read the PNG to normal map guideBegin with moderate Strength and Level values. Scharr preserves crisp, balanced detail from a good height source, while Sobel can feel slightly softer on noisy images. Blur is applied before gradient calculation, so it removes small fluctuations rather than merely softening the finished texture. Repeat edge mode is useful for seamless materials; Clamp is safer for decals and non-tiling images. A practical tangent-space result remains mostly blue, with red and green changes around meaningful slopes.
If dents appear as bumps along one direction, check the green channel convention. Blender, Unity and Godot use OpenGL-style +Y normal maps, while Unreal Engine uses DirectX-style -Y maps. The convention switch flips that direction without changing the source. Use the moving light in the PBR preview to catch reversed shading, hard seams and excessive intensity before download, then confirm the shader settings in the destination project.
Compare OpenGL and DirectX conventionsThe online normal map generator can also create height, roughness, metallic, ambient occlusion and ORM textures from the same source. Height can support parallax or displacement. Roughness estimates reflection spread from local detail, metallic uses an adjustable threshold, and ambient occlusion approximates small crevice shading. These derived maps are starting points, not measurements: one image cannot reveal the complete physical response of a material, so review each channel instead of accepting it blindly.
ORM packs ambient occlusion into red, roughness into green and metallic into blue to reduce texture count in compatible shaders. Keep roughness broad enough to avoid sparkling highlights, verify metallic by material class rather than brightness, and use texture AO subtly. Exported data maps should be imported as Linear or Non-Color data; albedo remains sRGB. The engine presets and explicit filenames help keep channel direction and packed-map meaning clear when assets move into Blender, Unity, Unreal Engine or Godot.
Explore the PBR texture generatorYour source image is decoded, processed and previewed on your device. The website has no image upload endpoint, cloud project library or database for source and generated textures. Image pixels, filenames and settings are not stored in cookies, localStorage or IndexedDB. Reloading or closing the tab clears the active project because the application does not keep a server copy. This local-first workflow is useful for client work and unreleased art, although browser extensions and device software remain outside the site's control.
Before exporting, inspect the normal map under a moving light and test tiling on the plane preview. Confirm the OpenGL or DirectX direction, check every packed ORM channel, and judge detail at the final texel density rather than only at full zoom. Eight-bit PNG is suitable for most material maps; optional 16-bit height reduces stepping when real displacement needs more precision. Treat the generated files as a transparent, editable foundation and make the final material decisions in your preferred art or engine workflow.
Read the no-storage privacy policy