Scan the Secure QR on any Aadhaar card to instantly verify identity details โ 100 % offline, no server, no data leaves your device.
| Feature | Details |
|---|---|
| ๐ท Live camera scan | Uses the rear camera on mobile, front on desktop |
| ๐ผ๏ธ Image upload | Pick any photo containing an Aadhaar QR from your gallery |
| ๐ 100 % offline | All decoding happens in the browser โ zero network requests |
| ๐ชช Full card details | Name, DOB, gender, address, mobile last-4, email (if present), issue date |
| ๐ 3D card flip | Front (personal) โ Back (address) card flip animation |
| ๐ Shareable URL | Result is encoded in ?data= so links can be bookmarked |
| ๐ฑ Mobile-first | Works on iOS Safari, Android Chrome, and desktop browsers |
| Scanner | Verified Result (Front) | Verified Result (Back) |
|---|---|---|
![]() |
![]() |
![]() |
| Point camera at any Aadhaar QR | Personal details on the front face | Address & reference date on the back |
Open the live deployment in your browser โ no install needed:
https://PtPrashantTripathi.github.io/AadhaarQRCodeReader/
# 1. Clone the repository
git clone https://github.com/PtPrashantTripathi/AadhaarQRCodeReader.git
cd AadhaarQRCodeReader
# 2. Serve with any static server (the app uses ES Modules, so file:// won't work)
npx serve .
# โ or โ
python3 -m http.server 8080
# 3. Open http://localhost:8080 in your browserWhy a server? ES Module
importstatements requirehttp://orhttps://. Openingindex.htmldirectly viafile://will fail with a CORS error.
- Open the app in your browser.
- Tap Start Camera โ grant camera permission when prompted.
- Point the rear camera at the Secure QR code printed on an Aadhaar card or letter (the large QR, not the small one).
- Hold steady โ the green scan line detects the code automatically.
- The app redirects to
?data=โฆand shows the verified card result. - Tap Flip Card to toggle between personal details and the address.
- Tap Scan Again to return to the scanner.
- Tap Upload instead of Start Camera.
- Select any photo (gallery, screenshot, scanned document) that contains the Aadhaar Secure QR.
- The app analyses the image instantly and shows the result.
If you already have the raw QR string (base-10 decimal), append it to the URL:
https://PtPrashantTripathi.github.io/AadhaarQRCodeReader/?data=<qr-value>
The page will decode and render the card without opening the camera.
AadhaarQRCodeReader/
โโโ index.html # App shell
โโโ css/
โ โโโ base.css # Design tokens, layout, typography
โ โโโ components.css # Scanner, card, buttons, animations
โโโ script/
โ โโโ main.js # App entry point, view orchestration
โ โโโ modules/
โ โ โโโ aadhaar.js # Aadhaar Secure QR decoder (gzip + fields)
โ โ โโโ camera.js # Camera controller & file-upload QR scan
โ โ โโโ jpeg_decoder.js # JPEG 2000 photo decode via openjpeg WASM
โ โโโ utils/
โ โโโ bytes.js # decimalToBytes, gunzip
โ โโโ dom.js # setStatus (status-bar helper)
โ โโโ format.js # formatAadhaarNumber, extractComment
โโโ images/ # Icons, card backgrounds, emblems
โโโ .github/
โ โโโ workflows/
โ โโโ pages.yml # GitHub Pages CI/CD deployment
โโโ .gitignore
โโโ README.md
- No network calls โ the app makes zero requests after the initial page load.
- No storage โ nothing is written to
localStorage,sessionStorage, or cookies. - Client-side only โ all decoding (gzip, field parsing, JPEG 2000) happens in the browser using Web APIs and WebAssembly.
- The
?data=URL parameter contains the raw QR payload โ treat it like the physical card (don't share publicly).
| Library | Purpose | Loaded from |
|---|---|---|
| jsQR | QR code detection from pixel data | jsDelivr CDN |
| openjpeg.js | JPEG 2000 decode (Emscripten) | jsDelivr CDN |
No build tools, no frameworks, no transpilation โ vanilla ES Modules.
GNU GPL3 ยฉ Prashantt Tripathi
Made with โค๏ธ by @PtPrashantTripathi


