License plate recognition,
on the device.

Fully offline ALPR for Expo, React Native, Swift and Kotlin. No servers, no per-scan fees. The basic scanner is free, also in production.

30+ FPS (15+ on Android)live scanning on iOS
100% offlineruns on the device
65 countriesone model
Get started See pricing
iPhone: live scan reading EL 40489iPhone: two Tesla plates read from a photoAndroid: live scan reading EL 64433Android: EL 15211 read from a photo
Example app on iPhone and Android ยท
AttributionPhotos: Norsk Elbilforening and Mariordo, CC BY 2.0, via Wikimedia Commons, cropped.

Features

Everything you need to read plates in a mobile app. Features marked PRO need a Pro license in release builds; they work without a key in debug, simulator, TestFlight and ad-hoc builds, so you can build with them before you buy.

Fully offline

Everything runs on the device. No servers, no network calls, no images or plates leave the phone.

Live camera scanning

Several plates per frame, each with text, country, confidence and bounding box.

65 countries

Europe, the Americas, the Middle East, Asia and Oceania in one model.

Native overlay

Boxes and labels drawn natively on the camera preview, ready out of the box.

Free in production

No scan, device or activation limits. No per-scan fees, ever.

One key, every platform

Expo, React Native, Swift and Kotlin today. Flutter and Capacitor are next.

GPU and Neural EnginePRO

30+ FPS on iOS (15+ FPS on Android) with hardware acceleration.

Plate consensusPRO

Votes across frames and reports each plate once, with stable text.

Country and format filtersPRO

Keep only the countries and plate patterns you care about.

Plates in photosPRO

Recognize plates in images from the gallery, files or URLs.

Scan region, zoom and torchPRO

Crop to a region for distant plates, zoom in and light up the scene.

Tuning and stylingPRO

Custom detection and OCR thresholds, overlay colors and labels.

Get started

Install the package and drop in the camera view. No license key needed to start.

1. Install

npm install react-native-alpr

Then run npx expo prebuild and start a dev client. Expo Go is not supported.

2. Scan

import { Button } from 'react-native';
import { AlprCameraView, useCameraPermissions } from 'react-native-alpr';

export default function Scanner() {
  const [permission, requestPermission] = useCameraPermissions();
  if (!permission?.granted) return <Button title="Allow camera" onPress={requestPermission} />;

  return (
    <AlprCameraView
      style={{ flex: 1 }}
      onPlates={(plates) => console.log(plates.map((p) => p.plate))}
    />
  );
}
Read the Expo docs on GitHub

65 supported countries

The model reads the plate text and tells which country the plate is from.

Pricing

Start free. Buy Pro once when you need the PRO features in production. One key covers your app on every platform.

Free

$0

Forever, also in production

  • Live camera scanning
  • 65 countries
  • Fully offline, on-device
  • Native overlay
  • No scan, device or activation limits
  • Every PRO feature in debug, simulator and TestFlight builds
Get started

Enterprise

From $1,999

For companies with several apps

Everything in Pro, plus:

  • Several apps on one agreement
  • Invoice and bank transfer
  • Custom license terms
  • Priority support
Contact us