Free tool
Universal Link & App Link Validator
Check your apple-app-site-association and assetlinks.json the way Apple and Google read them — and see exactly what to fix.
Add a path to also check whether that exact link opens the app on iOS.
What it checks
Everything that silently breaks deep links.
Reachable over HTTPS
Both files return HTTP 200 on your domain, with a valid certificate.
No redirects
Apple and Android don't follow redirects for these files — a redirect to www or a login page breaks verification.
Right content type
application/json, not text/html. A 200 that's really your app's 404 page is caught too.
Valid JSON and structure
applinks.details on iOS; an array of android_app statements with handle_all_urls on Android.
App IDs and fingerprints
TEAMID.bundle.id format, package names, and SHA-256 fingerprints in the right format.
Your exact path
Paste a full link and we check its path against components and paths, including exclusions.
Apple's CDN copy
Devices read the file from Apple's CDN, not your server. We compare the two so you know what phones really see.
Google's verdict
We ask Google's Digital Asset Links API whether it can read your statements.
Still not opening the app?
My file is valid but links still open in Safari. Why?
Usually one of three things: the app's Associated Domains entitlement doesn't list applinks:yourdomain, Apple's CDN still has an old copy (it refreshes within about a day), or you're testing by typing the link into Safari — tap it from Notes or Messages instead. Long-pressing a link and choosing 'Open in Safari' also turns Universal Links off for that domain until you choose 'Open in app'.
Android opens the browser or a chooser instead of my app.
Android only skips the chooser when App Links verify. Check that the SHA-256 in assetlinks.json is from the key that signs the installed build — with Play App Signing that's the app signing key in Play Console, not your upload key — and that the intent filter has android:autoVerify="true". Run adb shell pm get-app-links your.package to see the state.
Where should the files live?
https://yourdomain/.well-known/apple-app-site-association (no .json extension) and https://yourdomain/.well-known/assetlinks.json, on every domain and subdomain you link to. Each subdomain needs its own files.
Do I have to host these files myself?
Not with CodeOnAir: every URL prefix — yourapp.codeonair.com or your own domain — serves both files for you, built from the app details you enter in the dashboard.
Your first AppLink in five minutes.
Create an app, pick a subdomain, and share a link that opens your app. Try Pro free for 30 days — no card needed.