Skip to content
Normalforge

Normal maps and PBR textures in your browser

Normal map and PBR texture tools

Thirty browser tools for normal maps, PBR maps, seamless textures, height maps and texture packing. Your images stay on your device.

Tool index

PBR texture map generators
Ambient Occlusion Map GeneratorMake an AO map from a height map or texture: crevices and grooves get darker, open surfaces stay white.
Bump Map GeneratorMake a grey bump map from a photo or texture, and get the matching normal map from the same settings.
Curvature Map GeneratorMake a curvature map from a normal map (or a height map) to drive edge wear, dirt and highlight masks.
Displacement Map GeneratorMake a displacement map from an image and see it push real geometry in the 3D preview before you download a 16-bit PNG.
Metallic Map GeneratorMake a black-and-white metallic mask from a texture, by brightness or by picking the metal's colour.
PBR Material ViewerDrop your PBR texture maps and check the material on a sphere, cube or plane with GGX lighting, tiling and displacement.
PBR Texture GeneratorDrop a photo and get a full PBR set with a 3D preview: albedo with baked shading evened out, normal, height, AO, roughness, metallic and ORM.
Roughness Map GeneratorMake a roughness map from a photo or albedo and set its range, so shiny and dull areas read right in a PBR shader.
Specular Map GeneratorMake a specular map for engines and shaders that use the specular/gloss workflow instead of metallic/roughness.
Normal map tools
Combine Normal MapsBlend a detail normal map onto a base normal map and compare the five blend formulas on your own maps.
Height Map to Normal MapConvert a grey height map from Blender, Substance or a terrain tool into a normal map without losing 16-bit precision.
Image to Normal MapTurn a photo or texture into a normal map. Uneven lighting is taken out first, so a shadow on one side does not tilt the whole surface.
Normal Map CheckerCheck a normal map for vectors that are not unit length, pixels that point into the surface, and a likely green-channel mix-up.
Normal Map Converter: DirectX ↔ OpenGLFlip the green channel of a normal map to go from DirectX to OpenGL or back, and see which convention your map most likely uses.
Normal Map GeneratorDrop a texture or height map and get a normal map with a live 3D preview, in OpenGL or DirectX, as 8 or 16-bit PNG or TGA.
Normal Map ViewerOpen a normal map and see it lit in 3D. Move the light to check that bumps rise and grooves sink.
Sprite Normal Map GeneratorMake a normal map for a 2D sprite so it reacts to lights in your engine. Edges are bevelled from the transparency and the alpha is kept.
Texture packing and resizing
Mipmap Generator (Texture Mip Chain)Make all the mip levels of a texture, see them side by side, and download each level or a ZIP.
ORM Texture PackerPack ambient occlusion, roughness and metallic maps into one texture for glTF, Unreal or the Unity HDRP mask map.
Power of Two Texture ResizerResize any image to a power-of-two size (256, 512, 1024 …) for game engines and GPU mipmaps.
Texture Channel SplitterUnpack a channel-packed texture into separate grey maps, one per channel.
Texture Packer (Sprite Sheet)Pack many sprites into one sprite sheet and get the frame data as JSON for Phaser, Pixi or your own engine.
Height maps and terrain
Height Map GeneratorMake a height map from an image, check it as displaced geometry in 3D, then save a 16-bit PNG.
Normal Map to Height MapRebuild a grey height map from a normal map when you need displacement or parallax and only have the normals.
RAW Heightmap to PNG ConverterOpen a headerless .raw or .r16 terrain heightmap as a 16-bit PNG, or convert a PNG back to RAW.
Terrain Heightmap GeneratorGenerate a random terrain heightmap with mountains, valleys and erosion gullies, and download it as 16-bit PNG or RAW.
Seamless and tileable textures
Make Texture SeamlessFix the visible seams of a texture so it repeats cleanly, and see the seam ratio drop.
Seamless Normal Map GeneratorTurn any texture into a normal map that tiles: the image is made seamless first and the normal map is computed across the wrap edge.
Seamless Texture GeneratorGenerate a texture that tiles perfectly, from noise or a pattern, with a height map and normal map to match.
Tileable Texture TesterRepeat a texture in a grid and measure whether its edges join without a seam.

Normalforge makes and checks the textures behind 3D and game materials. Start from a photo, a height map or nothing at all, and most tools show their result in a 3D preview before you download it as 8 or 16-bit PNG or TGA. Normal maps can be written OpenGL style (green up, as glTF, Unity and Godot expect) or DirectX style, and every page explains the maths it uses, from the edge filters behind a normal map to the channel order of an ORM texture. Colour maps are saved as sRGB and all other maps as linear data, the way engines read them.