Settings
There are different types of settings on MegaMatcher ID Server. This section will talk about biometric operation settings. There are two ways to set biometric operation settings:
- on Management Web - this is the preferred way and advised on production environment
- from Web Demo - used for debug purposes while determining most suitable parameters for users application. Can be used when
Allow settings overrideis enabled
Capturing
| Key | Range | Default value | Notes |
|---|---|---|---|
| Timeout | [0; max_int] | 0 | Determines operation timeout in milliseconds |
| Quality | [0; 100] | 50 | Face quality threshold |
| Frames to skip | [0; 1000] | 100 | Skips first X frames before starting detection |
| Strict Quality Timeout | [0; max_int] | 30000 | Indicates how many milliseconds to wait for the image to reach Strict Quality Image size |
| Strict Quality Image size | [0; max_int] | 960x540 | Minimal frame pixel size |
| Selected image type | Best/Last | Best | Sets mode to regulate what type of image will be returned during successful capture |
| Remove background | [false; true] | false | Enables or disables ICAO token image background removal |
| Background color | [0; 255] | 209 | Background color of removed background |
Timeout
Determines the time during which operation as to be finished. If 0 is specified - time is unlimited. If the timeout is reached, operation ends in Timeout status.
Note: When this setting is changed, it's advised to also update the timeouts in the configuration script.
Frames to skip
Due to encoding some first frames of the stream are poor quality. This setting automatically skips X first frames in order to start face extraction and liveness detection with good frames. Here are some examples how first frames look like until server side encoder gets enough frames to produce good quality images.
Detection
| Key | Range | Default value | Notes |
|---|---|---|---|
| Detection confidence | [0; 100] | 50 | Determines if the detection of a face is confident enough |
| Inter ocular distance | [32; 4000] | 32 | Determines value of inter ocular distance |
| Maximal roll | [0; 180] | 30 | Determines if to reject faces that have higher roll value |
| Maximal yaw | [0; 90] | 90 | Determines if to reject faces that have higher yaw value |
| Maximal pitch | [0; 90] | 90 | Determines if to reject faces that have higher pitch value |
Tracking
The MegaMatcher ID App incorporates a dedicated Face Tracking module that operates after successful face detection to ensure efficient and stable real-time processing.
Once a face is detected and validated, the Face Tracking model takes control of the processing pipeline. The tracker continuously monitors facial position and movement across frames, including subtle changes in pose and expression. This approach provides improved performance (full-frame detection is no longer required for each frame) and reduced CPU utilization, enabling efficient real-time operation even on constrained devices.
The tracking process maintains temporal continuity and ensures consistent face alignment, which is critical for ICAO compliance checks and subsequent biometric processing.
The Face Tracking module supports multiple model configurations optimized for different speed vs. accuracy trade-offs. All tracking models follow the standardized iBUG 68 facial landmark scheme, ensuring consistent facial feature localization and compatibility with downstream processing components.
| Key | Range | Default value | Notes |
|---|---|---|---|
| Disallow multiple faces | [false; true] | true | Fails the operation if multiple faces are detected |
| Allow face to disappear | [false; true] | false | During stream operation allows face to leave image frame without stopping same stream session |
| Token face background | [0; 100] | 60 | Regulates the minimum and maximum face distance thus forcing face to position in frame at the right distance |
| Stream minimal inter ocular distance | [32; 1000] | 60 | Minimum distance required for faces to be suitable for attributes, liveness, quality etc checks |
| Tracker redetect period | [0; 1000] | 0 | Frame count value after which face detection algorithm will be called forcefully |
| Tracking maximal roll | [0; 180] | 10 | Used during face tracking stage and sets a threshold to reject faces that have higher roll value |
| Tracking maximal yaw | [0; 180] | 10 | Used during face tracking stage and sets a threshold to reject faces that have higher yaw value |
| Tracking maximal pitch | [0; 180] | 10 | Used during face tracking stage and sets a threshold to reject faces that have higher pitch value |
Face Quality
The MegaMatcher ID App includes an advanced Face Quality Assessment module based on internationally recognized evaluation principles, including guidance from the National Institute of Standards and Technology (NIST).
The quality score represents the expected reliability of a face image for biometric matching — specifically, the likelihood that the image will successfully match with its genuine counterpart. Unlike subjective visual quality, this metric is performance-driven (directly linked to recognition accuracy) and statistically grounded (based on probabilistic estimation).
The quality assessment is used to automatically filter out low-quality samples (e.g., blurred, underexposed, or poorly captured images), maintain a clean and reliable biometric database, and improve overall matching accuracy and system consistency.
| Key | Range | Default value | Notes |
|---|---|---|---|
| Warnings filter | custom string | "" | A list of positional warnings to ignore |
| Head movement | [0; 100] | 50 | Determines whether subject's head is currently moving |
| Image resolution | [0; 100] | 50 | Prioritizes frames that meet or exceed this threshold |
| Resolution | [0; 100] | 70 | Determines how accurately an image captures fine details |
| Occlusion | [0; 100] | 7 | Determines the area of the face that is occluded |
| Motion blur | [0; 100] | 10 | Determines the extent to which motion blur affects the face |
| Compression artifacts | [0; 100] | 10 | Determines the presence of lossy compression artifacts |
| Noise | [0; 100] | 20 | Determines random variation of brightness or color information |
| Overexposure | [0; 100] | 25 | Determines the score representing proportion of face that is overexposed |
| Underexposure | [0; 100] | 20 | Determines the score representing proportion of face that is underexposed |
| Sharpness | [0; 100] | 50 | Determines the amount of detail an imaging system can reproduce |
| Saturation | [0; 100] | 50 | Determines the intensity or purity of a color |
| Grayscale density | [0; 100] | 50 | Determines the density of black and white pixels |
| Contrast | [0; 100] | 50 | Determines the contradiction in luminance or colour |
Verification
| Key | Range | Default value | Notes |
|---|---|---|---|
| Matching | [36; X] | 48 | Minimum score when Verify functions determines that compared faces are a match |
Matching threshold
Biometric features matching algorithm provides similarity score as a result. The higher is score, the higher is probability that features collections are obtained from the same person.
The higher the threshold value, the more similar feature collections will have to be to yield positive result during matching.
Matching threshold - the minimum score that verification and identification functions accept to assume that the compared faces belong to the same person.
Matching threshold is linked to false acceptance rate (FAR, different subjects erroneously accepted as of the same) of matching algorithm. The higher is threshold, the lower is FAR and higher FRR (false rejection rate, same subjects erroneously accepted as different) and vice a versa.
Matching threshold for MegaMatcher ID should be determined from this table:
| FAR (false acceptance rate) | Matching threshold (score) |
|---|---|
| 100% | 0 |
| 10% | 12 |
| 1% | 24 |
| 0.1% | 36 |
| 0.01% | 48 |
| 0.001% | 60 |
| 0.0001% | 72 |
or using this formula:
Threshold = -12 * log10(FAR); where FAR is NOT percentage value (e.g. 0.1% FAR is 0.001)
Matching threshold/FAR should be selected according to the system's development requirements and taking into account mentioned identification false acceptance accumulation.
Liveness
The MegaMatcher ID App includes a comprehensive Liveness Detection module designed to protect against presentation attacks and ensure that the captured subject is a real, live person.
The module supports stream-based liveness (real-time capture) and single image liveness. Within stream-based processing, multiple configurations are available, including passive mode (default and recommended) and passive with additional signals (e.g., blink detection).
Internally, multiple domain-specific liveness models operate within a parallel inference framework, enabling robust detection across a wide range of attack types and scenarios. Liveness performance is closely linked to input quality — the system integrates real-time feedback mechanisms to guide users to achieve proper positioning, lighting, and framing.
| Key | Range | Default value | Notes |
|---|---|---|---|
| Liveness mode | Passive / Active / Simple / Custom / Passive with blink | Passive | Determines what liveness algorithm to use |
| Liveness Custom Action Sequence | custom string | "" | Action sequence to be used in Custom liveness |
| Liveness threshold | [0; 100] | 30 | Threshold which determines if liveness prediction is confident enough |
| Liveness blink timeout | [1000; 30000] | 2000 | Maximum time in ms when user has to blink when asked |
| Image Liveness input type | Type Selection | Type0, Type1, Type2, Type12, Type17 | Specifies which passive liveness model types are applied |
| Image Liveness output type | Minimal / Maximal / Average / Weighted | Minimal | Determines how the liveness output is calculated |
| Passive liveness required detection count | [0; 36] | 5 | Total number of successful passive liveness detections required |
Liveness mode
Liveness mode determines which Liveness checking algorithm to use. Currently these liveness modes are supported:
Passive
PassiveNoBlink liveness mode relies on LivenessThreshold. Checks whether the user is live or not in a passive way. User is only required to position his face according to the provided system status.
PassiveWithBlink
Passive liveness mode relies on LivenessThreshold. The same as Passive mode, but when the user manages to pass the liveness check, the system waits for some random amount of time and then asks the user to blink once in a set time window. If the blink requirement is not satisfied, liveness fails.
Simple
Easier version of Passive. Can be used where there is quite a low chance that system users will use hard spoofing attacks.
Active
Active liveness mode does not use LivenessThreshold. User has to perform specified head turning and blink when asked.
Custom
Custom liveness mode does not use LivenessThreshold. User has to perform specified head turning and blink when asked. LivenessCustomActionSequence can be set to use pre-defined liveness actions. If not set or left empty - random actions are chosen by the liveness algorithm.
LivenessCustomActionSequence
When Custom liveness mode is set, pre-defined liveness actions can be used. It is possible to combine a liveness action sequence from these actions:
| Action | Notes |
|---|---|
| blink | User is asked to blink |
| turnLeft | User is asked to turn his head left |
| turnRight | User is asked to turn his head right |
| turnUp | User is asked to turn his head up |
| turnDown | User is asked to turn his head down |
| turnWithTargets | User is asked to turn his head to a specified angle (as on Active liveness mode) |
| keepStill | User is asked to keep still for a short period of time (up to 1 second). This may act as a pause between liveness actions |
When constructing liveness action sequence, actions must be separated by commas ,.
For example, action sequence for turning head left, right and blinking would look like this:
turnLeft,turnRight,blink
Attributes
The Face Attributes module provides additional metadata describing key visual and behavioral aspects of the detected face. These attributes are primarily used to enforce capture requirements and restrictions, ensuring the final image is clear, neutral, and compliant with common standards. While attributes can have an indirect impact on matching performance, their main purpose is to produce images suitable for identity documents, border control, and biometric systems.
| Key | Range | Default value | Notes |
|---|---|---|---|
| Blink | [0; 100] | 10 | Determines whether eyes are closed or opened |
| Glasses | [0; 100] | 55 | Determines whether glasses are present or not |
| Dark glasses | [0; 100] | 27 | Determines whether glasses are transparent or dark |
| Expression | [0; 100] | 54 | Determines if the face exhibits a neutral expression |
| Mouth open | [0; 100] | 45 | Determines whether mouth is opened or not |
| Hat (headwear) | [0; 100] | 21 | Determines whether hat is present or not |
ICAO
The MegaMatcher ID App integrates ICAO-based compliance checks aligned with international standards. The system evaluates facial images against established ICAO requirements including proper face positioning and centering, neutral expression and visibility of facial features, and adequate lighting and exposure conditions. Face cropping and alignment are implemented as part of a standardized processing pipeline, ensuring consistent face positioning across all capture scenarios and compatibility with passport, ID, and border control systems.
| Option | Range | Default value | Glossary |
|---|---|---|---|
| Check ICAO | [false; true] | false | Enables or disables ICAO compliance checking during image capturing |
| TokenFaceBackgroundPercentage | [0; 100] | 60 | The ratio of the face to the token image |
Check ICAO
Enables or disables ICAO compliance checking. If enabled and capture is successful Token image is returned on Enroll and CheckLiveness operations.
On Verify operation Check ICAO can only be used with Liveness combination. Verify operation does not return a Token image even in Check ICAO is enabled.
To achieve ICAO compliant image, user is instructed to position its face according ICAO standard. If the face does not met ICAO requirements operation will not end the capture until Timeout is reached.
TokenFaceBackgroundPercentage
Regulates the ratio of the face to the token image. Its default value is set to 60, which represents the ideal image ratio in accordance with token image standards. When the value is set lower than 60, the crop radius increases, causing the face to appear smaller in the final token image. Conversely, values higher than 60 decrease the crop radius, making the face appear larger relative to the final token image.
Combining Liveness and ICAO
Check ICAO can be used in combination with face liveness checking. When both settings are enabled, face liveness is calculated during capture and at the end user is asked to position its face to get ICAO compliant image, if such was not retrieved during face liveness calculations.
ICAO Thresholds
| Key | Range | Default value |
|---|---|---|
| Background uniformity | [0; 100] | 0 |
| Looking away | [0; 100] | 30 |
| Red eye | [0; 100] | 50 |
| Face darkness | [0; 100] | 50 |
| Unnatural skin tone | [0; 100] | 20 |
| Washed out | [0; 100] | 50 |
| Pixelation | [0; 100] | 50 |
| Skin reflection | [0; 100] | 70 |
| Glasses reflection | [0; 100] | 50 |
Note: Face Quality and Attributes thresholds have been separated into their own tabs in the Web UI, but they function similarly to remaining ICAO thresholds in checking image compliance.
How ICAO warnings look graphically can be found here.
Icao warnings can also be ignored by using the Warnings filter parameter found in the Face Quality settings. It's suggested to only use this to ignore the ICAO warnings which do not have a threshold. For example, to ignore position warnings, you can set Warnings filter to TooNorth,TooSouth,TooEast,TooWest.
Adjudication
| Key | Range | Default value | Notes |
|---|---|---|---|
| Live adjudication | [false; true] | false | Enables or disables live adjudication |
| Age adjudication | [false; true] | false | Enables or disables age adjudication |
| Age adjudication range | [0; 100] | 5-25 | Age range that will trigger adjudication |
| Liveness adjudication | [false; true] | false | Enables or disables liveness adjudication |
| Liveness adjudication range | [0; 100] | 30-70 | Liveness range that will trigger adjudication |
| Adjudicator decisions needed | [1; 9] | 3 | Decisions from adjudicators that are needed for the final decision |
| Accepted decisions needed | [1; 9] | 2 | Accepted decisions from adjudicators that are required |
Accounts
To learn more about the different roles and their permissions, see here. Passwords are securely encoded in the backend. By default, two accounts are created: User and Admin.
Management
| Option | Glossary |
|---|---|
| Management settings | Displays current read-only configuration settings that can only be changed via server configuration files (e.g. Allow setting override, Allow clear db, Prefix mode enabled). |
| Exception filter settings | Allows to filter out irrelevant exceptions so they do not clutter the exceptions log. You can filter by Exception name, HTTP response code, or HTTP call path. |
| Database cluster status | Shows whether the database cluster is on and its current status. |
| Download current settings | Allows you to download the current configuration settings as a .json file for backup or analysis. |
ISO 30107-3 Level 2 certification
Liveness algorithm for Mobile and PC is ISO 30107-3 Level 2 certified. By default, the MegaMatcher ID product does not use the certified parameter set. Lower values are used that are still reliant for spoof prevention, yet make the capturing process easier for the user. To use ISO 30107-3 certified parameter set some thresholds need to be changed:
- PC:
- Image resolution: 1280×720.
- Liveness mode: Passive.
- Liveness threshold: 40 (default 30).
- Image liveness input type: type0, type1, type2, type12, type17, type18, type19, type20 (default type0, type1, type12, type17).
- Image liveness output type: Minimal.
- Passive liveness required detection count: 8 (default 5).
- Only front camera can be used. If PC uses external camera, the camera should be positioned in such way, that it is on top/bottom of the monitor and user could clearly see him/her self.
PC values may also used for MegaMatcher ID Web service, yet it is strongly advised to stick to default configuration. Due to WebRTC protocol limitations it is hard to achieve good user experience with high thresholds.P