Skip to main content

OpenEXR · Radiance HDR · Ultra HDR

Keep the light.
Skip the native bindings.

Read, transform, and write high dynamic range images anywhere JavaScript runs. One typed pixel format connects your browser, server, and creative tools.

npm install hdrify

HDRify

Every highlight. Every channel.

EXRHDRJPEG-R
Float32Array · RGBA · linear light

Read and write

Move between OpenEXR, Radiance RGBE, Ultra HDR, and Adobe gain map JPEGs with a consistent API.

Explore →

Transform with precision

Resize, flip, convert color spaces, and apply ACES, AgX, Khronos Neutral, or Reinhard tone mapping.

Explore →

Run where you work

Use the core library in browsers, workers, and Node.js. Add React previews, a CLI, or editor integration.

Explore →

A small API for a wide range

From encoded bytes to useful pixels.

Readers return a shared HdrifyImage: dimensions, floating-point RGBA pixels, and metadata. Transform it once, then choose your output format.

Pure JavaScript, TypeScript definitions, and tree-shakeable functions let you bring only the tools your application needs.

See complete code examples →
Convert EXR to Radiance HDR
import { readExr, writeHdr } from 'hdrify';

const response = await fetch('/studio.exr');
const image = readExr(new Uint8Array(await response.arrayBuffer()));

// One floating-point RGBA image. Any supported output.
const radiance = writeHdr(image);

React

Display HDR images with HdrifyCanvas and control exposure and tone mapping.

Build a preview →

Command line

Convert files, inspect metadata, and generate reference images from your terminal or scripts.

Use hdrify-cli →