One link for the App Store and Google Play: how to make it, with a QR code
A poster, a bio or an email has room for one download link, but your app has two stores. Three ways to make one link that sends iPhones to the App Store and Android phones to Google Play, the catches with iPads and in-app browsers, and how to make a QR code that works.
· DL2App · 6 min read
Your app has two download links: one on the App Store and one on Google Play. A poster, an Instagram bio, an email footer or a QR code on a box has room for one. Put the App Store link there and Android users land on a page they can't use, and the other way round.
The fix is one link that looks at the phone and sends it to the right store. Here are three ways to make one, from free in a minute to fully featured, and the details that trip people up.
The short answer
- Free, no account, about a minute: our one link for both stores tool gives you an address and a QR code. It only knows the two stores: no stats and no custom address.
- Your own domain, in code: a few lines on a server you already run can check the device and redirect. It's yours, but you handle iPads, desktops and link previews yourself.
- A link service: a short link on your own domain that also opens the app if it's installed, counts every tap, and can change where it goes without reprinting.
Option 1: a free redirect
Paste your App Store link and your Google Play link into the free tool. You get one address and a QR code for print. iPhones go to the App Store, Android phones go to Google Play, and anything else gets a page with both store buttons and the QR code.
It's good for a quick flyer or a "download the app" button. It doesn't count taps, it's not on your domain, and it always goes to the store, even for people who already have the app.
Option 2: build it yourself
If you already run a website, the core logic is short. A minimal version in an Express server:
app.get("/app", (req, res) => {
const ua = req.get("user-agent") || "";
if (/iPhone|iPad|iPod/i.test(ua)) return res.redirect(302, "https://apps.apple.com/app/id1234567890");
if (/Android/i.test(ua)) return res.redirect(302, "https://play.google.com/store/apps/details?id=com.example.app");
res.send(downloadPage); // a page with both buttons and a QR code
});
The catches:
- iPads say they're Macs. Safari on iPadOS asks for desktop websites by default, so the server sees a Mac. Your fallback page should still offer the App Store, or a small script can check for a touch screen and send iPads on.
- Desktops need a page, not a redirect. Someone clicking from a laptop should see both store buttons and a QR code to scan with their phone.
- Link previews. When the link is pasted into WhatsApp, iMessage or Slack, their servers fetch it to build a preview. Redirecting them to a store gives the store's preview, which is usually fine, but serving your own title and image looks better.
- Use 302, not 301. Browsers remember a permanent redirect, so a later change of destination won't reach people who tapped before.
Option 3: a link service
A link service adds what the two options above can't do:
- Open the app if it's installed. A store page is a dead end for someone who already has your app. With Universal Links and App Links set up on the link's domain, the app opens instead.
- Land on the right screen after an install. The link can carry a page, a product or an invite code through the install, which is called deferred deep linking.
- Count taps by placement. One link per poster, email or campaign, each with its own numbers.
- Change destinations without reprinting. The QR code on 10,000 boxes keeps working when your store listing or landing page changes.
- Get out of in-app browsers. Links tapped inside Instagram or TikTok open in their own browser, which often can't open the App Store or your app. A good link service shows a page there that hands people over to the real browser. More on that.
Making a QR code that works
- Never put a store URL in the QR code. An App Store QR code sends Android users to a page they can't use. Encode your one link instead.
- Shorter links make simpler codes. A short address gives fewer, bigger squares, which scan from further away and print better on small labels.
- Leave a margin. The blank border around the code (the "quiet zone") is part of it. Cropping it is the most common reason a printed code won't scan.
- Dark on light, with contrast. Inverted or low-contrast colour schemes fail on some phone cameras.
- Test the printed version on an iPhone and an Android phone, at the size and distance people will actually scan it.
- Use one code per placement if you want to know which one works: the poster, the packaging and the receipt can each have their own link.
Knowing where installs came from
Both stores can tell you which link led to a download, if you tag the store links:
- App Store: campaign links add a provider token (
pt) and a campaign name (ct) to your App Store URL, and App Store Connect reports downloads by campaign. - Google Play: add a
referrerwithutm_sourceandutm_campaignto your Play URL, and Play Console reports installs by source.
Our campaign URL builder makes both.
Where DL2App fits
DL2App starts with exactly this link. Sign up, paste your App Store or Google Play link, and in about a minute you have a short link on your own address (and later your own domain) with a QR code. iPhones go to the App Store and Android phones to Google Play straight away. When you're ready, add your Apple Team ID and Android signing fingerprint, and the same link opens the app for people who already have it. Every tap is counted, each placement can have its own link, and the destination can change without reprinting the code. There's a free plan, and paid plans are flat monthly prices: see pricing.
Questions people ask
How do I make one link for the App Store and Google Play? Use a redirect that checks the device: iPhones and iPads go to the App Store, Android phones go to Google Play, and desktops get a page with both. You can use a free tool, a few lines on your own server, or a link service.
Can a QR code open the App Store on iPhone and Google Play on Android? Yes, if the code contains a link that redirects by device, rather than a store URL. Each phone then goes to its own store.
Why does my link open the App Store on an iPad as if it were a Mac? Safari on iPadOS asks for desktop websites by default, so the server sees a Mac. Show the App Store on your desktop fallback page, or check for a touch screen in a script.
Can one link open the app if it's already installed? Yes, if the link's domain is set up for Universal Links on iOS and App Links on Android, and your app lists that domain. Otherwise the link always goes to the store.
Can I track how many people downloaded from a QR code? You can count scans with a link service, and see downloads by campaign in App Store Connect and Play Console if you add campaign parameters to the store links.
Start with one link
The free plan has no time limit and needs no card. Create a project, add your app, and send yourself the link.