Platforms

Barcode Scanner SDK Platforms: Mobile, Web, Desktop and Server

barKoder Barcode Scanner SDK supports native mobile, browser, desktop, server and cross-platform application development. Choose the integration that matches your technology stack and deployment requirements.

Seven SDKs, one scanning engine

Each platform SDK ships the same barKoder decoder in the form your stack expects: a Gradle module, an xcframework, an npm package, native libraries, a Python package or a NuGet package. Here is what you get on each one, how it is delivered and what it needs.

Android Barcode Scanner SDK

Kotlin and Java · native mobile

  • What you get: a BarkoderView camera view, a BarkoderConfig with your license key and a callback that returns results, thumbnails and the scanned image.
  • Package: barkoder.aar, imported as a Gradle module.
  • Requires: Android 5.0 (API 21) or later. ABIs: arm64, armeabi, x86 and x86_64.
Android SDK installation guide →

iOS Barcode Scanner SDK

Swift and Objective-C · native mobile

  • What you get: a BarkoderView with a decoder configuration and a result delegate.
  • Package: Barkoder.xcframework and BarkoderSDK.xcframework, added to Xcode directly or through the barkoder-sdk-ios-spm Swift package.
  • Requires: iOS 15 or later for the current 1.7.2 frameworks, and a camera usage description in Info.plist.
iOS SDK installation guide →

Web Barcode Scanner SDK

JavaScript and WebAssembly · browser

  • What you get: camera scanning inside a web page, on desktop and mobile browsers, with no app to install.
  • Package: barkoder-wasm on npm, or barkoder-umd.js and barkoder.wasm loaded with a script tag.
  • Requires: HTTPS, the correct MIME type for .wasm files, and Chrome 67+, Firefox 69+, Edge 79+ or Safari 14+.
Web SDK installation guide →

Windows Barcode Scanner SDK

C and C++ · desktop, kiosk and POS

  • What you get: a native C interface that decodes images and raw pixel buffers from webcams, document scanners or video frames.
  • Package: .dll libraries, headers and code samples, with C++ and .NET wrapper integrations.
  • Requires: Windows 10, Windows 11 or Windows Embedded/IoT, on x86 or x64.
Windows SDK details →

Linux Barcode Scanner SDK

C++ API · server, desktop and embedded

  • What you get: decoding from webcams, industrial cameras, image streams, image files or RGB and grayscale pixel buffers, in real time or in batches.
  • Package: a download from the barKoder Developer Portal with shared libraries (.so) per architecture and a sample build script.
  • Requires: Ubuntu 20.04+, Debian, CentOS or similar on x86_64 or ARM64, with gcc, make, libcurl, libiconv, libjpeg and libpng. MRZ needs a 64-bit build.
Linux SDK installation guide →

Python Barcode Scanner SDK

Python 3.11+ · automation and batch jobs

  • What you get: a decodeImage call that takes a grayscale NumPy array and returns JSON, so it fits OpenCV pipelines.
  • Package: the SDK download or the barkoder-python-sdk repository on GitHub, plus opencv-python and numpy.
  • Requires: Python 3.11 or newer on 64-bit Linux (Ubuntu 22.04 or newer recommended). The GitHub README also covers Windows 10/11 and macOS 11+ packages.
Python SDK installation guide →

C# Barcode Scanner SDK

.NET 6.0+ · desktop and enterprise apps

  • What you get: the BarkoderNET API for .NET applications, compatible with System.Drawing and OpenCV through Emgu CV.
  • Package: a BarkoderSDK NuGet package (.nupkg) installed from a local NuGet repository.
  • Requires: .NET 6.0 or newer on Windows 10 or newer, or Windows Server 2019+. Build for x64 or ARM64, or also x86 with the Lite package (no MRZ); AnyCPU isn't supported.
C# SDK installation guide →

Building one app for Android and iOS?

Cross-platform frameworks

The framework plugins wrap the Android and iOS SDKs above, so the same decoder runs inside your Flutter, React Native, .NET MAUI, Capacitor, Cordova or NativeScript app.

Compare the cross-platform barcode scanner plugins →

Which barKoder SDK should I use?

Start from where the barcode is captured and who runs the code: a phone in someone's hand, a browser tab, or a process on a PC or server.

ApproachChoose it whenInputWhat you ship
Native mobile
Android, iOS
Your app is written in Kotlin, Java or Swift, and you want direct control of the camera view, decoder settings and result handling. Live device camera Your app with the SDK inside
Web
WebAssembly
Users scan inside a web app or PWA on laptops, tablets and phones, and shouldn't have to install anything. Browser camera A web app served over HTTPS
Cross-platform
Framework plugins
One codebase in Flutter, React Native, .NET MAUI, Capacitor, Cordova or NativeScript ships to Android and iOS. Device camera through the native SDKs A plugin from pub.dev, npm or NuGet
Desktop and server
Windows, Linux, Python, C#
You decode images from files, scanners, fixed cameras or upload pipelines, in kiosks, POS stations, back-office tools or batch jobs. Image files, pixel buffers, camera frames A library loaded by your C, C++, C# or Python process

Most barKoder apps run on Android, followed by iOS and the web. Desktop and server deployments are fewer, but they typically decode far more images per installation than a phone does.

Server-side and batch barcode scanning

On a server there is no camera preview. Your code loads an image, the SDK decodes every barcode it finds, and you store or route the results. The Linux, Windows, Python and C# SDKs all work this way and decode locally.

  1. LoadRead the image with OpenCV, System.Drawing or your own loader and pass the pixels as a grayscale buffer.
  2. ConfigureEnable only the symbologies you expect, set the maximum results count and turn on DPM or VIN rules where needed.
  3. DecodeCall the decoder once per image. In Python, decodeImage returns JSON with a resultsCount and each result.
  4. UseWrite the values to your database or queue. Formatting options can parse GS1, AAMVA and South African license data.

Python barcode reader example

From the barkoder-python-sdk README. Loop over your files to turn it into a batch job.

Python
from Barkoder import BarkoderSDK
import json
import numpy as np
import cv2 as cv

version = BarkoderSDK.getLibVersion();
print("SDK version: ", version)

status = BarkoderSDK.initialize("LICENSE_KEY");
print("SDK status: ", status)

#---------------configure the SDK--------------
QR = BarkoderSDK.constants["Decoders"]["QR"];
PDF417 = BarkoderSDK.constants["Decoders"]["PDF417"];

#set desired decoders
decoders = [QR, PDF417];
BarkoderSDK.setEnabledDecoders(decoders);

#set desired decodingSpeed
decodingSpeed = BarkoderSDK.constants["DecodingSpeed"]["Normal"];
BarkoderSDK.setDecodingSpeed(decodingSpeed);

#set desired ROI
BarkoderSDK.setRegionOfInterest(0, 0, 100, 100);

#set desired DPM mode
BarkoderSDK.setDatamatrixDpmModeEnabled(False);
#---------------configure the SDK--------------

#---------------read and scan an image---------
img = cv.imread('qr.bmp', cv.IMREAD_GRAYSCALE)
assert img is not None, "file could not be read, check with os.path.exists()"

height, width = img.shape[:2]

result_json = BarkoderSDK.decodeImage(img, width, height)
#---------------read and scan an image---------

#---------------handle the result--------------
result = json.loads(result_json)

print("resultsCount: ", result["resultsCount"])

# the result is a Python dictionary:
if result["resultsCount"] == 1:
    print(result["barcodeTypeName"])
    print(result["textualData"])

elif result["resultsCount"] > 1:
    for res in result["results"]:
        print(res["barcodeTypeName"])
        print(res["textualData"])
        print("---------------------------")

else:
    print("No barcode found.")
#---------------handle the result--------------

What to plan for on a server

  • Several barcodes per image: raise the maximum results count instead of cropping images first.
  • Still images allow the Rigorous decoding speed, which the Python API reserves for images rather than live video.
  • DeBlur for EAN and UPC, misshaped 1D codes, DPM, VIN restrictions and GS1 Composite are single settings in the Python API.
  • MRZ on Linux needs the OCR libraries, a 64-bit build and an MRZ-enabled license key. The C# SDK also needs an MRZ-enabled key.
  • ARM64 Linux support covers embedded control units and kiosks as well as servers.
  • Server deployment is licensed on custom terms, so tell us your volume when you request a quote.
Request a server license quote

What stays the same when you switch platforms

Licensing and devices

  • The SDK checks the license key with the licensing server when it initializes, then scans locally. Each device must reach the licensing server at least once every 30 days.
  • Web licenses count unique browser clients instead of devices.
  • Mobile cameras need at least 1280×720. Devices with an 8 MP autofocus camera are recommended.
  • A trial key runs for 30 days on up to 25 devices with unlimited scans.
See SDK pricing →

Teams that picked the platform that fits

Two teams chose the Web SDK so their users don't install an app. A third runs the same scanning on Android and in a web portal.

Try barKoder on your phone or in your browser

Install the free barKoder demo app, or open the web demo, and scan your own barcodes before you integrate the SDK.

iPhone and iPad

barKoder demo app for iOS

Scan with your camera, or point it at the QR code to open the App Store.

Download on the App Store
QR code linking to the barKoder demo app on the App Store

Android phones and tablets

barKoder demo app for Android

Scan with your camera, or point it at the QR code to open Google Play.

Get it on Google Play
QR code linking to the barKoder demo app on Google Play

Any modern browser

barKoder web demo

Runs the Web SDK in your browser, on desktop or mobile, with nothing to install.

Open the web demo
QR code linking to the barKoder web demo

Test with known samples. Print or display the testing sheet and scan each 1D and 2D barcode with the demo app. The data sheet summarizes the SDK for your team.

Platform questions

Which platforms does the barKoder SDK support?

Native SDKs cover Android, iOS, the web through WebAssembly, Windows, Linux, Python and C#. Plugins for Flutter, React Native, .NET MAUI, Capacitor, Cordova and NativeScript build on the Android and iOS SDKs. All of them use the same decoding engine.

Is there a C# barcode scanner SDK for .NET?

Yes. The C# Barcode Scanner SDK targets .NET 6.0 or newer on Windows 10 or newer and Windows Server 2019+, and ships as a NuGet package you install from a local repository. Build it for x64 or ARM64; the Lite package without MRZ also runs on x86. If you are building a cross-platform UI app in C#, the .NET MAUI Barcode Scanner SDK is the better fit.

Can I run barcode detection on a server?

Yes. Use the Linux SDK (C++), the Python SDK or the C# SDK to decode images your backend receives, such as uploads, scans or camera frames. Decoding runs in your own process. Server deployment is licensed on custom terms, so request a quote with your expected volume.

Which Python versions does the Python barcode reader support?

Python 3.11 or newer. The documentation targets 64-bit Linux with Ubuntu 22.04 or newer recommended, and the barkoder-python-sdk README on GitHub also describes Windows 10/11 and macOS 11+ packages. The SDK needs opencv-python and numpy. Contact barKoder if you need an older Python version.

Does the Linux barcode scanner SDK run on ARM64?

Yes. The Linux SDK supports x86_64 and ARM64, so it runs on servers as well as embedded control units and industrial kiosks. It reads from webcams, industrial cameras, image files and pixel buffers. See the Linux installation guide for the required system libraries.

Do I need a native app, or can users scan in the browser?

The Web SDK scans with the device camera inside the browser, so users install nothing. It needs HTTPS and a browser with WebAssembly support, such as Chrome 67+, Firefox 69+, Edge 79+ or Safari 14+. Choose a native or framework SDK when scanning is part of an app you already ship through the app stores.

Do all platforms have the same features?

The decoder and barcode types are shared. Some features depend on the environment: AR Mode needs a live camera view and is available on Android, iOS and the Web SDK, and MRZ on Linux needs the OCR libraries on a 64-bit build. Check the documentation for your platform before you plan a feature.

Does scanning work offline?

Yes. The SDK checks the license key with the barKoder licensing server when it initializes. Scanning runs locally, and each device must reach the licensing server at least once every 30 days.

Test barKoder on your platform

Get a free 30-day trial key for mobile, web, desktop or server, or talk to an SDK expert about your deployment.