Deep Link Tester
Parse a custom-scheme or HTTPS App/Universal Link, generate a scannable QR code, and validate Android assetlinks.json and iOS apple-app-site-association files.
Fetches https://{domain}/.well-known/assetlinks.jsonfrom your browser. Most sites don't send permissive CORS headers for well-known files, so a fetch failure here is expected โ check the Network tab or validate server-side if it fails.
Fetches https://{domain}/.well-known/apple-app-site-associationfrom your browser. Most sites don't send permissive CORS headers for well-known files, so a fetch failure here is expected โ check the Network tab or validate server-side if it fails.
FAQ
What's the difference between a custom scheme link and an App/Universal Link?
A custom scheme (myapp://path) only works if the app is installed and only your app can register that scheme. An HTTPS App Link (Android) or Universal Link (iOS) uses a real https:// URL that opens your app if it's installed and falls back to the browser if not โ but requires hosting a verification file.
Why does the assetlinks.json / AASA check say it couldn't fetch?
Both files are fetched directly from your browser, which is subject to CORS. Most sites don't send permissive CORS headers on well-known files, so a blocked fetch is expected โ check your browser's Network tab, or verify server-side (curl) to confirm the file itself is correct.
Does the QR code get sent anywhere?
No โ the QR encoder runs entirely in your browser (a hand-rolled implementation, no third-party service or library), and the canvas never leaves your device except when you choose to download the PNG.
What do the assetlinks.json rules check?
That the file is a JSON array, each entry's relation includes delegate_permission/common.handle_all_urls, and target has namespace "android_app", a package_name string, and sha256_cert_fingerprints formatted as colon-separated hex pairs.