Universal links vs deep links
The terms get used interchangeably and mean different things. Picking the wrong one produces a link that works on your phone and fails on your users'.
6 August 2026 by PAD team
The four things people mean
| Name | Looks like | Works when app is missing |
|---|---|---|
| Custom scheme | myapp://item/42 | no, nothing happens |
| Universal link (iOS) | https://you.com/item/42 | yes, opens the web page |
| App Link (Android) | https://you.com/item/42 | yes, opens the web page |
| Deferred deep link | any of the above plus a tracker | yes, opens store then app |
Custom schemes
The oldest mechanism and the least safe. Any app can claim any scheme, so two apps registering myapp:// is a genuine conflict resolved arbitrarily. Nothing happens when the app is missing, and there is no fallback.
They remain useful as an internal routing mechanism and as a second attempt behind a universal link, but they should not be the address you publish.
Universal links and App Links
Both are ordinary https URLs that the operating system may hand to your app instead of the browser. They need a file on your domain proving the app is allowed to claim them, which is apple-app-site-association on iOS and assetlinks.json on Android.
The advantage is the fallback: if the app is missing, the same URL is a web page. The cost is setup, and the failure mode is silent.
Deferred deep linking
This is what people usually want when they say deep link: a tap that opens the app if it is installed, and otherwise sends the visitor to the store, installs the app, and then opens the right screen on first launch. That last step requires an SDK, because something has to match the install to the original click.
AppsFlyer, Branch and Adjust all do this, and it is the one part of the job you cannot replicate with a plain URL.
What to pick
- Sharing content from inside your app: universal link or App Link
- Marketing traffic where most people do not have the app: store link with routing
- You need the exact screen after install: deferred deep linking with an SDK
- Internal navigation inside your own app: custom scheme is fine
None of this survives an in-app browser on its own, which is the part most comparison articles leave out. Whichever mechanism you choose, the tap still has to get out of Instagram's WebView first.
For the marketing case, one link that routes to the app, the store or your site, and survives in-app browsers.