![]() |
![]() |
|---|---|
| Light Mode | Dark Mode |
Free & Open Source QR Code Generator & Decoder — no proxies, no tracking, no paywalls. QR generation and image decoding run on your device.
Available as:
- React Native app (Android/iOS)
- Web app (Next.js) in the
/webdirectory
Most QR code generators online:
- Create proxy URLs (like bit.ly) instead of direct QR codes
- Require payment for basic features
- Track your data
This app generates and decodes real QR codes locally on your device. What you type is exactly what gets encoded. Period.
- Multiple QR types: URL, Plain Text, Wi-Fi, Email, Phone, SMS
- Instant preview: QR code updates in real-time as you type
- Color customization: Pick foreground & background colors
- Adjustable size: Slider to control QR code dimensions
- Share & Save: Export as PNG image
- Upload from gallery: Select QR code images from your device
- Paste from clipboard: Decode copied images, image URLs, or base64 image data
- Load from URL: Decode QR codes from user-provided image URLs
- Copy decoded data: One-tap copy to clipboard
- Open URLs: Direct link opening for decoded URLs
- Dark mode: Automatic system theme support
- Offline-first: QR generation and image decoding run on-device
- Privacy first: No tracking, no proxies. The only network request is the optional "Load from URL" decode, which fetches the image from the host you choose
Pre-built binaries are available on this repository's GitHub Releases page:
- Windows:
.msi(installer) or.exe(portable) - Linux:
.AppImage,.deb, or.rpm - macOS:
.dmg—macos-arm64for Apple Silicon,macos-x64for Intel - Android:
.apkor.aab(Google Play)
No installation required for .AppImage or .exe — just download and run.
Each release includes a checksums.txt file. Verify integrity:
Windows:
# PowerShell
(Get-FileHash "QRCrafter-v1.3.0-windows.exe" -Algorithm SHA256).Hash
# Compare with the hash in checksums.txtLinux:
sha256sum QRCrafter-v1.3.0-linux.AppImage
# Compare with the hash in checksums.txtmacOS:
# Apple Silicon (arm64)
shasum -a 256 QRCrafter-v1.3.0-macos-arm64.dmg
# Compare with the hash in checksums.txt
# Intel (x64)
shasum -a 256 QRCrafter-v1.3.0-macos-x64.dmg
# Compare with the hash in checksums.txt- Node.js >= 22.11.0 (download)
- Rust 1.77.2+ (download rustup)
- Download
rustup-init.exeand run it - Choose option 1 (default install)
- Important: Restart your terminal or PC after installation for PATH to update
- Download
- Git (download)
- Rust 1.77.2+ (
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh) - Xcode Command Line Tools (
xcode-select --install) - Git (included with Xcode)
- Rust 1.77.2+ (instructions)
- Build essentials:
sudo apt-get install build-essential libssl-dev pkg-config libgtk-3-dev libayatana-appindicator3-dev - Git
- Android Studio (download)
- Android SDK (set
ANDROID_HOMEenvironment variable) - JDK 11+ (Usually installed with Android Studio)
- Xcode (via App Store)
- CocoaPods (
sudo gem install cocoapods)
# Clone and install dependencies
git clone https://github.com/yourusername/QRCrafter.git
cd QRCrafter
npm installnpm run androidcd ios && pod install && cd ..
npm run ioscd web
npm install
npm run dev
# Open http://localhost:3000cd web
npm run tauri:buildIf you get "rustc is not recognized" or "cargo is not recognized":
-
Check if Rust is installed:
ls $env:USERPROFILE\.cargo\binIf this folder doesn't exist, install Rust from https://rustup.rs/
-
Update PATH in current session:
$env:PATH += ";$env:USERPROFILE\.cargo\bin" rustc --version # Should show version cargo --version
-
Permanently add to PATH (recommended):
- Press
Win + Xand search "Environment Variables" - Click "Edit the system environment variables"
- Click "Environment Variables..."
- Under "User variables", find or create
Path - Click "Edit..." and add:
C:\Users\YourUsername\.cargo\bin - Click OK and restart your terminal/IDE
- Press
If you get errors about missing openssl, gtk, or other libraries:
# Debian/Ubuntu
sudo apt-get update
sudo apt-get install build-essential libssl-dev pkg-config libgtk-3-dev libayatana-appindicator3-dev
# Fedora
sudo dnf install gcc glibc-devel openssl-devel pkg-config gtk3-devel libayatana-appindicator-develThen try building again:
cd web
npm run tauri:buildcd ios
rm Podfile.lock
pod install
cd ..Make sure ANDROID_HOME is set:
# macOS/Linux (add to ~/.bashrc or ~/.zshrc)
export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/emulator:$ANDROID_HOME/tools:...
# Windows (PowerShell)
$env:ANDROID_HOME = "C:\Users\YourUsername\AppData\Local\Android\sdk"- React Native 0.84
- TypeScript
react-native-qrcode-svg— QR code renderingreact-native-svg— SVG supportreact-native-view-shot— Screenshot capture for Androidreact-native-share— Native share sheetreact-native-wifi-reborn— Wi-Fi QR code support@react-native-camera-roll/camera-roll— Save to galleryreact-native-safe-area-context— Safe area handling@react-native-community/slider— Size controlreact-native-image-picker— Image selection from gallery@react-native-clipboard/clipboard— Clipboard accessreact-native-fs— File system operationsjsqr— Pure JavaScript QR decodingjimp— Image processing for QR decoding
- Next.js 16
- TypeScript
- Tailwind CSS
react-qr-code— QR generationjsqr— QR decoding
src/
├── components/
│ ├── QrTypeSelector.tsx # QR type picker chips
│ ├── QrInputForm.tsx # Dynamic input forms per type
│ └── QrCustomizer.tsx # Color & size controls
├── screens/
│ ├── HomeScreen.tsx # QR code creation screen
│ └── DecoderScreen.tsx # QR code decoding screen
├── theme/
│ ├── colors.ts # Color palette & presets
│ └── useAppTheme.ts # Dark/light theme hook
├── types/
│ └── qr.ts # TypeScript types & constants
└── utils/
└── encoders.ts # QR data encoders (Wi-Fi, email, etc.)
shared/
├── qr.ts # Shared QR types/constants for mobile + web
└── encoders.ts # Shared encoder helpers for mobile + web
MIT — do whatever you want with it.


