Kotlin Multiplatform Barcode Scanner SDK
The Scanbot Kotlin Multiplatform Barcode Scanner SDK adds real-time 1D and 2D barcode scanning to Android and iOS apps built from a shared Kotlin codebase.
Trusted by
400+
global
industry leaders
Real-time AR feedback
Deliver real-time AR feedback during barcode scans, enhancing the user experience in your Kotlin Multiplatform apps. Visual cues guide users to faster and more accurate scans.
Barcode scanning in challenging conditions
The Kotlin Multiplatform Barcode Scanner SDK is optimized for reliable performance even in challenging environments:
- Damaged barcodes
- Low-light environments
- Tiny or distant barcodes
Customizable UI components
Our Ready-To-Use UI components cover all barcode scanning scenarios and are highly customizable. Learn more
Fast.
Very fast.
Every scan happens in
Add a fast and reliable Kotlin Multiplatform Barcode Scanner to your app
The Scanbot Kotlin Multiplatform Barcode Scanner SDK brings fast, reliable barcode scanning to cross-platform apps. Built for Kotlin Multiplatform and Compose Multiplatform, it lets you share code across Android and iOS while giving you the flexibility to use shared UI or platform-specific interfaces.
The SDK scans barcodes in 0.04 seconds and supports a wide range of symbologies, including QR Code, PDF417, and UPC. You can also scan barcodes from still images and filter results by barcode type or content, with regex support.
Its Ready-To-Use UI Components make integration quick, delivering both pre-built scanning modes for common use cases and customization options to match your app’s design. Features like user guidance, AR overlays, and audio and haptic feedback make the scanner intuitive for any user, regardless of technical experience.
Prefer full control? The SDK’s Custom UI Components let you build a completely customized scanning experience.
All data is processed and stored entirely on the end user’s device. Nothing is ever transferred to our servers or any cloud service. The SDK operates 100% offline, ensuring uninterrupted workflows.
Technical requirements
The Scanbot Kotlin Multiplatform Barcode Scanner SDK requires Android 8.0 (API Level 26) or higher, iOS 13 or higher, and a device with a rear-facing camera with autofocus.
- Developer Tools
- For Android apps: Android SDK (API Level 26+), Platforms and Developer Tools and Java SDK 17+
- For iOS apps: macOS X with latest Xcode and Command Line Tools
- Hardware: Rear-facing camera with autofocus
- Supported Architectures:
- Android: armeabi-v7a, arm64-v8a, x86, and x86_64
- iOS: arm64
- iOS Simulator: arm64
- Platforms:
- Android 8.0 (API Level 26) and higher
- iOS 13 and higher
Discover common Kotlin Multiplatform Barcode Scanning use cases
See how the scan modes of the Scanbot Kotlin Barcode Scanner SDK can improve your workflows.
-
Single Scanning
Single Scanning mode captures one barcode at a time. This mode is ideal for simple tasks such as re-ordering a product or looking up stock. An optional confirmation sheet lets users verify the scanned value before submitting.
-
Batch Scanning
-
Multi Scanning
-
Find & Pick
-
Scan & Count
How to integrate the Scanbot Kotlin Multiplatform Barcode Scanner using RTU UI
To integrate the Scanbot Kotlin Multiplatform Barcode Scanner SDK, add the SDK dependencies to your project, initialize the SDK with your license key, and launch a scanning mode via the Ready-To-Use UI.
Adding the RTU UI dependency
The RTU UI components are included in the main SDK bundle package kmp-barcode-sdk.
Add it as a dependency to your project:
implementation("io.scanbot:kmp-barcode-sdk:$scanbotSDK");
Launching the RTU UI Barcode Scanner:
@Composable
fun BarcodeScannerExample() {
// Initialize the SDK:
LaunchedEffect(Unit) {
ScanbotSDK.initialize(
SdkConfiguration(
licenseKey = "" // add your license key here
)
)
}
Button(onClick = {
// Create the configuration:
val config = BarcodeScannerScreenConfiguration().apply {
// TODO: configure as needed
}
// Launch the barcode scanner:
ScanbotSDK.barcode.startScanner(
configuration = config, onResult = { result ->
result.onSuccess { scanResult ->
// Barcode Scanner result callback:
// Get the first scanned barcode from the result object...
val barcodeItem = scanResult.items.firstOrNull()
// ... and process the result as needed, for example, print to console:
println("Scanned: ${barcodeItem?.barcode?.text} (${barcodeItem?.barcode?.format})")
}.onFailure { error ->
// Optional failure handling to understand why scanner result is not provided
when (error) {
is InvalidLicenseError -> {
// Indicates that the Scanbot SDK license is invalid
}
else -> {
// Handle other errors
}
}
}
})
}) {
Text("Start Barcode Scanner")
}
}
Frequently Asked Questions
How can I try the Scanbot Kotlin Barcode Scanner SDK?
You can test the SDK immediately without a license, with scanning sessions limited to 60 seconds. For full testing, request a free 7-day trial license – no strings attached. Licensing is a flat annual fee with unlimited scans and full support included.
Does the Scanbot Kotlin Barcode Scanner SDK work offline?
Yes, the SDK works 100% offline and contains no networking code. All data is processed and stored on the end user's device and never transferred to Scanbot servers or any cloud service.
What is the best way to add barcode scanning to a Kotlin Multiplatform app?
The best approach to adding barcode scanning to a KMP app depends on whether you want maximum control over the implementation or the fastest path to a production-ready scanner.
If you use platform-native frameworks such as Google ML Kit on Android and Apple Vision on iOS, you need to implement and maintain the platform-specific integrations yourself. In a Kotlin Multiplatform project, this typically means separate Android and iOS implementations, connected through expect/actual declarations or an abstraction layer. You will also need to build the camera and scanning UI.
If you prefer a shared implementation, the Scanbot Kotlin Multiplatform Barcode Scanner SDK provides a unified Kotlin API for Android and iOS. It also includes Ready-To-Use UI components, so you can add a complete barcode-scanning workflow with less platform-specific code.
Can I use Google ML Kit for barcode scanning in Kotlin Multiplatform?
Yes. Google ML Kit can be used in a Kotlin Multiplatform app, but it is not available as a single shared KMP barcode-scanning library.
You need to integrate the native ML Kit SDK separately on each platform: typically with CameraX on Android and the iOS ML Kit package through CocoaPods or Swift Package Manager. Then, expose the functionality to shared Kotlin code through expect/actual implementations or your own platform abstraction. You are also responsible for implementing the camera preview, scan feedback, permissions, lifecycle handling, and result UI.
If you want to avoid maintaining two native integrations and a custom scanner interface, the Scanbot Kotlin Multiplatform Barcode Scanner SDK offers one shared Kotlin API and ready-made scanner UI for both Android and iOS.