QR Codes for App Downloads: How to Create One That Works on iOS and Android
A QR for downloading an app sounds trivial — point to the App Store and done. But there's a catch: if your app is on both iOS and Android, a single QR to the App Store fails on Android, and vice versa. This article covers the three real options: per-system QR, single QR to a landing that detects and redirects, or a single QR with a "smart link" service.
Quick answer
- If your app is iOS-only or Android-only: a static QR to the matching store URL. Done.
- If your app is on both: the simplest is a single QR to your own landing that detects the device and redirects to the right store.
- Professional alternative: a "smart link" service (Branch.io, Firebase Dynamic Links, OneLink) that detects the OS. Some free, some paid.
- Also works to put two QRs side by side labelled "iOS" and "Android" if you prefer simplicity.
- In every case, a static QR pointing to a stable URL is enough. No subscription needed.
The three ways to do it
Option 1: two separate QRs (simplest)
Print two QRs side by side:
- One points to your app in the App Store:
https://apps.apple.com/app/idYOURID. - Another points to your app in Google Play:
https://play.google.com/store/apps/details?id=your.package.name.
Label each with "iOS / iPhone" and "Android". The user picks the one that matches.
When to use it:
- Physical space isn't a problem (large sign, wide packaging).
- You don't have your own website to act as a landing.
- You want maximum simplicity without external services.
Limitation: takes more room and some people don't know which to pick.
Option 2: single QR to your own landing with device detection
Create a simple page on your website (yourdomain.com/app) with a script that detects whether the user comes from iOS or Android and redirects to the correct store.
Minimum JavaScript code (illustrative example):
const ua = navigator.userAgent;
if (/iPhone|iPad|iPod/.test(ua)) {
window.location.href = 'https://apps.apple.com/app/idYOURID';
} else if (/Android/.test(ua)) {
window.location.href = 'https://play.google.com/store/apps/details?id=your.package';
} else {
// Show both buttons for desktop or others
}
Generate the QR pointing to yourdomain.com/app. Single QR, redirects automatically.
Advantages:
- Single clean QR on signs/packaging.
- Zero dependency on external services.
- You control the landing and can change destinations without reprinting.
- Free forever if you already have a website.
Limitation: requires having (or creating) your own web page.
Option 3: smart link from a specialised service
Services like Branch.io, Firebase Dynamic Links, AppsFlyer OneLink, etc. create unique URLs that:
- Detect the OS and redirect to the right store.
- Sometimes offer "deferred deep linking" (remembering context between install and first app open).
- Provide detailed analytics.
Generate the QR with the smart link URL. Works like option 2 but without needing your own website.
When to use them:
- You're a company with an app and need advanced analytics.
- You want deferred deep linking (app installs and on open goes straight to a specific screen).
- You don't want to maintain your own landing.
Limitation: Firebase Dynamic Links was discontinued, so free options have shrunk. Branch has a free plan with limits; others are paid.
How to get the right URLs
App Store (iOS)
Go to your app's page on App Store (web) and copy the URL. Format:
https://apps.apple.com/us/app/app-name/id1234567890
The "us" can be another country code. To internationalise, you can drop it:
https://apps.apple.com/app/id1234567890
Apple redirects to the user's country's store.
Google Play (Android)
Go to your app's page on Play Store (web) and copy the URL. Format:
https://play.google.com/store/apps/details?id=com.yourcompany.yourapp
The id parameter is your app's unique package name.
Verify before generating the QR
Open each URL in your phone's browser (iOS for the App Store URL, Android for the Play Store one). It should open your app's listing directly. If not, check the URL.
How to create the QR step by step
For any option:
- Decide the strategy (two separate QRs, your own landing, or smart link).
- Prepare the final URL (the App Store one, your landing, or the smart link).
- Open a free client-side generator like QRcito.
- Select URL type and paste the link.
- Customise the colour if you want (keep contrast). Your app logo in the centre (max 20%).
- Generate and download as SVG (print) and PNG (digital).
- Print a test and try with iPhone and Android. Verify each platform ends up in its store.
Recommended sizes by surface
| Surface | Distance | Minimum QR size |
|---|---|---|
| Business card | 25 cm | 2 × 2 cm |
| Handheld leaflet | 30 cm | 3 × 3 cm |
| Event sign (1-2 m) | 1-2 m | 10-20 cm |
| Product packaging | 25 cm | 2 × 2 cm |
| Screen / TV | 3-5 m | Big, readable from the sofa |
| Vinyl in shop window | 2-3 m | 20-30 cm |
Cases where the QR shines for apps
Where conversion is highest:
- Trade show / event sign: QR to your app, on-site download, first demo at the table.
- Packaging of physical products with a companion app (smart home, fitness wearable, etc.).
- In-store screen with QR next to a product display.
- Email signature for the sales team.
- Physical ads (billboards, bus stops, taxis): QR to download the app.
- Offline onboarding: classes, workshops, training, where the QR speeds up installing the session's app.
Common mistakes
- QR to App Store on a sign where half the audience is Android: you lose half the downloads. Fix: two QRs or smart landing.
- Store URL in a fixed locale (e.g.,
apple.com/us/...): a user in France would have to switch stores. Drop the country code on App Store. - Heavy landing: if your landing takes 5 seconds to load, you lost the user. Make it lightweight (a script and a redirect).
- Smart link from a closing service: Firebase Dynamic Links was discontinued. If you depended on it, all your QRs broke. Better your own landing.
- Not testing both systems: the QR is one thing, the end-to-end flow is another. Real test with iPhone and Android before going to print.
- QR with an app removed from the store: the QR still works but leads to "not available". If you remove the app, regenerate or redirect.
Bottom line
A QR for downloading your app is trivial if you have one platform (direct URL to the store). If you have both, three options: two QRs together (simplest), your own landing with device detection (most recommended if you have web), or smart link service (most professional, sometimes paid).
In all cases, the QR is static pointing to a stable URL. No need to pay for a dynamic QR subscription — the final URL just needs to exist and work.
QRcito generates your app-download QR free, no signup, in SVG/PNG. Point to the store, your landing, or your smart link, and download.
FAQ
Can I have a single QR that detects iOS or Android? Yes, but the QR itself doesn't detect anything — it encodes a fixed URL. The detection is done by the URL: either you point to your own landing with a script, or you use a smart link from a service.
Which is better: own landing or smart link? Own landing if you already have a website: zero cost, zero dependency. Smart link if you need advanced analytics or deferred deep linking.
Does it work with TestFlight or beta apps? Yes, same as with published apps. The TestFlight URL is stable. If the beta ends, the URL stops working and you'll need to regenerate the QR pointing to the App Store final version.
Is there a download limit with the QR? No. The QR is just a pattern. Downloads depend on the app store, not the QR. You can print unlimited quantities and all work.
Can I see how many download via my QR? Without an external service, not directly. Your landing can have Google Analytics and count visits. For specific QR attribution (vs the "Download" button on your website), add a UTM parameter at the end of the QR's URL.