Deep Link Tester

Break any universal link or URL scheme into its parts and catch the mistakes that stop it from opening your app.

Developer Utilities100% freeNo sign-up required
Paste a link above to break it down.

When a deep link fails, the bug is almost always in the URL itself — a scheme with a typo, an unencoded space in a query value, or a path that doesn’t match what the app’s router expects. This tester parses any link you paste — an https:// universal link, a custom scheme like myapp://profile/42, or an Android App Link — and lays out the scheme, host, path segments, query parameters, and fragment so you can see exactly what the OS will hand to your app.

Alongside the breakdown, the tester flags common pitfalls: uppercase characters in the scheme, missing host separators, unencoded reserved characters, and query strings that will parse differently than you expect.

How to test a deep link

  1. 1

    Paste the full link — universal link, custom URL scheme, or intent URL — into the field above.

  2. 2

    Read the structured breakdown: scheme, host, path segments, and each query parameter decoded on its own line.

  3. 3

    Check the pitfall warnings for issues like double-encoded values, spaces, or a malformed scheme.

  4. 4

    Compare the parsed path and parameters against the routes your app actually registers — mismatched casing and trailing slashes are frequent culprits.

  5. 5

    Fix the link, re-paste, and confirm the breakdown matches what your routing code expects before shipping it in a campaign.

Universal links vs. custom URL schemes

Custom URL schemes (myapp://…) are the oldest deep-linking mechanism: simple to register, but unauthenticated — any app can claim the same scheme — and they fail with an error dialog when the app isn’t installed. Universal links use standard https:// URLs verified against your domain’s AASA file, fall back gracefully to the website, and are what Apple recommends for anything user-facing, including marketing campaigns and email.

On Android the equivalent split is between basic intent-filter deep links and verified App Links, which require an assetlinks.json file on your domain. The parsing rules are the same in all cases — scheme, authority, path, query, fragment — which is why a structural check catches most bugs regardless of platform.

The deep link mistakes that cost campaigns

The most expensive failures are the quiet ones. A query value containing a space or an ampersand that wasn’t percent-encoded will truncate every parameter after it — so a link that carries utm_campaign and a referral code delivers only half its payload, and your attribution data silently degrades. Fragments (#section) are another trap: some routing libraries never see them, and redirect chains through link shorteners can strip them entirely.

Scheme and host casing also bites: URL schemes are case-insensitive per RFC 3986 and are normalized to lowercase, but paths are case-sensitive — /Profile and /profile are different routes. Testing the exact string that will be published, rather than a hand-typed approximation, is the only reliable way to catch these before users do.

Frequently asked questions

What is the difference between a deep link and a universal link?

“Deep link” is the umbrella term for any link that opens a specific screen in an app. A universal link is Apple’s specific implementation: a normal https:// URL verified against your domain’s apple-app-site-association file, which opens the app when installed and the website when not.

Why does my deep link open the website instead of the app?

For universal links, the usual causes are an invalid AASA file, a path that doesn’t match the declared components patterns, or the user having previously chosen “Open in Safari” (which iOS remembers). Universal links also don’t trigger when typed directly into Safari’s address bar or opened from the same domain — test them from Notes, Messages, or Mail instead.

Do query parameters survive a deep link?

Yes — the full URL including the query string is handed to your app, but only if it is encoded correctly. Unencoded spaces, ampersands, or plus signs inside values will corrupt the parameter list. This tester decodes each parameter separately so you can verify the values your app will actually receive.

Can I test whether a link opens the app from this page?

This tool validates the link’s structure, which is where most bugs live. Actually launching the app requires a physical device or simulator — on iOS use `xcrun simctl openurl booted "yourlink"`, and on Android use `adb shell am start -a android.intent.action.VIEW -d "yourlink"`.

Are custom URL schemes still worth using?

They remain useful for app-to-app communication and internal flows, but for anything shared with users prefer universal links: schemes are unverified (any app can register yours), show an error when the app is missing, and many webviews and email clients block them outright.

Track every install your links drive

Appalize ties your App Store Connect analytics, keyword rankings, and Apple Ads data together, so you can see which links and campaigns actually convert into downloads.

See my install sources free

Related free tools