Check your assetlinks.json file for Android App Links
Paste your domain and this tool fetches your Digital Asset Links file the same way Android does: it checks that the file is reachable over HTTPS, served as valid JSON, structured as an array, and that every entry has a valid relation, package_name, and sha256_cert_fingerprints. Free, instant, no signup.
Check your Android Asset Links configuration
Results will appear here after validation
Enter a domain above to validate your assetlinks file
Smler hosts and serves your assetlinks.json and apple-app-site-association files for you, kept in sync with your package name and certificate fingerprints. One dashboard for App Links and Universal Links across Android and iOS — no manual JSON, no re-signing surprises.
Deferred deep linking, short links, and analytics come with the same setup — free up to 25,000 attributed installs a month.
Fetches https://yourdomain.com/.well-known/assetlinks.json directly and confirms it responds with HTTP 200, the way Android's Digital Asset Links API does.
Confirms the response is served as application/json. A wrong content type is a common failure on static hosts that guess MIME types from file extensions.
Parses the response body and flags syntax errors — trailing commas and mismatched brackets are the most common cause of a silently ignored assetlinks file.
Confirms the parsed JSON is an array of statements, not a single object — a very common mistake when hand-writing the file.
For every entry, checks a non-empty relation array, target.namespace equal to android_app, a target.package_name, and a non-empty target.sha256_cert_fingerprints array.
You get a plain-language message for the first failing check, so you know exactly what to fix instead of parsing a raw HTTP response yourself.
assetlinks.json implements Google's Digital Asset Links protocol, a JSON array hosted at your domain's well-known path that declares which Android apps are authorized to act on behalf of that domain. Android checks it to power:
Without a correctly hosted and verified assetlinks.json, Android falls back to showing users a disambiguation dialog (or opening the browser), which quietly kills conversion on referral, install, and re-engagement links.
/.well-known/assetlinks.json.[ ].application/json.package_name must equal your app's applicationId, and your intent filter needs android:autoVerify="true".The file isn't deployed at the exact well-known path, or something (auth middleware, a WAF rule, a catch-all redirect) is blocking the unauthenticated request. Confirm it's served straight from the web root with no login required.
Wrap your statement(s) in square brackets. {"relation": [...], "target": {...}} is invalid; it must be [{"relation": [...], "target": {...}}].
Each entry needs all of: a non-empty relation array containing delegate_permission/common.handle_all_urls, target.namespace set to exactly android_app, a target.package_name string, and a non-empty target.sha256_cert_fingerprints array. A missing field or a typo in android_app (case-sensitive) will fail this check.
This tool validates the file's shape, not whether the fingerprint matches your actual signing key. Double check you copied the fingerprint for the certificate your published APK/AAB is actually signed with — if you use Play App Signing, that's the app signing certificate in Play Console, not your local upload key.
It is a Digital Asset Links file hosted on your domain that proves you own both the website and the Android app, so Android will open your app directly for links to your domain (App Links) instead of a browser or a disambiguation dialog.
At https://yourdomain.com/.well-known/assetlinks.json, served over HTTPS with no redirect, as a JSON array (not an object) at the root of that path.
assetlinks.json must be a top-level array of statements, even if you only have one app. A single object ({...}) instead of an array ([{...}]) is valid JSON but not a valid Digital Asset Links file, and Android will ignore it.
For a release build, get it from Play Console under App integrity → App signing key certificate. For a local debug build, run keytool -list -v -keystore ~/.android/debug.keystore and copy the SHA256 value, formatted with colons between each byte pair.
Yes. If you distribute through Play App Signing, include both the upload certificate and the app signing certificate fingerprints as separate entries in sha256_cert_fingerprints, or verification will fail for builds signed with the key you omitted.
For App Links it must include "delegate_permission/common.handle_all_urls". Without this exact string in the relation array, Android will not treat the app as authorized to auto-verify links for the domain.
This validator confirms the file is reachable and structurally correct, which Android needs but does not guarantee immediate verification. Also check: your AndroidManifest intent filter has android:autoVerify="true", the package_name matches your applicationId exactly, and you have re-installed the app or run adb shell pm verify-app-links --re-verify after changing the file, since verification typically happens at install time.
No. Validation runs directly from your browser to your domain, requests are not logged or stored, and you do not need an account to use it.
assetlinks.json is Google's format for Android App Links; the apple-app-site-association (AASA) file is Apple's equivalent for iOS Universal Links. They live at different well-known paths with different schemas — you need both if you support iOS and Android.
Setting up deep linking for both platforms? Check these too: