IES TM-25 · ray files · in the browser

TM-25 Ray File Viewer

Open the ray files LED manufacturers publish and look at them: every ray from its real start point, the far field they add up to, the irradiance a plane millimetres above the source receives, the spectrum.

Nothing to install. Your files are read in your browser and never uploaded; this site keeps no logs of what you open. Needs WebGPU: Chrome, Edge, Safari 26, or Firefox with WebGPU enabled.

A rendered far-field solid, coloured green to blue, with the bright rectangular emitting surface of the LED die visible inside it.
An ams OSRAM UV-C emitter: 500 000 rays leaving the die, wrapped in the far-field solid computed from all of them. The bright rectangle in the middle is the emitting surface itself, which is the thing a ray file records and an ordinary photometric file cannot.

What a TM-25 file is

An LDT or IES photometric file describes a luminaire as a point: intensity in every direction, measured far enough away that the size of the source no longer matters. That is all a lighting designer needs for a room.

It is not enough for someone designing the optic itself. Put a lens two millimetres above a die and the point-source assumption collapses, because different parts of the lens see different parts of the emitter. So LED makers publish ray files instead: every ray with a start point in millimetres, a direction, a flux, and optionally a wavelength, polarisation state or colour coordinates. Packages run from 100 000 to 20 million rays.

IES TM-25 is the vendor-neutral format for that data, consumed by Zemax OpticStudio, LightTools, SPEOS and similar tools. ams OSRAM, Lumileds, Nichia and Cree all ship it. Until now, looking at one meant a Windows desktop application or a licence for one of those optics packages. This viewer runs in the browser.

What the viewer shows

The rays

Drawn from their real start points, so the die, the lens exit and the package geometry are visible.

Far-field solid

Every ray binned into a C/γ grid with solid-angle normalisation, the same distribution an LDT would carry, with x and y cross sections.

Near-field irradiance

A target plane from 0.1 mm to 500 mm above the source, in W/m², where the point-source model breaks down.

Spectrum and safety

PPFD for horticultural sources, and ICNIRP actinic dose for UV emitters, from the header spectrum.

The viewer exports what it computes as EULUMDAT, IES, ATLA XML with the spectrum attached, or a relative .spd. Files of any size stream through the browser in slices; a 560 MB, 20-million-ray package opens without being loaded into memory.

The same emitter drawn as rays only, a dense cloud of fine lines spreading outward and downward from a small rectangular source.
The same file with the solid switched off: 200 000 flux-weighted rays, additively blended.

Files to try

Vendor licences permit use but not redistribution, so no manufacturer's file can be offered here. Instead there is a generated one, free to copy, ray-traced from an analytic model: a 1 mm square chip emitting Lambertian under a 1.4 mm silicone dome, refracted at the dome surface by Snell's law, with a small fraction escaping past the rim. Each ray starts where it leaves the package, on the dome or in the rim gap, as in a vendor file. It carries a phosphor-white spectrum and a per-ray wavelength.

Open the sample Open the 100k version

To keep a copy, download 25k rays (0.8 MB) or 100k rays (3.2 MB) and drop it on the viewer. Both describe the same source: 1.05 W radiant, half intensity at 61°. It is a simulation and its header says so.

For checking luminance code there is also a ground truth: a flat 1 × 1 mm Lambertian square, 1 W, 1M equal-flux rays with a flat 360–830 nm spectrum, whose radiance is exactly 318 310 W/(sr·m²) at every point and in every direction. Open it or download it (32 MB), and see the luminance notes for the method and the noise to expect.

For real measured data, ams OSRAM, Lumileds, Nichia and Cree publish ray files on their product pages, usually beside the datasheet and in several ray counts. Those are the files the reader was verified against.

Open source

The reader behind the viewer is tm25ray, a Rust crate with no dependencies that parses, writes and streams TM-25 files and bins them into a far field. The format is documented in its format notes, reverse-engineered from vendor files and checked against the standard and Julius Muschaweck's C++ TM25RaySetTools. The 3D viewer is part of eulumdat-rs, whose editor runs here too, at tm25.eu/app/ (and at iesna.eu): from the viewer, one click hands the ray set to its virtual goniophotometer, which replays the rays through covers and reflectors placed millimetres above the source.

[dependencies]
tm25ray = "0.2"