Time perception illusions you can exploit
The previous essay decomposed a wait into its phases. This one is about what to do when the wait is honest, unavoidable, and you want it to feel shorter without lying about it.
Here is the surprising part: the perception literature tells us that the same wait can feel like 80 % of itself or 120 % of itself depending on what you put on the screen. The clock does not change. The user's experience does. And the techniques that get you the 20 % savings are not vague — they are documented in CHI papers, vision-science journals, and a few oddball perceptual studies that turn out to apply directly to skeleton screens and progress bars.
I'd argue every designer working on perceived performance should know three of these illusions. They are honest in the sense that they exploit how human perception works, not how the user expects the system to behave. They do not promise that the system is faster than it is. They just shorten what the user feels.
Low contrast feels slower
The first one is older and wider than UX. Stuart Anstis's Anstis 2003 2003 paper — building on his earlier 2001 work Anstis 2001 on the "footsteps illusion" — measured a strange effect: moving objects appear to move slower at low contrast than at high contrast. The physical speed is identical. The perceived speed is not.
A grey bar moving across a black-and-white striped background appears to "step" — speeding up on light stripes (where it has high contrast) and slowing on dark stripes (where it has low contrast). Anstis's 2004 follow-up Anstis 2004 generalised the effect: it is the contrast of the leading and trailing edges, not the lateral edges, that drives the apparent speed. Even on uniform backgrounds, lower edge-contrast shrinks perceived motion amplitude.
A consequence of this phenomenon outside the browser is car colour. A driver in a red car travelling against a green woodland background is more likely to get a ticket than a driver going the same speed in a green car at the same forested spot, because the contrast between red and green is more readily picked up by a police officer hidden in the bushes — the red car simply appears to move faster, or over the limit. The phenomenon shows up in road-violation statistics around the world.
Back in the digital world, the UX consequence is direct. A high-contrast loading shimmer looks faster than a low-contrast one. A skeleton screen with crisp edges feels more responsive than one with soft, ghostly outlines. A subtle pulse animation on a low-contrast skeleton block actually feels slower than a sharp pulse on a high-contrast block, even when both run at the same frame rate. Direction matters too — without going too deep, a progress bar moving left-to-right reads as faster than the same bar moving right-to-left.
Two practical applications:
- Skeleton screens should default to higher contrast than designers usually pick. The instinct is to keep them subtle; the perception research says subtlety reads as slowness.
- Progressive image loading (LQIP, blur-up) benefits from sharpening the edges first. A low-quality placeholder that establishes high-contrast outlines lets the user "see" the image arriving, even before the textures resolve. LQIP is the canonical application of the Anstis effect — a soft ghostly placeholder reads as slower than a crisp one, even when both swap to the same final image at the same wall-clock moment. The instinct is to make the LQIP barely visible so the swap is gentle; the perception research argues the opposite.
The illusion is honest because it exploits a property of vision, not a misrepresentation of the system. The skeleton is doing what it claims to be doing — placeholding for content. It is just doing so in a way that respects how perception actually works.
Backwards-decelerating progress bars
The second illusion is more direct and more measurable. Chris Harrison and colleagues Harrison et al. 2010 ran a controlled CHI study on progress-bar pacing in 2010, building on their earlier UIST 2007 work Harrison et al. 2007. They tested several animation patterns on bars of identical real duration:
- Plain solid bar (the baseline).
- Bar with bands moving forward (in the direction of progress).
- Bar with bands moving backwards (against the direction of progress).
- Bands accelerating.
- Bands decelerating.
The result: bars with bands moving backwards and decelerating over the course of the wait felt the shortest. A 5.0-second bar with this pattern felt equivalent to a ~5.6-second plain bar — about 11–12 % perceived shorter Harrison et al. 2010.
The mechanism is the same train-passing-by-train illusion you experience sitting in a subway. When two objects move in opposite directions, your perceptual system reads the relative speed as the sum of both. Backwards-moving bands inside a forwards-moving bar exaggerate the apparent forward speed. The deceleration adds a second layer: bars that finish strong feel faster than bars that crawl to the line.
This is a real, measurable, empirically-grounded effect. It is small — 12 %, not 50 % — but it is consistent and free. Implementing it is a CSS keyframe animation. The cost is roughly one developer-hour and the gain is roughly the same as objectively shaving 600 ms off a 5-second wait.
The catch, raised in earlier essays, is that this only helps when the wait is honest — when you have real progress to report. A fake progress bar with a fixed CSS duration does not benefit from any of this; it is just a lie that looks slightly fancier. Only ship animated progress when the bar actually reflects reality.
The geometric-mean indifference threshold
The third one is the most counterintuitive. It is also the one most teams miss.
When users compare your product's loading time to a competitor's, they do not respond linearly. The threshold of indifference between two waits — the point at which the user genuinely cannot tell which is faster — sits at the geometric mean of the two durations, not the arithmetic mean.
If your competitor loads in 2 seconds and your product loads in 5 seconds, the indifference point is √(2 × 5) ≈ 3.16 seconds. To make your product feel "as fast as" the competitor, you need to ship a sub-3.16-second experience, not a sub-3.5-second one. Above 3.16 s, users feel you as slower; below it, they feel you as competitive even though the clock disagrees.
This finding has roots in animal-interval-timing studies — Russell Church and colleagues at Brown demonstrated the geometric-mean property in trained interval discrimination tasks Church et al. — and Denys Mishunov surfaced it for the UX community in his 2015 Smashing Magazine essay Mishunov 2015.
The implication for performance budgets: if you are competing on speed, you cannot just match the competitor's response time. The threshold is non-linear. The arithmetic mean of 2 s and 5 s is 3.5 s; you would still feel slower at 3.5 s than at 3.16 s. The geometric mean is the actual breakpoint.
This is also why "we are 30 % faster than the leader" claims rarely register with users. Below the geometric-mean indifference threshold, the difference is invisible. Above it, the difference is felt regardless of how it is marketed.
Honest illusions and the line
I'd argue these three illusions sit on the honest side of a line. They exploit how perception works, not what users believe about the system. They do not promise more than the product delivers. They just compress how the wait registers.
The deceptive side of the line includes:
- Fake progress bars with fixed CSS durations that do not reflect real progress.
- Skeleton screens for primarily-interactive surfaces (search inputs, sliders) where the user wants to act, not read.
- "Engaging loading" sequences that are deliberately padded to make the wait feel like a feature.
- Optimistic UI without a visible failure path — the rare-but-real failure case rolls back silently and the user never knows why their action did not stick.
Engaging loading deserves a footnote because the trade is non-obvious. Ornstein's Ornstein 1969 storage-size theory predicts that an elaborate engagement sequence shortens the wait prospectively (you have more to look at while passing) but lengthens it retrospectively (you have more to remember afterwards). Slack's multi-step boot and FIFA's loading-screen mini-game are the canonical cases — both shipped with the trade made consciously. Engaging loading is honest when the team accepts the retrospective cost; it is deceptive when the wait is padded to look like progress that did not exist. The line is not whether the engagement is fun; the line is whether the user would be upset if they knew exactly what the wait was paying for.
The difference is whether the user's mental model of the system matches reality. Anstis-driven contrast tuning, Harrison-driven progress pacing, and the geometric-mean threshold all preserve the user's mental model. They do not lie. They do not misrepresent. They just respect how perception works and use that to spend the same wait better.
Lines in this territory are easy to cross. The cure is to ask, when you ship a perception-layer trick: would the user be upset if they knew exactly what the UI was doing? If yes, you are over the line. If no — and Anstis, Harrison, and the geometric-mean threshold are all firmly "no" — you are fine.
What to do with this
Three takeaways before the next essay:
- Pick higher contrast than feels natural for skeletons and shimmers. The instinct toward subtlety reads as slowness. Anstis's data is twenty years old and still ignored.
- If you have determinate progress, animate it backwards-decelerating. A CSS keyframe ships it for ~12 % perceived speed-up. The trick is real progress data; without that, you should not be using a progress bar at all.
- Set your performance budgets against the geometric mean, not the arithmetic. If competitors load in 2 s and you load in 4 s, your real target is the geometric mean of those — ~2.83 s — not the average. Below it, you are competitive. Above it, you are not. Memorise the equation or save it somewhere: √(competitor load time × your load time) = the sub-X-second experience you need to feel as fast as the competition.
References · 8
- Anstis 2001
Anstis, S. M. (2001). Footsteps and inchworms: Illusions show that contrast modulates motion salience. Perception, 30(7), 785–794. The first formal description of the footsteps illusion that grounds the contrast / perceived-speed relationship.
- Anstis 2003
Anstis, S. M. (2003). Moving objects appear to slow down at low contrasts. Neural Networks, 16(5), 933–938. Quantifies the contrast-and-speed effect that argues for higher-contrast skeletons and shimmers.
- Anstis 2004
Anstis, S. M. (2004). Factors affecting footsteps: contrast can change the apparent speed, amplitude and direction of motion. Vision Research, 44(18), 2171–2178. Generalises the effect: leading- and trailing-edge contrast drives apparent speed even on uniform backgrounds.
- Harrison et al. 2007
Harrison, C., Amento, B., Kuznetsov, S., & Bell, R. (2007). Rethinking the progress bar. Proceedings of UIST '07, 115–118. Establishes that animation pattern measurably alters perceived progress-bar duration even with identical real duration.
- Harrison et al. 2010
Harrison, C., Yeo, Z., & Hudson, S. E. (2010). Faster progress bars: Manipulating perceived duration with visual augmentations. Proceedings of CHI '10, 1545–1548. The headline result: backwards-moving, decelerating ribbed progress bars produce ~11–12 % perceived speed-up over a plain bar of identical duration.
- Church et al.
Church, R. M., MacInnis, M., & Guilhardi, P. Work on animal interval timing at Brown University. The geometric-mean indifference property between two intervals; cited via Mishunov 2015 for its UX framing.
- Mishunov 2015
Mishunov, D. (2015). Why Performance Matters, Part 1: The Perception Of Time. Smashing Magazine. Surfaces the Weber–Fechner law and the geometric-mean indifference threshold for the UX community.
- Ornstein 1969
Ornstein, R. E. (1969). On the Experience of Time. Penguin Books. Storage-size account of remembered duration — used here to explain why engaging loading sequences shorten the wait prospectively but can lengthen it retrospectively.