PRPickrack

Free QR Code Scanner

Upload an image or use your camera. Decodes URL, WiFi, vCard, email, phone, SMS, location, calendar event. Browser-side, no upload, no tracker.

Decode QR codes from an image upload or live camera. URL, WiFi, vCard, email, phone, SMS, location, calendar event — all parsed.

QR Code Scanner decodes any standard QR code from a photo, screenshot, or live camera feed — then parses the payload into readable fields with one-click actions: open the URL, connect to the WiFi, save the contact card to your phone, add the event to your calendar, dial the number, or open the location in Maps.

Use it when you receive a QR code on a poster, business card, or product packaging and don't want to install a separate scanner app — or when your phone's camera can't focus on a QR code at the size it's printed.

Pickrack uses the open-source jsQR library running entirely in your browser. Your image or camera feed never leaves your device — no upload, no server processing, no scan analytics. The decoded payload is parsed in your tab and discarded when you close it.

Key features

  • Image upload + live cameraDrag-and-drop a PNG/JPG/GIF/WebP, or click 'Use camera' to scan with your webcam. Mobile camera defaults to the rear lens.
  • 9 content types parsedURL · WiFi · vCard · email (mailto:) · phone (tel:) · SMS (SMSTO) · geo location · calendar event (iCal VEVENT) · plain text — each with action buttons.
  • vCard → .vcf downloadScanned vCard QR codes parse into Name / Org / Email / Phone / Address / Website fields, then save as a .vcf file that imports into any phone's Contacts app.
  • Calendar event → .ics downloadScanned VEVENT QR codes download as a .ics file you can open in Apple Calendar, Google Calendar, or Outlook.
  • WiFi → reveal passwordScanned WiFi QR codes show SSID, encryption type, and a masked password with a 'Show' toggle + Copy button — no need to type the password manually.
  • Session historyLast 5 scans kept in memory while the tab is open. Click any to re-display. Cleared when you close the tab — no localStorage, no tracking.
  • Browser-side, no uploadImage data and camera frames are processed in your tab. Nothing is sent to any server, ever.

How to use

  1. Step 1: Pick upload or cameraUpload is best for QR codes you have as an image file (screenshot, downloaded from email). Camera is best for QR codes printed in front of you.
  2. Step 2: Provide the QRFor upload: drag the file into the drop zone or click to browse. For camera: click 'Start camera', grant permission, point at the QR code.
  3. Step 3: Read the decoded resultThe scanner detects the content type and renders the appropriate card — with action buttons (Open URL, Send email, Download .vcf, etc.).
  4. Step 4 (optional): Use the action buttonClick 'Open URL' to navigate, 'Call' to dial, 'Send email' to draft, 'Download .vcf' to save the contact, 'Download .ics' to add the event.

When to use

  • Restaurant menu QR — scan from a printed table tent, open the menu in your browser
  • Conference badge vCard — scan a vCard QR, download as .vcf, import to your phone contacts
  • Café WiFi password — scan the WiFi QR on the wall, reveal the password to type on your laptop (which doesn't have a camera)
  • Event poster — scan the calendar QR, download .ics, add to your calendar in one click
  • Mystery QR from email — paste a screenshot, see what URL it actually goes to BEFORE clicking (safer than scanning with your phone)
  • Product packaging QR — scan from a photo when the printed QR is too small for your phone to focus on
  • Audit a QR you generated — scan your own QR (from Pickrack's QR Generator) to verify it decodes correctly

Frequently asked questions

Does scanning work offline?

Yes — the decoder runs entirely in your browser using the jsQR library. After the page loads once, you can scan without an internet connection. Camera access doesn't require internet either.

Is the camera feed sent anywhere?

No. Frames are drawn to an off-screen canvas in your tab, scanned for QR pattern in JavaScript, then discarded. No upload, no logging, no third-party scan service.

Why does my image scan fail?

Common causes: (1) the QR is too small / low-resolution — try a sharper photo; (2) the image is blurry or has motion blur; (3) the QR has reflections or shadows that obscure the pattern; (4) the QR is rotated more than 30° — the decoder handles small rotations but not extreme ones; (5) the image is heavily compressed and the QR modules are pixelated. Try a different angle, better lighting, or a clearer photo.

Camera doesn't work — why?

Three checks: (1) you granted camera permission (the browser prompts on first use); (2) you're on HTTPS — camera access requires HTTPS, which Pickrack uses; (3) another app/tab isn't already using the camera (close other tabs with active camera streams). If still failing, try a different browser or the upload mode instead.

Can it scan multiple QR codes in one image?

v1 detects only the first QR found in the image. Multi-QR detection in a single image is on the roadmap. For now, crop the image to one QR at a time or use upload mode multiple times.

Can it scan Micro QR or rMQR (Rectangular)?

Not currently — jsQR supports only standard QR codes (Versions 1-40). Micro QR (M1-M4) and rMQR are different formats with limited scanner support anyway, so they're rare in the wild.

What about barcode 1D formats like UPC, EAN, Code 128?

Pickrack's QR Scanner is QR-only. 1D barcodes need a different library (@zxing/library or similar). A general barcode scanner is on the roadmap.

Why is the WiFi password hidden by default?

If you're sharing your screen or scanning in public, you may not want the password visible. Click 'Show' to reveal it once you're ready. The Copy button works without revealing.

How accurate is the scanner?

jsQR decodes the same QR codes your phone camera does — it's the de-facto JavaScript QR decoder used in many production apps (Stripe, GitHub Codespaces, etc.). Standard well-formed QR codes scan at near 100% on good images.

Does this work on mobile browsers?

Yes — works on Safari iOS 11+, Chrome Android, Firefox mobile. Camera permission UX matches what native apps show. On iOS Safari, the camera feed appears inline (no fullscreen takeover).

Related tools