Match a live selfie to the portrait on an ID

FACEIO ID Match opens a browser popup, captures a live selfie and an ID image, then performs a 1:1 comparison between the selfie and the portrait on the document. Create an app in the FACEIO Console ↗, copy the App Public ID, load fio.js, and call idmatch().

ID document scanning, portrait extraction, and optional field extraction are powered by PixLab's DOCSCAN API endpoint. Submitted images and extracted data are processed only in RAM and deleted immediately after the match result is ready, whether the session succeeds or fails. ID Match does not validate the document or check its authenticity.

  • Console app + Public ID
  • Framework-agnostic fio.js, localized in 70+ languages
  • Popup flow via idmatch()
  • PixLab DOCSCAN + 1:1 face match
How It Works

A popup selfie-to-ID match in four clear steps

Your website calls idmatch(), the FACEIO widget captures a live selfie and ID image, and your code receives the 1:1 face-match result, liveness result, and any document fields you requested.

The Widget Flow

1. Popup Widget Opens

Your site calls faceio.idmatch(). The ID Match popup opens inside the current web flow with no redirect or native app download.

2. Live Selfie & Liveness Check

FACEIO checks the live selfie for liveness and common presentation-attack indicators before running the face comparison.

3. ID Document Scan

The user presents a supported ID format. PixLab DOCSCAN ↗ scans the document, extracts its portrait, and can optionally return selected ID fields.

4. Face Match Result

FACEIO compares the ID portrait with the live selfie and returns the 1:1 match result. Your website or web app is responsible for deciding how to use it.

Compare Two Faces

Run a 1:1 comparison between the live selfie and the portrait extracted from the presented ID. The result indicates facial similarity only; it is not proof of document authenticity, validity, ownership, or legal identity.

One Browser Flow

The embedded popup keeps selfie capture, ID capture, liveness, and face matching inside your existing website or web app.

RAM-Only Processing

Selfie images, ID images, extracted fields, and processing artifacts stay in RAM and are deleted immediately after the result is returned or the session fails. The processing pipeline retains no images, document data, or scan logs.

What ID Match Provides

Selfie-to-ID face matching, built for the web

ID Match provides browser-based capture, liveness checks, and a 1:1 selfie-to-ID portrait comparison. PixLab DOCSCAN ↗ powers ID scanning, portrait extraction, and optional field extraction.

FACEIO Liveness Checks

FACEIO evaluates the live capture for common presentation-attack indicators before comparing the faces. No liveness system can guarantee detection of every spoof attempt, so review the security best practices guide before production deployment.

Liveness Active

One fio.js Call

Selfie capture, liveness, ID scanning, and face matching run in one responsive browser flow.

One call idmatch() opens the widget

Global ID Coverage

The PixLab DOCSCAN API endpoint can scan 11K+ ID document formats from over 197 countries and territories, including passports, national IDs, driver's licenses, visas, and residence permits.

Explore the PixLab ID Scan API

US
UK
EU
JP
190+

Privacy-First Architecture

ID images, selfie images, extracted document data, and processing artifacts are handled only in RAM and deleted immediately after the result is ready, whether the session succeeds or fails. No submitted media, document data, or scan logs are retained by the processing pipeline.

No Retained Images or Scan Data Transient Processing RAM-Only Processing

Use the same FACEIO application setup as facial authentication, then call idmatch() to launch the ID Match popup.

Match Signals

Receive a clear 1:1 face-match result

ID Match returns the selfie-to-ID portrait comparison and liveness result. When requested, it also returns fields extracted from the document by PixLab DOCSCAN.

Defined scope. ID Match compares two face images: the live selfie and the portrait extracted from the ID. It does not authenticate the document, validate its contents, confirm ownership or legal identity, perform KYC or AML checks, or approve any action for your website or web app.

Portrait Mismatch

Detect when the face in the live selfie does not match the portrait extracted from the presented ID.

Liveness Result

Receive the liveness result produced during live-selfie capture before the two face images are compared.

RAM-Only Processing

Submitted images and extracted document data are processed in RAM and deleted immediately after the result or a failed session.

Optional ID Fields

Request extracted ID fields when your workflow needs them, or use only the selfie-to-portrait match result.

1:1
Selfie-to-ID face match
Live
Liveness-checked selfie
RAM
Transient processing
11K+
ID formats via DOCSCAN
Implementation

Add face matching without building the capture flow yourself

ID Match provides the capture flow, liveness result, PixLab DOCSCAN ↗ portrait extraction, and 1:1 face comparison. Your website or web app remains responsible for how it uses the result and for any document authenticity checks, eligibility rules, or manual review.

Build It Yourself

  • Separate Capture Interfaces

    Build and maintain separate selfie, camera-permission, and ID capture screens.

  • Custom Face Comparison

    Connect portrait extraction, liveness, and face matching across multiple components.

  • Document Field Parsing

    Implement field extraction separately when your application needs document data.

  • More Frontend Work

    Handle browser differences, retries, errors, localization, and responsive UI yourself.

FACEIO ID Match

  • One Match Result

    Receive the liveness and selfie-to-ID match result in your fio.js flow.

  • In-Browser Flow

    Users stay on your domain. No redirects, no app installations required.

  • No Retained Image or Document Data

    Selfie images, ID images, extracted data, and processing artifacts are handled in RAM and deleted immediately after completion or failure.

  • Simple Integration

    Load fio.js and call idmatch() from your existing website or web app.

Common Web Flows

Add an ID portrait match where your workflow needs it

Use ID Match when your website or web app needs a live selfie, an ID portrait, and a clear 1:1 face-match result inside the current browser flow.

Account Registration

Compare a live selfie with the portrait on a presented ID during registration and request document fields only when your form needs them.

  • Selfie-to-ID Match
  • Optional ID Fields

Profile and Account Updates

Run a new selfie-to-ID portrait comparison before a website or web app accepts a selected profile or account change.

  • Portrait Comparison
  • Browser Popup Flow

Manual Review Support

Send the face-match result, liveness result, and requested document fields to your own review workflow when additional evaluation is needed.

  • Liveness Result
  • ID Portrait Match
Document Coverage

Scan IDs across global document formats

PixLab DOCSCAN ↗ can read passports, national IDs, driver's licenses, visas, residence permits, and other supported formats. ID Match uses the extracted portrait for face comparison and can optionally return requested fields. Format support covers scanning and extraction, not document authenticity or validity checks.

197+
Countries & Territories
11K+
ID Documents Supported
  • Passports
  • National IDs
  • Driver's Licenses
  • Residence Permits
Developer Integration

Integrate ID Match with fio.js and idmatch()

ID Match follows the same fio.js integration pattern shown in the integration guide. Load the JavaScript library, instantiate new faceIO("app-public-id"), then call idmatch() instead of enroll() or authenticate() to open the popup. For backend workflows that already have two face images to compare, see the online face verification API.

Same fio.js Setup

Use the same fio.js CDN script and FACEIO App Public ID as standard facial authentication integrations. The widget UI is localized in 70+ languages, so global teams do not need to build a separate translation layer for the ID Match popup.

Popup Widget Flow

Calling idmatch() opens the guided popup that captures the live selfie, asks for the ID document, and returns the face-match result.

FACEIO + PixLab Processing

FACEIO handles face detection, liveness, and face matching while PixLab DOCSCAN scans the ID, extracts its portrait, and optionally returns requested document fields.

Works with any stack

Plain HTML React Vue Angular Next.js Svelte Nuxt
app.js
JavaScript
1
// Same fio.js setup as FACEIO facial authentication
2
const faceio = new faceIO("app-public-id");
3
4
// Call idmatch() instead of enroll() or authenticate()
5
document.getElementById("verify-btn").onclick = async () => {
6
try {
7
const response = await faceio.idmatch({
8
locale: "auto",
9
documentType: "ALL"
10
});
11
12
// Popup completed and match result returned
13
console.log(`Match complete. Session: ${response.sessionId}`);
14
} catch (error) {
15
// Handle capture or match failure
16
faceio.restartSession();
17
}
18
};
Security & Data Handling

Clear product scope and transient data processing

ID Match performs a liveness-assisted comparison between a live selfie and the portrait extracted from an ID. Application owners are responsible for user notices and consent, their use of the result, and any information they choose to retain after it is returned.

Application Owner Responsibility

Application owners must provide required notices, obtain consent, and determine how the returned result and optional fields are used.

No Document Authentication

ID Match does not check document authenticity, validity, expiration, ownership, alteration, or issuing-authority records.

Optional Field Extraction

Your application chooses whether PixLab DOCSCAN should return document fields and remains responsible for any returned data it stores.

No Automated Approval

ID Match does not perform KYC or AML checks and does not approve, reject, authorize, or recover an account or transaction.

RAM-only processing with immediate deletion

ID Match uses the transient processing model provided by PixLab DOCSCAN ↗. The selfie image, ID image, extracted document data, and processing artifacts remain in RAM only and are deleted immediately after the match result is generated or the session fails. The processing pipeline retains no submitted images, ID data, or scan logs.

Visit Trust Center
FAQ

Frequently asked questions

Questions from developers and product teams who've evaluated ID Match.

User Experience

What does the user see during ID Match?

The FACEIO widget opens as a popup inside your page without redirecting the user. The user reviews the consent notice, captures a live selfie, and presents an ID so its portrait can be compared with the selfie.

Does the user need to install anything?

No. Users can complete the selfie-to-ID match in a supported browser without installing a separate app or extension.

Which ID formats can DOCSCAN process?

PixLab DOCSCAN ↗ can scan 11K+ ID document formats across over 197 countries and territories, including passports, national IDs, and driver's licenses. This coverage applies to document scanning and field extraction only. It does not mean that ID Match validates or authenticates a document.

What happens if the faces do not match?

ID Match returns the non-match result to your application. Your application is solely responsible for deciding what happens next, including whether to offer another capture or use a separate review process.

Can the user cancel midway through?

Yes. Users can cancel the flow at any step, and your application can handle that outcome with your own retry or fallback logic.

Does it work on mobile?

Yes. ID Match is designed for both desktop and mobile browser sessions, without requiring a native mobile app.

Developer & Technical

How do developers trigger ID Match?

Integration follows the same fio.js pattern as standard FACEIO facial authentication. Create an application in the FACEIO Console ↗, copy the App Public ID, load the SDK, instantiate new faceIO("app-public-id"), then call faceio.idmatch() to open ID Match. Use enroll() and authenticate() for facial authentication; use idmatch() for selfie-to-ID portrait matching.

Do I need a backend to use ID Match?

A backend is not required to open the widget. Your backend should still protect any account, access, or business decision that uses the returned match result. Review the security guide before production rollout.

Can I use ID Match alongside facial authentication?

Yes. ID Match and FACEIO's facial authentication are separate capabilities of the same fio.js widget instance. A common pattern is to call idmatch() during onboarding, then use enroll() and authenticate() for later face logins. Start with Getting Started, then use the integration guide, Facial ID reference, and Developer Center.

What decision does ID Match make?

ID Match returns the result of a 1:1 comparison between the live selfie and the portrait extracted from the ID, together with the liveness result. It does not validate document authenticity, contents, expiration, ownership, or issuing records; establish legal identity; perform KYC or AML checks; or approve, reject, or authorize any action. Your website or web app is solely responsible for its next step.

What data does ID Match return to my application?

ID Match returns the face-match and liveness result and, when requested, fields extracted by PixLab DOCSCAN. The selfie image, ID image, extracted fields, and processing artifacts are handled only in RAM and deleted immediately after the result is ready or the session fails. The processing pipeline retains no submitted images, document data, or scan logs. Application owners remain responsible for notices, consent, downstream use, and any returned information they choose to store.

Is there a rate limit or cost per ID Match session?

Pricing and usage limits depend on your plan. See the Pricing page and your FACEIO Console ↗ for current details.

Can I test ID Match before production?

Yes. Test the widget, result handling, and retry flow in development or staging. The face comparison still requires a processable ID image and a live selfie, so use only test material you are authorized to process.

Have a question not covered here?

Add selfie-to-ID portrait matching to your web app.

Call idmatch() from fio.js to capture a live selfie, extract the ID portrait with PixLab DOCSCAN ↗, and return the 1:1 face-match result with any requested document fields.

Free tier - no credit card
Browser-based selfie and ID capture
Browser-based popup flow