There is a vision measurement that takes three minutes, has been in the optometry literature since 1968, predicts a handful of real conditions earlier than the chart on the wall does, and your eye doctor almost certainly didn't run it the last time you went in. The measurement is visual contrast sensitivity. Most online versions of it are bad in interesting ways. We made a better one. We made it free.
That is the whole post, and the rest is footnotes. But the footnotes are where it gets fun.
The thing online VCS tests usually get wrong
The most-used free online contrast sensitivity test is a screenshot of a printed chart from 1988 (the FACT chart) rendered at whatever pixel size happens to land on your monitor, with a single trial per cell and a fixed nine-step ladder of contrast values. It asks you what direction the stripes are tilted, you click an arrow, it gives you a number.
It is genuinely useful. It is also genuinely broken in ways a vision scientist would flag inside about a minute:
- No calibration. The chart was designed at one physical size, viewed at one distance, on a printed page with stable contrast. None of those are true online. The same patient on a 14-inch laptop and a 27-inch monitor sees different stimuli and gets different numbers.
- Single trial per cell. With one yes/no decision per condition, there is no way to separate signal from a coin flip. You get one binary answer; it carries one bit of information.
- Fixed ladder. Nine discrete contrast steps means the test can't resolve anything finer than ~0.15 log units. The Pelli–Robson chart's own published test–retest variation is around ±0.15 log units (Pelli, Robson & Wilkins, 1988). When your measurement precision equals the meaningful clinical change, you're not measuring change anymore.
- No mid-gray surround. The contrast of a grating depends on the average luminance of the surface around it. Show the same Gabor on white and on mid-gray and a real psychophysical lab gets two different thresholds. Most online tests sit on whatever background the page CSS happened to inherit.
These tests then get used clinically — by some integrative-medicine practitioners, by patient communities tracking mold exposure or concussion recovery, by people who just want a number. And the results generate strong opinions, because the result depends on the test's flaws roughly as much as on the patient's vision. That is not a great place for a measurement to live.
We don't think any of this is anyone's fault. The dominant online VCS tool was built when the web couldn't render a calibrated grating without a Java applet and when adaptive psychophysics wasn't shippable in a browser. The tools were built when the tools were what they were. The web is different now. We rebuilt them.
What we built differently
Our methodology page goes into all of this in proper detail, but the short version:
- Per-device calibration. Three steps: a credit-card pixel-pitch match (so we know how many pixels per millimetre your screen has), a blind-spot test to estimate viewing distance (so we know how many millimetres of screen sit in one degree of your visual field), and a stripe-match gamma check (so we know your display isn't crushing low contrast into pure mid-gray). It takes about ninety seconds. It runs once per session.
- Adaptive thresholding. A 2-down-1-up transformed staircase at every spatial frequency, converging at 70.7% correct. This is the standard procedure from Levitt's 1971 derivation, and it's how thresholds have been measured in psychophysics labs for fifty years. We do not show you a fixed ladder of stimuli; we adjust contrast to where you actually are.
- Mid-gray test surface. Non-negotiable. The screen is the same mid-gray as the mean luminance of the Gabor; the Gabor sits on it like a fish in water. This is what makes a Michelson contrast measurement a Michelson contrast measurement.
- No mandatory email. Results live in your browser's localStorage. You take the test, you read the curve, you close the tab. That is allowed.
- Open methodology. The methodology page explains the staircase rules, the stimulus generation, the calibration math, and the parts we know aren't perfect. The point is that you, or your eye doctor, or anyone curious, can check our work.
If you want the long-form version of what contrast sensitivity actually measures and why a single point on the curve is not the same as "vision," we wrote that, too.
Why "free"
A reasonable question: if we put this much work into it, why doesn't it cost anything?
The honest answer is in two parts.
Part one: we want the number to be sourceable. A contrast sensitivity result is most useful when you can bring it to a clinician and say here is what I got, here is how it was measured, here is the methodology page where you can audit it. That stops working the instant the test costs money to take, because the population that needs it most — people worried something is off who haven't been able to get an answer — is exactly the population that has already spent a lot of money on healthcare that didn't help. Charging for the screening signal is a way to filter out the people who would benefit from it. We don't want to filter those people out.
Part two: there is a real business model behind this, but it isn't the test. We are going to ship a paid tier — $20, one-time — for people who want longitudinal tracking, an account that remembers their history, side-by-side comparison views, and a tidy PDF to email to their doctor. That's the product. The science underneath it is identical; the paid tier is convenience features layered on the same measurement. If you take the free test today and the paid test next year, the staircase will run the same way, the stimulus will be the same stimulus, and your number will be your number.
We will probably write a longer post one day about how we picked $20. The short version is: it's roughly what vcstest.com charges, the marginal cost of running our version is approximately zero, and our breakeven is in the dozens-of-users range. We do not need this to be a unicorn.
Free as in beer; also free as in we'd be embarrassed to charge for the screening itself.
Who this is for
A short list, in no particular order:
- People worried about their vision who pass the eye chart, can't say what's wrong, and would like a number on a piece of paper that says here is one thing that is actually a little off, please look at this.
- Patients with chronic conditions — MS, post-concussion symptoms, glaucoma under monitoring, cataract considering surgery, diabetes — for whom contrast sensitivity is known to change. A trend line over months is more useful than any single absolute value, and we make it cheap to generate the trend line.
- Patients in the mold / CIRS communities who have heard of VCS as a screening tool and want a properly-calibrated version of it. We have a separate post on the Shoemaker pattern that is honest about what is and isn't established there; this test is not a diagnostic for biotoxin exposure, but it is a properly-measured contrast sensitivity function, which is more than the alternatives offer.
- Clinicians who want a free, calibrated thing to hand a patient between visits, especially when the chair time isn't available to run Pelli–Robson in clinic.
- Anyone who reads a science blog post and goes "huh, I want to see my own contrast sensitivity function." This is, quietly, the audience we like writing for the most.
If you fit any of these, take it. If you don't, take it anyway — most people have never seen their CSF curve, and it's a neat thing to see.
The honest part
This is a screening signal. It is not a diagnostic test. It does not, and cannot, tell you what is wrong. It can tell you whether one specific functional measurement of your visual system is in the range that the literature considers normal for your age, and it can tell you whether that measurement is moving over time if you take it more than once. That is genuinely useful information. It is also not the same as an eye exam.
We're going to make mistakes. Some of them will be in the calibration math; some will be in the staircase parameters; some will be in the way we describe a particular condition. Our methodology page is public for exactly this reason — so that when we make a mistake, somebody can tell us, and we can fix it. We will be much more annoyed if you don't tell us than if you do.
What we will not do: tell you that you have a condition; tell you that you do not have a condition; replace your optometrist, ophthalmologist, neurologist, or any other clinician; sell your data; require your email to see your result; or charge you for the measurement itself. Those promises live on the about page, in slightly more formal language.
So
Take the test. It's free, it takes about three minutes, and we built it because we thought the existing options deserved a better neighbor.
Then take it again next month, on the same device, in the same lighting, after the same kind of day. Trends are where this measurement earns its keep.
If you find something interesting, or something broken, or something that disagrees with what a real eye exam tells you — write to us. We are easier to reach than most software is, and we read everything.
References
- Campbell, F. W., & Robson, J. G. (1968). Application of Fourier analysis to the visibility of gratings. Journal of Physiology, 197(3), 551–566. The 1968 paper that established the contrast sensitivity function and the spatial-frequency-channel framework the entire field still runs on.
- Pelli, D. G., Robson, J. G., & Wilkins, A. J. (1988). The design of a new letter chart for measuring contrast sensitivity. Clinical Vision Sciences, 2, 187–199. Source of the Pelli–Robson chart and the ±0.15 log unit test–retest figure the methodology bar still references.
- Lesmes, L. A., Lu, Z.-L., Baek, J., & Albright, T. D. (2010). Bayesian adaptive estimation of the contrast sensitivity function: the quick CSF method. Journal of Vision, 10(3):17. The qCSF method — Bayesian adaptive estimation of the full CSF in a few minutes. The procedural inspiration for shipping psychophysics in a browser at all.