Android App Links vs deep links: which one should you use?
“Deep link” and “App Link” sound interchangeable on Android. One silently fails and pops random app-chooser dialogs; the other doesn't. Here's the difference and when it matters.
On Android, a deep link usually means a custom-scheme link (myapp://) that any app can claim and that fails silently when the app is missing. An App Link is a verified https deep link — you host an assetlinks.json file proving your app owns the domain, so Android opens your app with no chooser and falls back to the web page when the app isn't installed. App Links are the upgrade; deep links are the old default.
On Android these two terms get used as if they're the same feature. They're not, and if you pick the wrong one your users get a random Open with… dialog or a link that does nothing. Here's what separates them.
Side by side
| Deep link (custom scheme) | App Link (verified https) | |
|---|---|---|
| Looks like | myapp://product/42 | https://myapp.com/product/42 |
| Ownership proof | None | assetlinks.json on your domain |
| Opens your app | Sometimes a chooser first | Directly, no prompt |
| App not installed | Error / nothing | Browser loads the page |
| Another app can hijack it | Yes | No |
| Setup effort | Minutes | A file + verification |
What a plain deep link actually does
A custom-scheme deep link registers myapp:// in the manifest. Tap it and Android looks for anyone claiming that scheme. If exactly your app claims it and it's installed, great. If two apps claim it, Android shows a chooser. If nobody claims it, you get an error. There's no built-in fallback and no ownership check — the scheme is a free-for-all.
What an App Link adds
An App Link is a real https URL your app has verified. You publish /.well-known/assetlinks.json listing your package name and app-signing fingerprint. Android fetches it, confirms your app is authorized for that domain, and from then on opens your app for those links automatically — no chooser, no Open with. Because it's https, a missing app just loads the web page. The verification is the point: nobody else can claim your domain's links.
The gotcha that breaks App Links quietly
App Links are wonderful when they verify and infuriating when they don’t. A wrong signing fingerprint, a redirect on the assetlinks.json path, the wrong content-type, or the file simply unreachable — any of these silently drops you back to the old behavior, and Android won’t shout about it. Test with the verification tooling; don’t assume.
Which to use
For anything a real user taps, App Links. Keep a custom scheme as an internal or debug convenience if you like, but don't rely on it in the wild. And if you're linking to an app you don't own, you can't set up its App Links at all — that's where a routing layer like directinapp does the per-platform open-or-fall-back logic for you, without an SDK.
Found this useful? Tell Google to show you more of it.
Add us as a preferred sourceRelated guides
Put this into practice
Create smart short links that open the right app, with analytics built in. No credit card required.
Start free