Published · August 10, 2026
QR Code for App Downloads: One Code for Both iOS and Android
A single printed QR code can't natively tell an iPhone from an Android phone — but the redirect link behind it can. Here's how one code routes both platforms to the right store, and how to build one.
Quick answer
Send everyone to one link, then let that link decide the destination: iPhones go to the App Store, Android phones go to Google Play, and desktop scanners land on a page with both. The code itself can't detect a device — it only holds one string of text. So the routing has to live on the URL it points to, not in the printed pattern. Both platforms scan QR codes natively these days (iOS since iOS 11, most Android phones out of the box) — see how iPhone and Android scan QR codes differently.
Why one code needs to be dynamic
What a QR code actually stores
A QR code is an encoded string, most often a URL, packed in using one of four modes — numeric, alphanumeric, byte, or Kanji. There's no room for conditional logic in the pattern itself. Maximum useful capacity tops out around 4,296 alphanumeric characters, and every one of those characters is fixed at print time — no "if iPhone, then X" branch available. That decision has to happen somewhere else.
Encoding a store link directly is where this falls apart. Apple's own documented workflow for an app-download QR code is to grab a short App Store link and paste it into a generator — fine for iPhone owners, dead end for every Android scanner. Reverse it with a Google Play link and iPhone users hit the same wall.
The fix: point the code at a redirect link, not a store link
The standard workaround is a dynamic QR code — one where the printed pattern encodes a short redirect URL you control, rather than the store link itself. The code stays fixed; the destination behind it doesn't.
How the redirect actually decides
Scan the code, and the phone opens the redirect URL with a request that includes a User-Agent header identifying the device. The redirect service reads that header and forwards iOS traffic to the App Store listing, Android traffic to the matching Google Play listing, via a standard 302 redirect. Desktop visitors can't install a phone app anyway, so they get a fallback landing page with both store badges — or a second QR code to re-scan on a phone.
The branching logic lives on the server behind the link, not in the code, so you can change where it points later. New bundle ID, renamed app, different store region — none of it requires reprinting anything. Just update the redirect rule.
Skipping the store for people who already have the app
If someone scanning your code already has the app installed, sending them through the store is an unnecessary detour. iOS Universal Links and Android App Links both let the same https:// URL open directly inside an installed app instead of a browser tab, using a verification file hosted on your domain plus a matching entitlement or manifest entry. If the app isn't installed, both fall back gracefully to the normal web page — no dead link, no error screen. See how to make a QR code that opens a specific app for the setup details.
Setting this up on QRDock
Point the code at your redirect or smart-link URL — never at a raw App Store or Play Store link directly. QRDock's QR generator handles the encoding for free, without ads or tracking, at qrdock.app. Before you publish it anywhere, test on an actual iPhone and an actual Android phone. A desktop preview won't catch a misconfigured redirect rule.
Frequently Asked Questions
Can a single QR code really send iPhone and Android users to different stores?
Yes, but the code itself doesn't decide that — a redirect URL behind it does. The QR code just encodes one link. That link points to a small piece of server logic that reads the visitor's device and forwards iPhone users to the App Store and Android users to Google Play.
Do I need to build this myself?
No. Most app-marketing platforms and link-shortener tools with app-redirect features offer this as a built-in option: paste your App Store and Play Store links, get back one URL and one QR code. You only need to build the routing yourself if you want it on your own domain.
What happens if someone scans the code on a laptop or a device that isn't a phone?
A well-built redirect falls back to a landing page showing both store badges, often alongside a QR code to re-scan on a phone, instead of guessing wrong. Test that fallback before printing the code anywhere.
Will the code still work if I change my app's store listing later?
Yes — that's the point of routing through a URL instead of encoding the store link directly. Update the redirect's destination and the printed QR code keeps working with no reprint needed.
Conclusion
The QR code itself never does the routing — it just holds one link, and that link's redirect logic decides where an iPhone, an Android phone, or a desktop browser ends up. Set that up once behind a dynamic QR code, test it on real devices from both platforms, and the printed code keeps working even as your store listings change. Once it's live, scan analytics can show you the actual iOS-vs-Android split — useful if you're deciding where to spend marketing effort next.