8.7.0-beta.1
Released: October 22, 2026
New Features
Barcode
- Added support for the Han Xin Code symbology (
SC_SYMBOLOGY_HAN_XIN) - Added structured append support to MaxiCode. The "m of n" sequencing metadata is now no longer part of the barcode data.
- Added
constto read-only opaque pointer parameters insc_symbology_settings_get_enabled_extensionsandsc_symbology_settings_get_active_symbol_counts.
Core
- Added support for BGRA image layouts via
SC_IMAGE_LAYOUT_BGRA_8U. - Added libcurl 8.22.0, built from source with mbedTLS as its TLS backend, as a dependency of the Linux library. The Debian package now also depends on
ca-certificates, which provides the CA trust store read at runtime.
Performance Improvements
Barcode
- Improved MaxiCode detection robustness for digitally generated and screen-displayed codes.
- Improved PDF417 recognition of codes at low resolution and with poor print quality.
- Improved the error correction capacity available to QR Model 1 codes. Damaged Model 1 codes now read more reliably.
- Improved decoding accuracy on blurry and otherwise hard-to-read EAN-13 and UPC-A codes.
Core
- Improved the speed of camera frame downscaling by a factor of 4/3 on ARM CPUs, most noticeably on low-end Android devices.
Behavioral Changes
Barcode
- Changed 1D symbology decoding to reduce false scans, at the cost of a lower scan rate on hard-to-read codes:
- Reduced false scans of EAN-13/UPC-A and Code 93, and of EAN-8 and UPC-E reads inside an EAN-13/UPC-A code, in normal and strict mode.
- Reduced false scans in strict mode, which now requires at least 0.75 pixels per module and decodes EAN-13/UPC-A more conservatively.
- Lowered the scan rate of hard-to-read UPC-E and Code 93 codes in normal and strict mode, and of EAN-13/UPC-A, Code 128, ITF and Codabar codes in strict mode, as a cost of the false-scan reductions.
- Changed GS1 decoding to reject codes that previously produced unreliable data:
- Changed the GS1 DataBar Expanded reader to reject codes whose compressed item identification, weight, date or currency field holds a value the specification does not define, or whose AI 392x or 393x price has no digits, as damaged instead of producing malformed element strings.
- Changed GS1 Composite decoding to reject composite codes with a damaged 2D component instead of producing a GS1 barcode with empty or malformed data.
- Data Matrix: Malformed codes with invalid shift values or unhandled Upper Shift sequences are now correctly rejected as damaged rather than decoding incorrectly.
- Improved QR code validation to reject improperly formatted or non-standard codes, reducing false positives and unreliable data.
- Changed the Aztec reader to no longer accept a structured append header whose sequencing field is not two upper-case letters. Such symbols previously reported an invented segment index and count, for example a negative index or the third of three segments, and could be grouped into a sequence they do not belong to; their content is now decoded as ordinary message data.
- Extended the Python API to expose optional symbology checksums (via SymbologySettings.checksums, CHECKSUM_, sc_symbology_settings_get_checksums, and sc_symbology_settings_set_checksums) alongside the remaining barcode-area C API functions and generator options: SymbologySettings.symbology, SymbologySettings.ocr_fallback_regex, SymbologySettings.enabled_extensions, Barcode.is_recognized, Barcode.is_color_inverted, Barcode.frame_id, Barcode.module_counts, BarcodeScannerSettings.circle_of_interest (with CIRCLE_RADIUS_INFINITE), BarcodeScannerSettings.clone(), BarcodeScannerSettings.set_aruco_dictionary() (with ArucoDictionary and ARUCO_DICTIONARY_PRESET_), BarcodeScanner.is_setup_complete, BarcodeScannerSession.last_processed_frame_id, and the BarcodeGenerator constructor options.
- Aligned which Data Matrix symbols are reported as GS1 with the Data Matrix specification: an FNC1 in any other position is a field separator and no longer sets the flag, so a symbol carrying GS1 Application Identifier data without a leading FNC1 is no longer reported as GS1; with leading-FNC1 stripping enabled the data follows the flag in both directions, so such a symbol now keeps its first FNC1 while a Structured Append symbol with an FNC1 in the fifth position now loses it.
Core
- Changed recognition contexts alive at the same time to require the same
writable_data_path, reversing the earlier advice to give each one its own. Behavior change:sc_recognition_context_new()returns NULL, and the PythonRecognitionContextraisesRuntimeError, while a context created with another path, or an object created from one such as a parser, is still alive. - Documented that every object created from a recognition context, such as a barcode scanner or a parser created with
sc_parser_new_with_context(), must be released before the context's last reference is released withsc_recognition_context_release().
Bug Fixes
Barcode
- Fixed several MaxiCode decoding and character encoding defects:
- Fixed the reading of symbols where the relative size of finder pattern and module rows is slightly off relative to the specification.
- Fixed corrupted characters in the data of damaged symbols that end in a truncated Numeric Shift or ECI sequence.
- Fixed a crash on mode 2 and 3 symbols whose secondary message is cut off inside the
[)>RS01GSformat header. Such symbols now decode to the postal code, country code and service class followed by the truncated message. - Fixed character encoding reporting issues in
sc_barcode_get_data_encodingfor ECI and MaxiCode mode 2 and 3 symbols.
- Fixed several Data Matrix decoding and character encoding defects:
- Fixed the GS1 flag reported by
sc_barcode_is_gs1_data_carrier, which is now set by an FNC1 in the first symbol character position, or the fifth of a Structured Append symbol, as the specification defines. - Fixed the decoded value of a backtick encoded in the Text encodation scheme, which was read as an apostrophe.
- Fixed several Data Matrix decoding defects related to character encoding, end-of-data handling, and shift formatting.
- Fixed a Data Matrix scanning accuracy regression introduced in 8.4.0 for codes scanned with the
direct_part_marking_modesymbology extension.
- Fixed the GS1 flag reported by
- Fixed several QR decoding defects:
- Fixed the reading of Model 1 codes that use data mask pattern 111. The reader accepted only seven of the eight mask patterns the standard defines for Model 1, so such codes went unrecognized.
- Fixed false Structured Append results from damaged codes: a Structured Append header that is not at the start of the code, or a second one, now makes the code fail to decode instead of reporting arbitrary sequence and parity information.
- Fixed decoding and flag reporting for QR codes carrying AIM Application Indicators and GS1 headers.
- Fixed a QR scanning accuracy regression introduced in 8.6 for codes with degraded finder patterns (round, dotted, curved, bent, damaged) in single-barcode scanning.
- Fixed several Micro QR and rectangular Micro QR (rMQR) defects:
- MicroQR: Fixed an issue that prevented improvements for rotated codes and codes with cluttered backgrounds from being available in production builds.
- Fixed decoding and truncation issues in Micro QR codes with invalid character counts or fully filled codewords.
- Fixed the AIM Application Indicator (FNC1 in second position) of rectangular Micro QR (rMQR) codes, which is now transmitted as the two digits or the letter the specification defines instead of three digits. Codes with a reserved Application Indicator, or with an FNC1 mode indicator that is not placed right before the first data mode indicator, are now rejected, and FNC1 mode now stays in effect across later ECI headers.
- Fixed a rare crash during detection of rectangular Micro QR codes whose finder pattern covers a large part of the frame, such as when scanning at very close range.
- Fixed several GS1 Composite and GS1 DataBar Expanded decoding defects:
- Fixed decoding errors in GS1 composite codes, such as misread lot number flag bits and dropped digits when fields are followed by additional element strings.
- Removed extraneous group separators and trailing characters incorrectly appended to the decoded data of composite codes.
- Fixed decoding errors in GS1 DataBar Expanded codes with AI 392x or 393x prices followed by additional element strings, such as dropped element strings or lost digits.
- Fixed a false ArUco result where the inner shape of a marker was read as a second, color-inverted marker.
- Fixed several Aztec decoding defects:
- Fixed the file ID of an Aztec structured append symbol whose optional message ID field is absent.
sc_barcode_get_file_idreturned the placeholderDEFAULTand merged unrelated sequences; it now returns an empty string, and such segments are no longer automatically grouped. - Fixed the character encoding reported for Aztec byte shift data that follows an ECI.
- Fixed the file ID of an Aztec structured append symbol whose optional message ID field is absent.
- Fixed a scan regression from SDK 5.19 for 1D codes with colored backgrounds, such as dark print on a saturated label.
- Fixed a rare out-of-bounds image read while detecting a code that touches the right or bottom image border.
- Fixed
sc_barcode_scanner_settings_new_from_json()rejecting afloat/double-typed setting whose value was written as a whole number (for example,1instead of1.0). Such values are now accepted.
8.6.2
Released: October 26, 2026
Bug Fixes
Barcode
- Fixed an issue with MicroQR that prevented improvements for rotated codes and codes with cluttered backgrounds from being available in production builds.
- Fixed an issue that could increase the time to scan when only QR or Data Matrix is enabled and there are more than 8 codes in the frame while using Barcode Tracking, Barcode AR, Barcode Pick, Barcode Find and Label Capture.
8.6.1
Released: October 1, 2026
Bug Fixes
Barcode
- Fixed a QR scanning accuracy regression introduced in 8.6 for codes with degraded finder patterns (round, dotted, curved, bent, damaged) in single-barcode scanning.
- Fixed a Data Matrix scanning accuracy regression introduced in 8.4.0 for codes scanned with the
direct_part_marking_modesymbology extension. - Fixed Data Matrix codes not being read when their encoder ends the data with an Unlatch codeword followed by more than one pad codeword.
- Fixed a 1D symbology scan regression from SDK 5.19 for codes with colored backgrounds, such as dark print on a saturated label.
8.6.0
Released: August 31, 2026
New Features
Barcode
- Extended the support for DotCode features by adding support for:
- Extended Channel Interpretation (ECI). Symbols that switch character sets (for example to Cyrillic or another code page) now report the correct per-segment encoding. As part of this, the default character set for DotCode is now reported as ISO 8859-1 instead of ASCII.
- Message envelopes as defined in ISO/IEC 15434.
- Structured append. DotCode has no file ID, so segments are not automatically grouped by the buffered barcode session.
Performance Improvements
Barcode
- Reduced the false positive rate for EAN13, UPCA, EAN8, and UPC-E.
- Improved ITF decoding robustness, reducing the number of unscanned codes. On our internal datasets, we measured an improvement of more than 20% true positives.
- Improved MicroQR decoding for rotated codes and cluttered backgrounds. On our internal datasets, we measured an improvement of more than 40% true positives.
Id
- Improved PDF417 scanning on Quebec, Alaska, and Oklahoma driver’s licenses.
Behavioral Changes
Barcode
- Enabled detection and decoding of mirrored MaxiCodes by default. Previously this required enabling the symbology extension
mirrored, which has been removed. - Limited the GS1 format flag for DotCode to genuine GS1 openings (a leading digit pair without FNC1) per AIM DotCode v3.0, instead of defaulting all symbols to GS1.
- Disabled enhanced low-resolution scanning of QR codes (introduced in 8.5.0) for MatrixScan modes. Customers who need this feature should contact Scandit support.
Core
- Exposed the structured append segment fields on
Barcode(segment_index,segment_count,file_id) via the Python API, matching the C API'ssc_barcode_get_segment_index,sc_barcode_get_segment_count, andsc_barcode_get_file_id.
Bug Fixes
Barcode
- Fixed rare cases where DotCode Code Set C symbols using the date/lot macro decoded to incorrect data due to a dropped leading zero in a digit pair.
- Fixed a regression where short ITF codes with low wide/narrow ratio were not decoded.
Core
- Fixed
sc_camera_get_framehanging indefinitely when the camera is disconnected while streaming. It now returns promptly instead of blocking. - Fixed the Python camera sample (
CommandLineBarcodeScannerCameraSample.py) crashing at startup.
8.5.5
Released: October 29, 2026
Bug Fixes
Barcode
- Fixed a Data Matrix scanning accuracy regression introduced in 8.4.0 for codes scanned with the
direct_part_marking_modesymbology extension.
8.5.4
Released: October 19, 2026
No updates for this framework in this release.
8.5.3
Released: August 18, 2026
Behavioral Changes
Barcode
- Disabled enhanced low-resolution scanning of QR codes (introduced in 8.5.0) for MatrixScan modes. Customers who need this feature should contact Scandit support.
8.5.2
Released: July 31, 2026
No updates for this framework in this release.
8.5.1
Released: July 20, 2026
Bug Fixes
Barcode
- Fixed the Python camera sample (
CommandLineBarcodeScannerCameraSample.py) crashing at startup.
8.5.0
Released: July 9, 2026
Performance Improvements
Barcode
- Enhanced detection of low-resolution QR codes, improving scan rates for QR codes with degraded print quality or unfavorable capture conditions. This improvement applies to QR codes of versions 1, 2, and 3 (21×21, 25×25, and 29×29 modules).
- codes is now enabled by default, improving scan rates for challenging QR codes with degraded print quality or unfavorable capture conditions. This improvement applies to QR codes of versions 1, 2, and 3 (21×21, 25×25, and 29×29 modules).
- Improved scanning of micro-QR codes affected by quiet zone violations and perspective distortion.
Core
- Improved Python API typing in
scanditsdkfor code-location and image-layout constants, allowing direct comparisons againstCODE_LOCATION_*andIMAGE_LAYOUT_*while keeping mypy checks clean.
Behavioral Changes
Barcode
- Reduced Code 128 minimum symbol count from 6 to 4; short codes (4 & 5 symbols) use stricter matching rules than longer codes. To explicitly exclude short codes, disable symbol counts 4 & 5 via
sc_symbology_settings_set_active_symbol_counts()for Code 128. Note that if you previously enabled short code scanning, more strict settings are now in effect to reduce the chance of false positives, which are more likely for very short codes. - Tightened Code 39 false positive filter thresholds by default; to restore the previous behavior, enable the
relaxedextension on Code 39 viasc_symbology_settings_set_extension_enabled(). This is only advised when external validation measures are available, for example, scanning against a known list of valid codes or when codes contain structured data.
Bug Fixes
Barcode
- Fixed PDF417 macro block file ID decoding to correctly handle numeric formatting according to the ISO/IEC 15438:2015 specification.
- Fixed rare cases of incorrect (tiny) PDF417 location outlines.
Core
- Fixed camera initialization failure on devices where buffer allocation fails for the multi-planar capture interface; the camera now enumerates supported capture modes via VIDIOC_QUERYCAP and falls back to single-plane capture if multi-planar buffer allocation fails.
8.4.2
Released: September 28, 2026
Bug Fixes
Barcode
- Fixed a Data Matrix scanning accuracy regression introduced in 8.4.0 for codes scanned with the
direct_part_marking_modesymbology extension.
8.4.1
Released: June 23, 2026
No updates for this framework in this release.
8.4.0
Released: May 18, 2026
Performance Improvements
Barcode
- Improved Code 128 scan robustness for codes with uneven blur and geometric distortions. Available on all platforms except WebAssembly without SIMD and ARM without FP16.
- Improved 1D barcode scanning speed and reduced false positives for linear symbologies.
- Further improved scanning of square DataMatrix codes with damaged or occluded timing patterns.
Behavioral Changes
Barcode
- Smart Scan Intention now continuously adapts between Single Scan and Selection modes during a scanning session when Smart Scan Selection is enabled, switching back to Single Scan when the scene no longer requires Selection mode. Previously, once Selection mode was activated it remained active for the rest of the session.
- Changed ITF scanning to reduce false positives by introducing checksum-dependent scoring. ITF has an optional checksum which is mandated to be enabled by many of the standards that use ITF as the data carrier. Starting with this release, checksum-passing ITF codes are scanned with more relaxed conditions than codes that don't pass the checksum test. This happens even if the optional mod 10 checksum isn't enabled. To disable this behavior, enable the
no_checksum_dependent_validationsymbology extension for the ITF symbology. - Removed the Abseil library dependency.
- Reduced Code 39 false positives.
Bug Fixes
Barcode
- Fixed PDF417 macro block file ID decoding to correctly handle numeric formatting according to the ISO/IEC 15438:2015 specification.
- Fixed a crash that could occur when scanning barcodes with the k-out-of-n filter enabled, if some detected barcodes were not subject to filtering.
8.3.1
Released: April 14, 2026
No updates for this framework in this release.
8.3.0
Released: March 26, 2026
Performance Improvements
Barcode
- Improved EAN8 false positive filtering in strict mode
- Fixed incorrect smart scan intention setup for the barcode scanner settings preset
SC_PRESET_SINGLE_CODE_HAND_HELD
8.2.1
Released: March 5, 2026
No updates for this framework in this release.
8.2.0
Released: February 13, 2026
New Features
Barcode
- Added PDF417 barcode generation, including compact mode (
compact), compaction selection (compactionwith values auto/text/byte/numeric), error-correction levels 0–8 (errorCorrectionLevel), and optional dimension bounds
Performance Improvements
Core
- Reduced intermittent memory spikes while configuring the barcode scanner across all capture modes
- Barcode Generator: Improved DataMatrix encoding efficiency, which depending on input data may result in smaller generated codes
Bug Fixes
Barcode
- Improved the Smart Scan Intention logic for detecting main codes + five-digit add on codes. This improves the rate of complete main + add-on code pairs.
8.1.7
Released: October 7, 2026
No updates for this framework in this release.
8.1.6
Released: July 29, 2026
No updates for this framework in this release.
8.1.5
Released: June 10, 2026
No updates for this framework in this release.
8.1.4
Released: April 21, 2026
Bug Fixes
Barcode
- Fixed a crash that could occur when scanning barcodes with the k-out-of-n filter enabled, if some detected barcodes were not subject to filtering.
8.1.3
Released: March 25, 2026
No updates for this framework in this release.
8.1.2
Released: March 9, 2026
No updates for this framework in this release.
8.1.1
Released: February 5, 2026
Performance Improvements
Core
- Reduced intermittent memory spikes while configuring the barcode scanner across all capture modes
Bug Fixes
Barcode
- Fixed a typo in the ProcessFrameResult.message function of SDK Python bindings
8.1.0
Released: December 17, 2025
New Features
Barcode
- Extended Aztec codes reader to support scanning mirrored codes.
- Added support for square DataMatrix codes with one-sided damage or occlusion. This feature is only enabled in Barcode Capture and SparkScan.
Performance Improvements
Barcode
- Improved MicroQR detector tolerance to quiet zone violations
- Improved suppression of incorrect Codabar recognitions when using the “strict" symbology extension
Behavioral Changes
Barcode
- Enabling the “ocr_fallback" symbology extension with missing OCR model resources now triggers the context error 28 (“Missing Resource”)
Bug Fixes
Barcode
- Fixed a rare out-of-bound memory access crash when scanning low-resolution or blurry
EAN13/UPCAcodes at a specific distance
8.0.1
Released: January 14, 2026
Bug Fixes
Barcode
- Fixed a rare out-of-bound memory access crash when scanning low-resolution or blurry
EAN13/UPCAcodes at a specific distance
8.0.0
Released: November 4, 2025
New Features
Scandit's SDK 8.0 marks the evolution of data capture from a high-performing scanning tool into an intelligent AI-powered workflow enabler. As frontline operations face mounting pressures with more data points to capture, increasingly complex workflows to navigate, and tighter resource constraints, SDK 8.0 delivers a set of innovations that:
- Adapt its scanning settings and UI to context by analyzing the scanning environment and user intent;
- Automate the capture of any data format, barcode clustering, task handling or camera settings;
- Accelerate critical use cases to maximize ROI through intuitive, streamlined scanning workflows, using interactive AR-guidance, adaptive UI and out-of-the-box custom-branded passenger experiences.
With SDK 8.0 businesses can transform data capture from a basic function to a strategic advantage. It enables intelligent scanning that:
-
Understands not just what is being scanned, but also what you want to scan and why you’re scanning it
-
Adapts accordingly by adjusting scanning settings and/or UI, understanding what comes next and how to guide users through sophisticated tasks to ensure the highest level of productivity.
-
Updated
ScProcessFrameResultstruct definition with additional detailed error information. -
Modified
sc_barcode_scanner_apply_settingsto returnScContextStatuswith detailed error information. -
Added
sc_context_status_freeto public API to freeScContextStatusstructures holding detailed error information. -
Added
sc_process_frame_result_freeto public API to freeScProcessFrameResultstructures holding detailed error information. -
Modified
sc_parser_new_with_contextto takeScContextStatus *as the last param instead of just theScContextStatusFlag *. -
Improved and accelerated scanning for 1D symbologies at low resolution, in particular Code 128.
Bug Fixes
- Updated Minimum Android API Level to 24 (from 21).
- Unscanned default barcode locations are no longer added as a result to the scan session.
- Removed the following barcode scanner settings APIs in favor of the new max locations to process per frame APIs:
sc_barcode_scanner_settings_get_max_number_of_codes_per_frame(usesc_barcode_scanner_settings_get_max_num_locations_to_process_per_frame)sc_barcode_scanner_settings_set_max_number_of_codes_per_frame(usesc_barcode_scanner_settings_set_max_num_locations_to_process_per_frame)- Added corresponding Python bindings:
max_num_locations_to_process_per_frameproperty onBarcodeScannerSettings
- Added corresponding Python bindings:
- Added barcode scanner settings option to switch from single to multi-scan scanning. Multi-scan requires a tracking license.
sc_barcode_scanner_settings_set_multi_scan_enabledsc_barcode_scanner_settings_get_multi_scan_enabled- Python: added
BarcodeScannerSettings.multi_scan_enabledproperty
- Python: added
- Replaced Royal Mail symbology string identifier from
rm4scctoroyal-mail-4state. - Removed
sc_barcode_scanner_new_with_settingsAPI in favor of newly addedsc_barcode_scanner_newthat does not accept settings. New scanner instance must be configured bysc_barcode_scanner_apply_settingscall. - Removed
sc_context_status_flag_get_message. - Removed deprecated focus mode APIs:
- Removed
sc_barcode_scanner_settings_get_focus_modeandsc_barcode_scanner_settings_set_focus_mode. Set code direction hint toSC_CODE_DIRECTION_NONEfor devices without auto-focus. - Python API: removed
focus_modeproperty fromBarcodeScannerSettingsclass - Removed
focusModefield from barcode scanner settings JSON serialization
- Removed
- Removed deprecated constant
SC_SYMBOLOGY_RM4SCC(useSC_SYMBOLOGY_ROYAL_MAIL_4STATEinstead). - In the public API, changed all
_retainand_releasefunctions on opaque pointers to accept const pointers.
7.6.5
Find earlier versions in the release notes section of version 7