---
Source: https://docs.microblink.com/blinkcard/scanning-settings
Title: Scanning settings
Description: Reference for BlinkCard scanning settings
---

# Scanning settings

You can configure BlinkCard scanning through its **scanning settings**.

These settings control image quality handling, field extraction, image cropping, liveness detection, and anonymization.

:::note[Input image source]

The scanning settings live inside the session settings, alongside `inputImageSource`, which indicates whether images come from a `video` stream or a single `photo`.
The default is `video`.

Some settings behave differently depending on the input image source.
These are called out where relevant below.

:::

## `skipImagesWithBlur`

> **type**: boolean, **default**: `true`

Indicates whether to reject frames if blur is detected on the card image.

When `true`, frames with detected blur are skipped to ensure only high-quality images are processed.
When `false`, blurred frames are still processed, and the blur status is reported in the result.

---

## `tiltDetectionLevel`

> **type**: string, **default**: `mid`

The level of allowed detected tilt of the card in the image.

Defines the severity of allowed detected tilt of the card in the image.
Values range from `off` (detection turned off) to higher levels of allowed tilt.

Allowed values: `off`, `low`, `mid`, `high`.

:::note

On iOS, this setting is named `tiltSensitivityLevel`.

:::

---

## `inputImageMargin`

> **type**: float, **default**: `0.02`

Defines the minimum required margin between the edge of the input image and the card, expressed as a percentage of the image dimensions.

Allowed values: 0.0 to 1.0.

:::note

This setting is applicable only when the input image source is `video`.

:::

## `extractionSettings`

`extractionSettings` controls which fields are extracted from the card.

Disabling extraction of unused fields can improve recognition performance or reduce memory usage.

---

### `extractIban`

> **type**: boolean, **default**: `true`

Whether to extract the IBAN (International Bank Account Number).

---

### `extractExpiryDate`

> **type**: boolean, **default**: `true`

Whether to extract the card expiry date.

---

### `extractCardholderName`

> **type**: boolean, **default**: `true`

Whether to extract the cardholder name.

---

### `extractCvv`

> **type**: boolean, **default**: `true`

Whether to extract the CVV (Card Verification Value) security code.

The CVV is usually found on the back of the card and is required for secure transactions.

---

### `extractInvalidCardNumber`

> **type**: boolean, **default**: `false`

Indicates whether card numbers that fail checksum validation should be accepted.

Card numbers are validated using the Luhn algorithm.
When `false`, only card numbers that pass the checksum validation are accepted.
When `true`, card numbers that fail checksum validation are still accepted.
This may be useful for testing purposes or when processing damaged or worn cards.

The `cardNumberValid` field in the result will still indicate whether the checksum passed.

## `croppedImageSettings`

`croppedImageSettings` controls how card images are cropped, including resolution, the extension of the cropping area, and whether the cropped image is returned in the result.

---

### `dotsPerInch`

> **type**: integer, **default**: `250`

The resolution of the returned cropped card image in dots per inch.

---

### `extensionFactor`

> **type**: float, **default**: `0.0`

Expands the card crop boundary outward by a fraction of the card's longest edge.

Allowed values: 0.0 to 1.0.

---

### `returnCardImage`

> **type**: boolean, **default**: `false`

Indicates whether the cropped card image should be returned in the result.

Provides the complete card image for record keeping or further processing.
Disable to reduce memory usage if the image is not needed.

## `livenessSettings`

`livenessSettings` controls the behavior of liveness detection, including thresholds for hand detection and the strictness of screen and photocopy analysis.

---

### `handToCardSizeRatio`

> **type**: float, **default**: `0.15`

Minimum hand-to-card size ratio for valid hand detection.

Controls how large a hand must appear in the frame relative to the card to be considered valid.
Lower values detect smaller or more distant hands.
Hand scale is calculated as a ratio between the area of the hand mask and the card mask.

Allowed values: 0.0 to 1.0.

---

### `handCardOverlapThreshold`

> **type**: float, **default**: `0.05`

Minimum overlap threshold between detected hand and card regions.

This parameter adjusts heuristics that eliminate cases where a hand is present in the input but is not holding the card.
It is the minimal ratio of hand pixels inside the frame surrounding the card to the area of that frame.
Only pixels inside that frame are used, to ignore false-positive hand segmentations inside the card.

Allowed values: 0.0 to 1.0.

---

### `enableCardHeldInHandCheck`

> **type**: boolean, **default**: `true`

Enables or disables the check for the card being held in hand.

When `true`, liveness detection includes a check that verifies the card is being held in hand.

---

### `screenCheckStrictnessLevel`

> **type**: string, **default**: `level-5`

Sensitivity level for detecting frames where the card is displayed on a screen.

Higher levels provide better security by being stricter in detecting screen-displayed cards, but may increase false positives.

Allowed values: `disabled`, `level-1` through `level-10`.

- `disabled`: turns the check off
- `level-1`: lowest false reject rate, highest false accept rate
- `level-10`: highest false reject rate, lowest false accept rate

---

### `photocopyCheckStrictnessLevel`

> **type**: string, **default**: `level-5`

Sensitivity level for detecting frames where the presented card is a photocopy.

Higher levels provide better security by being stricter in detecting photocopied cards, but may increase false positives.

Allowed values: `disabled`, `level-1` through `level-10`.

- `disabled`: turns the check off
- `level-1`: lowest false reject rate, highest false accept rate
- `level-10`: highest false reject rate, lowest false accept rate

## `anonymizationSettings`

`anonymizationSettings` controls the anonymization of sensitive data in the data and images returned by the SDK.

Each mode accepts the following values:

- `none`: anonymization is not performed
- `image-only`: the card image is anonymized with black boxes covering sensitive data
- `result-fields-only`: result fields containing sensitive data are removed from the result
- `full-result`: combines `image-only` and `result-fields-only`

:::note

On iOS, anonymization is referred to as *redaction*.
The `anonymizationSettings` object is named `redactionSettings`, the mode type is `RedactionMode`, and each field uses `Redaction` instead of `Anonymization` (for example, `cvvAnonymizationMode` is `cvvRedactionMode`).

:::

---

### `cardNumberAnonymizationSettings`

`cardNumberAnonymizationSettings` controls card number anonymization.

It has the following fields:

- `mode`
  - Defines the mode of card number anonymization.
  - **type**: string, **default**: `none`
- `prefixDigitsVisible`
  - Defines how many digits at the beginning of the card number remain visible after anonymization.
  - **type**: integer, **default**: `0`
- `suffixDigitsVisible`
  - Defines how many digits at the end of the card number remain visible after anonymization.
  - **type**: integer, **default**: `0`

:::note

On Android, the `mode` field is named `anonymizationMode`.

:::

---

### `cardNumberPrefixAnonymizationMode`

> **type**: string, **default**: `none`

Defines the mode of card number prefix anonymization.

---

### `cvvAnonymizationMode`

> **type**: string, **default**: `none`

Defines the mode of CVV anonymization.

---

### `ibanAnonymizationMode`

> **type**: string, **default**: `none`

Defines the mode of IBAN anonymization.

---

### `cardholderNameAnonymizationMode`

> **type**: string, **default**: `none`

Defines the mode of cardholder name anonymization.

## Related articles

- [Liveness detection](liveness.md)
- [Anonymization](anonymization.md)


Last updated on Jun 12, 2026
