Normal Map DirectX / OpenGL Converter

Convert between DirectX and OpenGL normal maps by inverting the green channel.

How to use

  1. Choose the PNG to convert.
  2. Identify the source convention and choose DirectX-to-OpenGL or the reverse.
  3. Run and save, then check the shading direction in the destination application.

Files and settings

You can also drop or paste images. Pasted images may not retain the original file metadata.

File contents and names are not stored or uploaded.

Up to about 134.2 MB and 70 MP per image, 268.4 MB of input in total, and 100.7 MB of output. Devices with limited memory may require smaller images.

Purpose and use

Switch normal-map conventions to match the renderer you use. If the normal Y direction appears reversed, check the destination convention before converting.

Example

Green value 64 becomes 191. Red, blue, and alpha are unchanged; a second inversion restores the original.

Interpreting the result

Choose the source convention and conversion direction yourself. Both directions replace G with 255−G.

Limits and caveats

The input convention is not auto-detected. This does not generate normals from height maps. Only non-interlaced 8-bit PNG is supported; color profiles are not written.

Related workflow

Use Texture Channel Pack & Unpack to inspect individual channels.

Try a use case and check the result

Invert only G as 255-G and verify that a round trip restores the values.

Example buttons replace the inputs and settings above and calculate. Restore previous input steps back one example at a time. After trying multiple examples, repeat restore to return to your original input. This history is lost when the page closes.

Invert G=20 and G=200

Input and settings

2×1 PNG: RGBA=(10,20,30,255),(40,200,60,128)

Expected result

G becomes 235 and 55. R/B/A stay 10/30/255 and 40/60/128.

Convert the previous output values back

Input and settings

2×1 PNG: G=235 and 55 / OpenGL→DirectX

Expected result

G returns to 20 and 200. Both directions use the same 255-G operation.

How to read the result

The conversion treats the Y direction as the green channel sign convention. Applying 255-G twice returns the original. R/B/A, dimensions and file order are retained.

Scope and limits

One non-interlaced 8-bit PNG, up to 128 MiB, 70 megapixels and 16,384 px per edge; indexed/APNG/tRNS unsupported. No normal renormalization, other-axis conversion or tangent/world-space conversion. The tool does not detect whether the source is actually a normal map. Restore returns the file/direction; rerun for output.

Independently calculate 255-20=235 and 255-200=55. Check saved pixels, preserved A=128, reverse conversion and original-file restoration.

Continue with the next task

Frequently asked questions

Will this change the original file?

No. Downloads are separate files. Closing the page discards the loaded content and results.

Which channel changes?

Only green (G) is inverted to 255−G. Red, blue, and alpha remain unchanged. Both conversion directions use the same operation.

Is the source convention detected automatically?

No. Check the source and destination DirectX/OpenGL conventions, then choose a direction. This does not generate normals from height maps.

Which image formats are supported?

Non-interlaced 8-bit grayscale, RGB, and RGBA PNG are supported. Indexed, 16-bit, animated, and tRNS PNGs are unsupported. Color profiles are not written.

Related tools

Inputs and storage

Keep any content you need before clearing. This tool does not autosave inputs or results. Reloading or closing the page, clearing inputs or resetting may discard your work.

Favorites and language preferences are stored separately and may be lost when site data is cleared. Tool resets and site-data deletion do not delete files already downloaded to your device.

Explore tools & games

All 120 tools · 16 games

All 120 tools · 16 games

Text & writing 26

Calculators & converters 22

Date & time 12

Images & PDF 26

Data & web 28

Random & handy 6

Games 16