Back to Blog

Deep Links: Open Short Links in Native Apps

A mobile user who lands in Safari instead of the YouTube app is a user who won't subscribe, comment, or watch to the end. Deep links fix that, here's how Flyn implements them, what works on iOS vs Android, and how to enable them in a single toggle.

Karan Bhakuni
Karan Bhakuni
Founder, Flyn
GuideApr 1, 202613 min readUpdated Oct 18, 2026
Deep Links: Open Short Links in Native Apps

Supported Platforms (and How Each One Routes)

Flyn ships with first-class deep-link routing for 18 platforms: every app in the table below, plus App Store links on iOS and Google Play links on Android, which open the store app. Each one has its own URI scheme handling, fallback behavior, and platform quirks, but you don't need to know any of them.

The full list

PlatformiOS URI schemeAndroid handlingSibling shortener
YouTubeyoutube://com.google.android.youtube intentYouTube
Instagraminstagram://com.instagram.android intentInstagram
TikToksnssdk1233:// + universal linkcom.zhiliaoapp.musically intentTikTok
Twitter / Xtwitter://com.twitter.android intentTwitter/X
Spotifyspotify://com.spotify.music intentSpotify
LinkedInlinkedin://com.linkedin.android intentLinkedIn
Facebookfb://com.facebook.katana intentFacebook
Redditreddit://com.reddit.frontpage intentReddit
Pinterestpinterest://com.pinterest intentPinterest
WhatsAppwhatsapp://com.whatsapp intentWhatsApp
Telegramtg://org.telegram.messenger intentTelegram
Discorddiscord://com.discord intentDiscord
Twitchtwitch://tv.twitch.android.app intentTwitch
Amazonamzn://com.amazon.mShop.android.shopping intentAmazon
GitHubuniversal linkcom.github.android intentGitHub
Snapchatsnapchat://com.snapchat.android intentSnapchat

Need a platform that isn't listed? Email the team, most new platforms ship within a release cycle. The same redirect engine that powers the listed platforms is fully data-driven, so adding a new one is a config change, not a code release.

Platform-shortener pairing

Every Flyn short link can deep-link, but the experience is sharpest when you combine deep linking with a platform-specific shortener. The Spotify shortener, for instance, pre-validates that your destination is a real Spotify URL before creating the link, so the deep-link redirect never fails silently. Same for the YouTube shortener and the Instagram shortener.

iOS vs Android: The Differences That Actually Matter

From a Flyn user's perspective, deep linking is one toggle. From the implementation side, iOS and Android behave differently in ways that occasionally surface to the user. Understanding the differences helps you debug edge cases.

The behavior matrix

ScenarioiOSAndroid
App installedOpens the app via its URI schemeOpens app via intent URL (silent)
App not installed (URI scheme attempt)Shows "Cannot open page" error briefly, then falls backFalls back silently via browser_fallback_url
App not installed (universal link)Opens web URL in Safari directlyN/A, Android uses intent URLs
In-app browser (Instagram, Facebook, Messenger, TikTok, Snapchat, LINE, LinkedIn)An escape page with a button to open the app; if the visitor is still there about 2 seconds later, it adds that app's menu step out to the system browser and a website linkThe standard Android page: it tries the app, then the web URL after about 2 seconds
Private/incognito modeUniversal links still work; URI schemes workIntent URLs still work
Search engine crawlerPlain 302 to web URLPlain 302 to web URL

The in-app browser problem

The single most common deep-link complaint is: "I tapped the link inside Instagram and it didn't open the YouTube app, it opened YouTube in Instagram's in-app browser." This isn't a Flyn bug; it's Instagram's in-app browser intercepting the link. On iPhone, social in-app browsers, Meta's in particular, also block the automatic app handoff that works in Safari, so a page that tries to open the app on its own can fail without a word.

The mitigation: on iPhone, Flyn detects the Instagram, Facebook, Messenger, TikTok, Snapchat, LINE and LinkedIn in-app browsers by User-Agent and serves an escape page instead of the automatic handoff. The page names the app (for example, "Open in YouTube") and shows one button that opens it, because a real tap has the best chance of reaching the app; an App Store link is also tried once on its own. If the visitor is still on the page about 2 seconds later, it adds that in-app browser's menu step out to the system browser (inside Instagram: the three dots at the top right, then "Open in external browser") and an "Open the website instead" link. On Android, in-app browsers get the same page as any Android browser, which tries the app's intent URL and moves to the web URL after about 2 seconds. Once the link is open in the system browser, the standard deep-link page runs.

iPad and tablet handling

Deep links sort a request by the user agent the browser sends, not by the shape of the device. The deep-link step serves its native-app page only to a request whose user agent names an iPhone, iPad, iPod or Android device, and it reads a Mac-like user agent as desktop. Safari on iPad usually presents a Mac-like user agent, because it asks for the desktop version of websites by default, and Android tablets set to request desktop sites can send a desktop user agent too. On a link with a Mac URL, Flyn first checks whether a Safari visitor is on a Mac or an iPad, with a blank device check page, and then routes the click. Why Safari on iPad reports itself as a Mac, and how to test it, is in iPad Safari says it is a Mac.

The 2-second fallback timer

Flyn's redirect page tries the app as soon as it loads and starts a 2-second JavaScript timer. If the app opens, the page loses focus and the timer does nothing. If the page is still in front when the timer fires, it redirects to the web URL, and if the page has not moved to the web URL by 3 seconds, an "Open in browser instead" link appears. Two seconds is meant to give the OS time to launch the app while keeping the wait short for a visitor without it. To route the same link by country as well as device, see our guide to geo-targeting links by country.

How It Works Under the Hood

When a request hits a deep-linked Flyn short link, the redirect server runs a five-step decision tree. Understanding it makes debugging trivial.

Step 1: User-Agent classification

The server parses the User-Agent header and classifies the request as iOS, Android, or desktop, and separately flags in-app browsers (Instagram, Facebook, Messenger, TikTok, Snapchat, LINE and LinkedIn) and crawlers (Twitterbot, facebookexternalhit, LinkedInBot, Googlebot, etc.).

Step 2: Crawler short-circuit

If the request is from a crawler, the server returns a plain 302 Found to the destination URL. This ensures social link previews, Open Graph tags, and SEO crawlers see the canonical destination, exactly the same content they'd see for a non-deep-linked short link. Verify with the Open Graph checker if you're paranoid.

Step 3: Desktop short-circuit

Desktop browsers skip the native-app step and usually get a plain 302 to the web URL. There's no native app to route to on macOS or Windows, opening the link in Chrome or Safari is the right behavior. If the link also has a Windows or Mac URL on the Routing tab, desktop visitors on that system are sent there instead, because device rules run before the deep-link step. On a link with a Mac URL, Safari on a Mac or an iPad first gets a blank device check page, then continues (with JavaScript off it continues as a Mac), while Chrome, Edge and Firefox on a Mac go straight to the Mac URL.

Step 4: Mobile routing

For mobile visitors, apart from the iPhone in-app browser taps in Step 5, the server returns a lightweight HTML page with inline CSS and JavaScript. The page:

  • Sends the browser to the app as soon as it loads: the URI scheme on iPhone (for a YouTube video, vnd.youtube://) or the intent:// URL on Android
  • Starts a 2-second setTimeout that redirects to the web URL if the page is still in front
  • Shows an "Open in browser instead" link after 3 seconds if the page has not moved to the web URL by then
  • Shows an "Opening in app..." spinner so users who do see the page briefly understand what's happening

Step 5: In-app browser escape page on iPhone

If the request comes from an iPhone and the User-Agent matches the Instagram, Facebook, Messenger, TikTok, Snapchat, LINE or LinkedIn in-app browser, the server skips the automatic handoff, which those browsers block, and returns an escape page: a button named for the app, such as "Open in YouTube", then, if the visitor is still there about 2 seconds later, that in-app browser's menu step out to the system browser and an "Open the website instead" link. Android in-app browsers get the Step 4 page.

The best deep-link implementation is the one users never notice. If your subscriber taps a link in Slack and the YouTube app opens to your video, that's the goal. No "did this work?" moment, no fallback page, no spinner. Just the native app, ready to play.

Compatibility with Other Flyn Features

Deep linking composes with everything else Flyn does. The redirect engine evaluates features in a deterministic order, so there's no surprise interaction.

The evaluation order

  1. Expiration check, if expires_at has passed, the user sees the "link expired" page (a crawler gets a 410 Gone); otherwise, continue
  2. Click limit, once a link has reached its cap, later clicks go to its fallback URL, or to a "no longer available" page if it has none
  3. Password gate, if a password is set, the user sees the prompt; after the right password Flyn sends them to the main destination, so device and country rules, the A/B split and deep linking do not run on a password-protected link
  4. Crawler check, known crawlers skip the routing, A/B and deep-link steps below and are not counted as clicks (see click fraud prevention)
  5. Device rules, an iOS, Android, Windows or Mac URL set on the Routing tab is picked first
  6. Country rules, checked only when no device rule matched
  7. A/B testing splits, applied only when no device or country rule matched, picking one of the link's destinations by weight
  8. Deep link routing, the destination chosen above feeds into the deep-link logic described above

Analytics behavior

Every click on a deep-linked short link is recorded in Flyn analytics with the same fidelity as any other click: geo, device, OS, browser, referrer, UTM. On Pro, the operating system and referrer breakdowns show which clicks came from iOS or Android and which sites referred them, a signal of where the link is being shared. Flyn records the click when it serves the page, and your analytics do not show whether the app opened.

Custom OG previews still work

Because crawlers get a plain redirect, your destination URL's Open Graph tags (title, description, image) are what social platforms render in preview cards. The deep-link redirect is invisible to them. If you want to validate that your previews look right, run the destination URL through the Open Graph checker. It tests the exact response Facebook, Twitter, and LinkedIn see.

Watch out

Don't combine deep linking with link cloaking on the same short link, the cloaker frames the destination in an iframe, which prevents URI schemes and universal links from firing. Deep linking is for native-app routing; cloaking is for white-labeling display. They're mutually exclusive. If you need both, use two short links pointing at the same destination.

What is deep linking?

Deep linking is sending someone to a specific place inside an app instead of to a website or the app's home screen. A normal link opens a browser. A deep link opens the YouTube app on the exact video, the Instagram app on the right profile, or your own app on the screen the user expected. The "deep" part means it reaches a precise destination, not just the front door.

The three flavors

  • URI scheme links such as instagram://user?username=flynlinks: the oldest method, fast but they fail silently when the app is not installed.
  • Universal Links (iOS) and App Links (Android): standard https:// URLs the operating system routes into the app when it is installed, and to the web when it is not. The modern default.
  • Deferred deep linking: the intended destination survives an app install, so a brand-new user still lands on the right screen after downloading.

You do not have to hand-write any of this. Build one with the deep link generator, confirm exactly where it lands with the deep link tester, and see the routing details in the deep links docs.

Frequently Asked Questions

What happens if the user does not have the native app installed?
Flyn's deep-link redirect tries the native app's URI scheme first, then falls back to the web URL after about 2 seconds if the app did not open. On Android, the intent URL also carries a browser_fallback_url, with the same 2-second timer behind it; on iOS, the timer fires the fallback. The visitor ends up on the mobile web version of the destination, the same page they would have seen without deep linking. Inside a social app on iPhone, the escape page described above runs instead.
Do Deep Links affect my click analytics?
No. Every click on a deep-linked short link is recorded with the same data Flyn captures for any other click: country, city, device, OS, browser and referrer. You see the same dashboard. Flyn records the click when it serves the page, so analytics show where the click came from, not whether the app opened.
Do Deep Links work on desktop browsers?
No, by design. Desktop browsers skip the native-app step, there's no native app to route to on macOS, Windows, or Linux, and they usually receive a standard 302 redirect to the destination web URL, or to the Windows or Mac URL when the link has one. On a link with a Mac URL, Safari on a Mac or iPad first gets a blank device check page, then continues. Search engine crawlers (Googlebot, Bingbot) and social media crawlers (Twitterbot, facebookexternalhit, LinkedInBot) also skip the native-app step, so SEO and link previews are unaffected.
Can I use Deep Links with A/B testing or password protection?
With A/B testing, yes, and Flyn evaluates features in a fixed order. Device rules run first, then country rules, and the traffic split only runs when no routing rule matched, so whichever destination that step resolves is the one fed into the deep-link logic. Password protection works differently: the visitor sees the password prompt, and after the right password Flyn sends them to the main destination, so device and country rules, the A/B split and the native-app step do not run on a password-protected link. Expiration and the click limit are checked before the password, routing and deep-link steps. The one combination to avoid is deep linking with link cloaking, cloaking frames the destination in an iframe, which blocks URI schemes from firing.
Which platforms support Flyn Deep Links?
YouTube, Instagram, TikTok, Twitter/X, Spotify, LinkedIn, Facebook, Reddit, Pinterest, WhatsApp, Telegram, Discord, Twitch, Amazon, GitHub, and Snapchat, plus App Store and Google Play links, 18 at time of writing. Each pairs naturally with its dedicated platform shortener (YouTube, Spotify, TikTok, Instagram) for pre-validated destination handling. New platforms ship regularly based on user feedback, email the team if you need a specific one.
Do social media link previews still render correctly with Deep Links?
Yes. Flyn's redirect server detects social crawlers (Twitterbot, facebookexternalhit, LinkedInBot, Slackbot, Discord, etc.) by User-Agent and serves them a plain 302 redirect to the destination web URL. The crawler reads the destination's Open Graph and Twitter Card meta tags and renders the preview just as it would for a non-deep-linked URL. You can verify previews with the Open Graph checker or the redirect checker before publishing.
Why does my deep link sometimes open in the Instagram in-app browser instead of the YouTube app?
Instagram, Facebook, LinkedIn, TikTok, and several other social apps open outbound links in their own in-app browser, so the tap does not reach the operating system's app routing. On iPhone, those in-app browsers also block the automatic handoff Flyn uses in Safari. So when Flyn detects the Instagram, Facebook, Messenger, TikTok, Snapchat, LINE or LinkedIn in-app browser on an iPhone, it serves an escape page instead: an "Open in YouTube" button (or the matching app) and, if the visitor is still there about 2 seconds later, the menu step out to the system browser, which inside Instagram is the three dots at the top right, then "Open in external browser", plus an "Open the website instead" link. On Android, in-app browsers get the same page as any Android browser, which tries the app and then the web URL. Once the link opens in the system browser, the standard deep-link page runs.
How do I test what my deep-linked short link will actually do on different devices?
Tap it on real devices: an iPhone in Safari, an iPhone inside Instagram or another social app, an Android phone, and a desktop browser, once with the app installed and once without. The deep link tester checks something different: whether a domain's apple-app-site-association and assetlinks.json files are set up for iOS Universal Links and Android App Links, which matters for your own app's domain. For a deeper analytics view, the redirect checker traces the full redirect chain step by step.
What is deep linking?
Deep linking sends a user to a specific location inside an app rather than to a website or the app home screen. A deep link can open the YouTube app on an exact video, Instagram on a profile, or your own app on a particular screen. There are three kinds: URI scheme links (app://...), Universal Links on iOS and App Links on Android (standard https URLs the OS routes into the app), and deferred deep links that survive an app install so a new user still lands in the right place. Flyn can wrap any short link with deep-link routing so mobile users skip the browser.

Ready to try Flyn?

Free plan includes 25 links/month, full analytics, and access to all 30+ free tools above. No credit card required.

Already a member? Log in

Karan Bhakuni
Karan Bhakuni· Founder, Flyn

Karan Bhakuni is the founder of Flyn. He writes about branded links, click analytics, and the link-management tooling growth teams and creators actually need, drawn from building Flyn and reading a lot of user feedback.

Find these guides useful? Add Flyn as a preferred source so more of them show up in your Google results.