Point your camera at a scene and read the exposure: EV, and an ISO / shutter / aperture combination that will expose it. Turn any one of the three and the other two move to hold the exposure. It works out its own calibration from your camera's EXIF, it refuses readings it cannot stand behind, and nothing leaves your device.
Tap Light below to change it
Ready
Exposure compensation
The obvious approach does not work. You might think a light meter could just measure how bright the picture looks, but auto-exposure keeps the picture at roughly the same brightness whether you are in a cellar or on a beach. Image brightness alone tells you almost nothing.
What works is asking the camera what it had to do to get that picture. A camera that reports the exposure time and ISO it settled on has told you how much it had to open up, and the rest is the standard exposure equation, corrected by however far the resulting frame sits from middle grey:
EV100 = log2(N² / t) − log2(ISO / 100) + log2(Y / 0.18) + calibration
N the lens aperture
t exposure time, seconds
ISO the sensitivity the camera chose
Y measured luminance of the frame, 0 to 1
0.18 middle grey, what a meter renders 18% reflectance as
Everything constant in that chain folds into one number. The lens f-number, the units the browser
reports exposure time in, the camera's tone curve, the exact grey point: constants in a logarithm are a
single offset, which is what calibration is.
Two of those constants were only unknown because a video preview does not carry them. A photograph does. Its EXIF records the real f-number and the real exposure time as measured values, along with the ISO and, on many cameras, the meter's own reading of the scene brightness. So the tool photographs whatever it is already pointed at, works out that scene's true EV from the photograph's own record, and keeps the difference.
With those known, the physics says almost nothing should be left over. ISO 12232 rates sensitivity so that an exposure of 10/S lux-seconds renders 18% grey, which works out to a meter constant of 12.73, inside the range ISO 2720 allows and 0.03 stops from the 12.5 that hand meters are built to. A calibration landing near zero is the theory being confirmed, not a failure to find anything.
Press Calibrate and walk around for half a minute. References are taken whenever the light changes by more than a stop, because one reference calibrates the meter at one brightness, which is to say at one ISO and one shutter speed. A scale error in either would be indistinguishable from a genuine offset and would simply be absorbed. Across a range it cannot hide: it shows up as scatter, the median ignores the odd bad one, and the spread between them is reported as confidence. That is why a tidy set taken all at one wall reads as good and never firm.
Waiting for a reading.
Every setting is reflected into the address bar, so the link you copy reproduces exactly what you are looking at. The parameters, all optional:
12.34000.008 for 1/1258-0.5101 to 9light.artwaste.land/?ev=15&iso=400&f=16 opens
a sunny-16 exposure on ISO 400 film with the shutter worked out for you.
A handheld meter has a white dome on it, and that dome is the whole point: it gathers the light falling on the subject from every direction at once. A phone camera has no dome, so it can only read light reflected off whatever it is pointed at.
That difference is not cosmetic. A reflected reading depends on how reflective the subject happens to be, which is exactly the thing an incident reading exists to stop mattering: point a reflected meter at a black cat and a wedding dress in identical light and it will tell you two different exposures, both of them wrong. An incident meter gives the same answer for both, because the light falling on them is the same.
Some apps offer an "incident mode" that points the front camera at the sky, or asks you to hold a sheet of paper over the lens. Without a proper diffuser those are guesses wearing a number, and a number that looks fine and is wrong is worse than no number. So this tool does not offer it. If you need incident readings, you need a meter with a dome.
A flash meter has to be triggered in sync with the flash and integrate the burst over a few thousandths of a second. That needs a sync connection, which a web page does not have.
Safari does not expose the camera's exposure time or ISO to a web page, and without those there is no absolute reading to be had. Rather than invent one, the tool says so and offers two honest routes instead: Photo, which meters from a photograph and needs no calibration at all because a photograph carries its own exposure in EXIF, or the classic EV table by eye. Everything downstream of the reading works identically either way.
The gates in this tool are measured rather than chosen. A bench runs the whole chain over synthetic scenes whose true answer is known by construction, and reports the largest value at which each mechanism still fits inside a tenth of a stop, which is under a third of the smallest increment the dial can express. It changed the design twice.
| Mechanism | What the bench measured | What the tool does |
|---|---|---|
| Frame resampling | Box-filtering gamma-encoded bytes under-reads by up to 0.95 stops, always the same direction | Point-samples instead: worst case 0.12 stops, and it varies in sign |
| Clipping | 10% of the frame blown costs 0.10 stops | Refuses a reference past 5% |
| Tone curve | Asymmetric: below middle grey costs about twice what above does | Accepts 1.5 stops above, 0.5 below |
| Exposable range | A 30 fps preview can reach middle grey from about EV 0.6 to EV 17 | Calibrates across that span, not beyond it |
A calibrated reading should sit within a few tenths of a stop of a hand meter, which is inside colour negative's latitude and comfortably inside black and white's. It is not a Sekonic, and the honest reason is in the table above: a dedicated meter has a sensor built for the job, where this has a camera built to make pictures look nice, tone curve and all. What it has instead is that it is free, needs no install, and shows you its working.