If you've ever shipped an iOS or Android app, you've stared at a deep link that should work but doesn't, wondering whether the bug is in your code, your Info.plist, your association file, the OS, or the messenger app you used to send the link to your test device. This site is the tool I wished I had during those debugging sessions.

Why this exists

Testing a deep link should be a 10-second job. In practice, it usually goes like this: open notes app on your laptop, paste the URL, AirDrop to phone (which strips the scheme), give up, email it to yourself, find that Gmail's link sanitizer wrapped it in a redirect, paste it into Slack DM-to-self instead, find that Slack's preview fetcher just opened the URL in a sandbox and silently consumed it. And so on. By the time the link actually reaches a real UIApplication.openURL on your device, you're not sure if your app handled it correctly or if you just got lucky.

The shortest reliable path from a desktop URL to a mobile device that doesn't go through any link-mangling middleware is a QR code. So that's what this site does. Paste the URL, scan with the phone's camera app, the OS opens the link directly, and you find out whether your scheme registration or your apple-app-site-association file is doing what you think it's doing.

What the tool does

  • Generates a clickable link from anything that looks like a URL: custom URI schemes, universal links, app links, mailto:, tel:, sms:, intent://, whatever your app registers.
  • Renders a QR code entirely in your browser, so you can scan from a real device without the link ever leaving your machine.
  • Inspects the URL and shows the parsed scheme, host, path, query parameters and fragment so you can sanity-check what you actually typed (especially helpful for URL-encoded payloads).
  • Detects the link type as you type (custom scheme vs HTTPS universal/app link) so it's obvious when you've grabbed the wrong format.
  • Keeps a local history of links you've recently tested, in your browser only. No accounts. No sync. Clearing your browser data clears your history.

What it deliberately doesn't do

There are plenty of things adjacent to deep linking that this tool intentionally stays out of:

  • It doesn't validate your apple-app-site-association or assetlinks.json files. Branch's AASA validator and Google's Statement List Generator already do this well; links are on the home page.
  • It doesn't host your association files. That's your domain's job.
  • It doesn't track which links you test, or who tested them. The link you paste never leaves your browser tab.
  • It doesn't require an account, an API key, or a cookie banner of its own. AdSense will manage its own consent prompt where required by regional law; everything else is opt-out.
  • It doesn't try to be a deep-linking platform. If you need attribution, deferred deep linking, install referrers, or campaign tracking, you want Branch, Adjust, AppsFlyer, or Firebase Dynamic Links. Not a single-page tool.

Who built it

Built and maintained by Belchior, an independent mobile engineer based in Portugal, with a long history of swearing at deep links, both as the developer registering them and as the user trying to test them on someone else's app. The choice to keep this tool simple, free, and free of accounts is deliberate: when you're three espressos deep into a Friday-afternoon production bug, the last thing you want is a signup wall between you and a working QR code.

If something about the tool is broken, slow, or could be obviously better, there's a contact page with a form. Real feedback from real developers is the only reason this thing improves.

Tech under the hood

For the curious: this is a static site with no backend. The QR codes are generated client-side using the open-source qrcode library. URL parsing uses the browser's native URL constructor. Recent-link history is stored in localStorage and never leaves your browser. Fonts are served by Google Fonts, the script library by jsDelivr, and the ads (where shown) by Google AdSense. Full disclosure of every third party is on the privacy page.


Last updated · May 2026