A modern, intuitive QR code generator with custom colors, logos, and multiple QR types. Built with React and Vite for a fast, responsive experience.
- Multiple QR Types: Generate QR codes for URLs, WiFi networks, phone numbers, emails, locations, and vCards
- Custom Colors: Choose custom foreground and background colors with hex input support
- Logo Support: Add custom logos to your QR codes
- Real-time Preview: See your QR code update instantly as you type
- High-Quality Downloads: Download 1000x1000px PNG images
- Responsive Design: Works perfectly on desktop and mobile devices
- Dark Theme: Modern dark interface with brand accents
- Node.js 18+
- npm or yarn
# Clone the repository
git clone https://github.com/userkace/qr.git
cd qr
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview- Plain text or website URLs
- Automatic URL detection
- Network name (SSID)
- Password
- Security type (WPA/WEP/None)
- Phone numbers with automatic tel: link generation
- Recipient address
- Subject line
- Message body
- GPS coordinates
- Optional location name
- Google Maps integration
- First and last name
- Organization
- Phone number
- Email address
- Website
- Foreground: QR code pattern color
- Background: QR code background color
- Hex Input: Manual hex color entry supported
- Live Preview: Real-time color updates
- Supported Formats: PNG, JPG, SVG
- Recommended: Square PNG with transparent background
- Size: Automatically optimized for QR clarity
- Default: Branded @ logo shown when all inputs are empty
- Frontend: React 18 with hooks
- Build Tool: Vite
- Styling: Tailwind CSS
- Icons: Lucide React
- Animations: Framer Motion
- QR Generation: QuickChart API
- Mobile-optimized interface
- Touch-friendly controls
- Adaptive layouts
- Cross-browser compatibility
src/
├── components/ # React components
├── hooks/ # Custom hooks
│ └── useQR.js # QR generation logic
├── App.jsx # Main application
├── index.css # Global styles
└── main.jsx # App entry point
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
- Empty State: When all inputs are empty, shows a branded QR code linking to https://kace.dev
- Color Contrast: Ensure good contrast between foreground and background for scannability
- Logo Size: Keep logos simple and high-contrast for best results
- QR Testing: Always test generated QR codes before sharing
Contributions are welcome! Please feel free to submit a Pull Request.
Created with ❤️ by Kace
Gen QR - Making custom QR codes simple and beautiful.