App links, deep links, and the mechanism that connects URLs to installed apps
Android checks whether any installed app has registered to handle this URL pattern. If the relevant app is installed and the link matches its registered domains, the app opens directly to the relevant content.
If no installed app handles this URL, Android routes it to the default browser. The link behaves as a standard web address.
If more than one installed app can handle the link pattern, Android may show a chooser asking which app to use, or use the previously set default choice.
For a URL to open an app rather than a browser, two things must be configured: the app must declare which URL patterns it can handle, and Android must verify that the app is genuinely associated with the domain it claims. This verification is the key difference between a basic custom URL scheme (which any app could claim) and a verified app link (where the website and app have established a mutual association).
The app's manifest declares which URL patterns it handles. This tells Android: "when a link matching this pattern is opened, I can handle it."
The website hosts a verification file that confirms the app is authorized to handle links to that domain. Android checks this file to verify the association is genuine.
A deep link is a URL that opens a specific location inside an app rather than just the app's home screen. Instead of launching the app to its starting page, a deep link can route the user directly to a specific section, page, or piece of content — as if the URL described a path to a specific location within the app rather than just its front door. The "deep" refers to navigating past the app's surface to content further inside it.
When a link is configured to open an app but that app is not installed, the link falls back to its web equivalent — the browser opens the URL as a standard web page. This fallback behavior is part of how app links are designed: the same URL serves as both the web address and the deep link destination. Users without the app see the web version; users with the app see the in-app experience.