Turn any QR code or web link into an installable home-screen app on iOS and Android without an app store, accounts, or backend services.
- Input: Scan a QR code via camera, upload an image from your photo library, or paste a URL directly.
- Customize: Set an app name, icon (auto-fetched favicon, letter monogram, searchable Iconify glyph, or custom image), theme color, and launch animation.
- Install: Add directly to your home screen in Safari (iOS) or Chrome (Android), share via the native Web Share API, or generate an on-screen QR code for other devices to scan.
When opened from the home screen, the shortcut launches standalone and redirects to the target destination.
Qrapp is static client-side HTML, CSS, and JavaScript. It uses zero server-side storage, databases, or analytics. Application state is encoded entirely within URL query parameters.
| Context | Mode | Behavior |
|---|---|---|
| Browser (no params) | Scanner & Studio | Camera scanning (BarcodeDetector with jsQR fallback), image import, URL entry, and icon customization. |
| Browser (with params) | Installer | In-memory data: URI Web App Manifest generation, dynamic apple-touch-icon meta tags, share sheet trigger, and QR code sharing. |
| Home screen (standalone) | Launcher | Detects standalone display mode and redirects to the destination URL with the configured transition. |
Parameter schema: js/appstate.js. Documentation: privacy.html, terms.html, support.html.
| Source | Recolorable | Details |
|---|---|---|
| Auto | No | Resolves domain favicons via public endpoints. |
| Letter | Yes | Monogram tile with configurable letter and background colors. |
| Icon | Yes | Vector glyphs searched and rendered from the Iconify API. |
| Upload | No | Local image resized client-side to 192×192 PNG to maintain compact URLs. |
Deploy the repository to any static hosting provider (GitHub Pages, Cloudflare Pages, Netlify, Vercel) with no build step required.
- iOS Cookie Isolation: iOS Safari runs standalone home-screen shortcuts in an isolated WebKit container separate from the main Safari session.
- Canvas Tainting: Favicons loaded cross-origin without CORS headers cannot be color-shifted via canvas pixel manipulation.
- URL Length: Custom uploads are resized to 192×192 PNG so full app state fits within mobile browser URL length limits.
MIT — see LICENSE.