# How liveness detection works

Source: https://help.didit.me/liveness-biometrics/how-liveness-works
Updated: 2026-10-12

Passive, 3D Flash and 3D Action liveness explained - what each one asks of the user, how strong each is, and which to pick for your flow.

Liveness proves the selfie came from a real person in front of the camera rather
than a photo, a screen, or a mask. **Passive** asks nothing of the user and is
the cheapest, at $0.10. **3D Flash** and **3D Action** add light-pattern and movement
checks for higher assurance, at $0.15.

## What liveness is for

[Video: The liveness selfie - Didit Academy](https://www.youtube.com/watch?v=LzGe-dMWjUw&t=529)

[Video: Passive liveness detection: a selfie check in under 5 seconds (demo) - Didit Academy](https://www.youtube.com/watch?v=AMJ20qYpUBU)

![A verification record in the Didit console with the Liveness section in the sections rail](https://help.didit.me/screenshots/session-detail-light.webp)

*What the check produced is on the session, not just its verdict.*

Face match tells you the selfie matches the document. It says nothing about where the selfie came from. Without liveness, holding up a photo of someone else's face next to their stolen ID would pass.

Liveness closes that gap. Didit's implementation achieves 99.9% accuracy with a false acceptance rate under 0.1%.

## The three methods

### Passive liveness - no user action

Single-frame deep-learning analysis. It examines the image for the artifacts, texture patterns, and other subtle signals that distinguish a live face from a reproduction. The user just takes a selfie; nothing is asked of them.

**Best for:** most consumer onboarding, and anywhere conversion matters. It's the most forgiving on older phones and poor lighting, and it's the cheapest variant, at $0.10 per check.

### 3D Flash - light patterns, still no action

Projects a sequence of light patterns onto the face at over 30 frames per second and analyses the reflections to build a depth map. The depth map confirms the face is three-dimensional, which rules out flat photos and screen replays.

**Best for:** financial services and account access, where you want strong assurance without asking the user to perform anything. $0.15.

### 3D Action & Flash - movement plus light

Combines the light-pattern depth check with a **randomised action** - blink, nod, or similar - so the response can't be pre-recorded. Deep-learning models examine both the micro-expressions and the light reflections.

**Best for:** banking, healthcare, and government applications. The highest assurance available, and the hardest to spoof even with a sophisticated mask. $0.15.

## Choosing between them

The honest tradeoff is assurance against completion rate. Every additional demand on the user costs some conversion, and active methods cost more on old devices, in bad light, and with users who don't understand the instruction.

A practical pattern: run passive liveness for everyone, and reserve an active method for the cases your risk rules escalate - high-value accounts, a suspicious device signal, a borderline face match. That keeps the friction where the risk is.

## Liveness does more than liveness

The liveness step is also where **duplicate detection** happens. Each face is automatically compared against every user you've already verified and against your blocklist, without you enabling anything separately. That's usually welcome, and occasionally surprising when your own returning customers match themselves. See [duplicate accounts and face search](https://help.didit.me/verification-sessions/duplicate-detection).

## Desktop and camera availability

Liveness needs a working camera. Whether the step is offered on desktop is a workflow-level setting, so if your users are completing on laptops and never see a selfie step, check that rather than assuming it isn't supported.

The failures that look like liveness bugs are usually the camera never opening at all - in-app browsers, previously-denied permissions, or another app holding the camera. See [fixing liveness and face match problems](https://help.didit.me/liveness-biometrics/liveness-and-face-match-issues).

## Privacy during age estimation

[Video: Liveness, face match and face search explained - Didit Academy](https://www.youtube.com/watch?v=ahAjhxMoK-A&t=127)

When liveness runs as part of **age estimation**, the user's face is deliberately shown blurred in the interface. That's a signal to the person that the image is being analysed for age only, not to identify them.

## Independently tested

A NIST-accredited laboratory ran 360 presentation attacks across six attack categories - printed photos, screen replays, masks and more - against Didit's liveness detection under ISO/IEC 30107-3. None succeeded. See [anti-spoofing certification](https://help.didit.me/liveness-biometrics/anti-spoofing-certification).

## What it costs

| Method | Price |
|---|---|
| Passive liveness | $0.10 |
| 3D Flash | $0.15 |
| 3D Action & Flash | $0.15 |

Passive liveness is $0.10 per check; the active methods cost more ($0.15). Switching a workflow from passive to an active method raises the price of every session.
