PupilCheck

Android testing · on Google Play

Photograph an eye. Read the pupil back as numbers.

PupilCheck measures pupil size, position and shape from still photographs, offline, on the phone in your pocket.

It behaves well on the handsets we own. Close-up focus, exposure and sensor noise vary enormously between phones, and we can only find out what happens on yours if you run it there.

Patient details, images and scan records are stored only on this device. Subscription checks go through Google Play and carry no patient information.

How PupilCheck reads the pupil border A pupil margin drawn against a dashed reference circle of its own median radius. One arc at the 8:30 to 10:30 clock zone lies inside the circle and is marked as a flattening of 4.5 per cent; another at 11:30 to 1:30 bulges outside it and is marked as a protrusion of 7.1 per cent. Twelve clock-hour ticks ring the diagram. 12 3 6 9 −4.5% +7.1%
  • Reference circle a circle of the margin's own median radius
  • Flattening 8:30 to 10:30, reading 4.5% inside that circle
  • Protrusion 11:30 to 1:30, reading 7.1% outside it
An arc lying inside the circle is a flattening: a straighter edge where there should be a curve. An arc bulging outside it is a protrusion. Each is reported by clock zone and graded by its deviation as a percentage of the median radius. With two or more usable frames, a finding is confirmed only when it appears in a majority of them.
Version
1.3.0
Get it from
Google Play
Requires
Android 7.0 or newer
Free to try
10 analyses

What it measures

PupilCheck measures the pupil in still photographs of the right eye (OD) and left eye (OS). Every result is a geometric measurement taken from the image.

Pupil/iris ratio
The pupil's diameter as a percentage of the iris diameter. Both are measured in the same image, so the ratio does not change with camera distance or magnification. It is compared with a size baseline for the patient's age group.
% of iris diameter
Anisocoria
The difference between the right and left ratios. Pupils react to light, so uneven lighting between the two captures can produce a difference on its own.
percentage points
Ellipseness and form
The pupil's short axis as a percentage of its long axis, so a perfect circle scores the maximum. Because that describes the whole pupil and cannot see one flattened side, the form also looks at the border.
% short / long axis
Decentration
The distance between the pupil centre and the iris centre. Past the limit, the card names the direction too — nasal, temporal, upward, downward, or a diagonal between them.
% of iris radius
Border deformation
Flattenings and protrusions of the pupil margin, grouped by clock hour and graded by deviation. With two or more usable frames, a finding is confirmed only when it appears in a majority of them.
% of median radius

What it does not measure

PupilCheck analyses still images only. It does not record video and does not measure the pupillary light reflex — there is no latency, constriction velocity or habituation.

It has no scale reference, so it cannot measure millimetres: any millimetre figure on screen is a conversion from the ratio. It does not diagnose.

Where each number comes from

Border shape, ellipseness and decentration come only from the classical, pixel-based analysis. The on-device ML model contributes the pupil/iris ratio, and only when it agrees with the classical measurement — it never overwrites a measurement it contradicts.

The letter grade on a card (A–D) describes how confident the detection is, not how serious a finding is, and it falls to D when the two methods contradict each other. If no pupil boundary can be found, the card says so and lists the detector's reasons. PupilCheck never fills in a typical value for a measurement it could not make.

What you'll see

Your screens will differ in the numbers, not the layout.

Pick how to capture
Pick how to captureMirror assist points the rear camera at your own eye while you read the screen in a mirror; the hands-free version lets the quality gate press the shutter for you.
Both eyes, then the difference
Both eyes, then the differenceEach eye carries a detection-confidence grade. Here the two ratios differ by 4.4 points, which the app reports as a research observation rather than a finding.
The ratio against an age baseline
The ratio against an age baselineAn estimated diameter in millimetres is shown too, but it is a conversion from the ratio using an assumed iris size. The ratio is the measurement.
Warnings come before numbers
Warnings come before numbersA reflection near the pupil border is read as a flattening, so the card says so up front. Everything below that warning has to be read in its light.
Findings by clock zone
Findings by clock zoneFlattenings and protrusions are reported per clock zone with their deviation. Zones overlap by design, so one broad flattening can appear in several neighbours.
Compare, annotate, export
Compare, annotate, exportObserver notes typed here are printed in the reports. Exports are PDF, plain text and JSON; the scan itself is saved to history automatically.
The manual travels with the app
The manual travels with the appSix tabs, offline, in every supported language: what it measures, how to capture, how to read a result, deformation, reports, and limits.

Also in this build

23 languages

The interface, the clinical wording and the built-in manual, in 25 locales including Brazilian Portuguese and Traditional Chinese. Switchable without restarting a scan.

Four ways to export

PDF, plain text or JSON per scan, and the whole history as an Excel workbook. Observer notes you type before exporting are printed in the reports.

Scan history and a timeline

Every completed analysis is saved on the device. From a history record, a serial timeline plots ratio, ellipseness and confidence for each eye across all of a patient's scans.

USB iriscopes

Where the phone detects an external USB camera, PupilCheck can capture from it — including Dino-Lite iriscopes. Worth a try if you have one and an OTG cable.

Installing it on your phone

PupilCheck is on Google Play, so it installs like any other app: no APK file, no “unknown sources” switch and no Play Protect warning.

Open the Play listing on the phone

Tap the button below on the phone you want to test, or search Google Play for PupilCheck from CNRI. The app is labelled PupilCheck+ on the home screen.

Get it on Google Play

Tap Install

Play picks the right build for your phone’s processor and screen. If the listing says your device isn’t compatible, tell us the model — that is a result too.

Allow the camera on first launch

Capture needs it; nothing else does. PupilCheck asks for no contacts, no location and no accounts. Storage access is requested only on Android 9 and older, where saving a report needs it.

What’s free, before you start testing

The first 10 analyses are free, with every panel unlocked. After that, Google Play offers two monthly plans: Basic (unlimited analyses) and Basic + Natural Medicine (adds the Natural Medicine panels). The upgrade screen shows the price in your currency.

Testers do not need to subscribe. Ten analyses are enough for a useful report, and a useful report earns a free lifetime licence. See below.

Getting a measurable photograph

Light: soft and even, with reflections kept well away from the pupil border — inside the iris or beyond it.

Gaze: straight into the lens. A round pupil seen off axis is an ellipse, and the app cannot measure gaze angle.

Framing: the whole iris in frame, pupil as large in the image as focus allows. Photograph both eyes from the same distance so the two can be compared.

What we need back from you

The point of this build is the camera, not the arithmetic. A one-paragraph reply is genuinely useful; a reply with an exported report attached is better.

  • Your phone's make, model and Android version Including the year, if you know it. Part of what we are mapping is how far back close-up capture still works.
  • Whether the rear camera could focus at 10–12 cm This is the question we most need answered. Many phones will not focus that close, and some switch to a different lens when you try.
  • Which capture mode you used, and whether it settled Auto-capture, manual shutter, mirror assist, mirror assist with auto-capture, selfie mode, or a gallery import.
  • Whether the eye check refused good photographs Or passed bad ones. A capture that does not look like an eye is rejected, and we want to know where that judgement is wrong.
  • Whether a reflection warning appeared And if a border finding repeated when you took the same eye two or three times with the light moved slightly between shots.
  • Anything that crashed, froze, or came out untranslated The interface has 25 locales and no native speaker has reviewed the most recent additions.

Send it here

Attach a Save PDF or JSON export if you can — it carries the numbers, the grades and the warnings, so we can see what your phone saw.

support@cnri.edu

Photographs of a real patient's eye are not wanted and not needed. Your own eye, a colleague's, or a printed iris photograph all exercise the same pipeline.

A free lifetime licence, for a useful report

Send us a report that covers the first three questions above and attaches at least one PDF or JSON export, and we will send you a lifetime licence key for the PupilCheck sideload edition, with no monthly fee and no analysis limit.

The sideload edition is the same measurement app, installed from an APK file we send you instead of from Google Play. The key is bound to one phone, and it works only in the sideload edition: it does not unlock a Google Play subscription. The two editions install side by side.

Limits worth reading before you draw conclusions

What this is

PupilCheck is a research and educational tool for documenting pupil geometry. It is not a medical device, has not been cleared or approved by any regulator, and does not diagnose. Its results are observations for a qualified professional to interpret alongside a full examination.

The zone descriptions are inherited, not tested

Flattening and protrusion findings carry a short zone description inherited from earlier iris-chart research, which links clock zones to regions of the body. PupilCheck has not tested that correspondence, and nothing in its measurement work supports or refutes it. An accurate measurement of a flattening is not evidence of what the flattening means, so keep the two apart.

Two things you should expect to see

Decentration reads high. So far most eyes tested come out at or above the limit, including eyes photographed looking straight ahead, and the iris centre can be misplaced when the iris outline looks oval. Confirm an offset with repeat captures before recording it.

Reflections imitate flattenings. A specular highlight on or beside the pupil border is read as a straightened edge. The app warns you when it spots one close to the margin, but the warning identifies frames at risk rather than every affected frame. A real deformation stays put when the light moves; a reflection travels with it.