AASA and assetlinks.json validator
Check the public files behind your universal links and app links. Review response and configuration issues, then test the complete journey on a real device.
Results for both files show up here. Using Linkrunner links? Your link domain already hosts both files, see how deep links are set up.
What each file needs
iOS and Android verify your domain the same way: a public JSON file, fetched directly, that names your app.
| Requirement | apple-app-site-association | assetlinks.json |
|---|---|---|
| Location | /.well-known/apple-app-site-association | /.well-known/assetlinks.json |
| Transport | HTTPS with a valid certificate, HTTP 200, no redirects | HTTPS with a valid certificate, HTTP 200, no redirects |
| Content type | application/json | application/json |
| Format | A JSON object with applinks.details, no file extension | A JSON array of statements |
| App identity | appIDs as TEAM_ID.BUNDLE_ID | package_name plus SHA-256 signing fingerprints |
| Which links open the app | components (iOS 13 and later) or paths | The handle_all_urls relation plus intent filters in your manifest |
| Size | Under 128 KB uncompressed | Keep it small; only list apps that use the domain |
Why links still open the browser
The usual causes, in the order we see them.
- 01
The file sits behind a redirect, for example from the apex domain to www, or from HTTP to HTTPS. Serve it directly on the exact host your links use.
- 02
A sign-in wall, bot protection or a CDN rule returns an HTML page instead of the file.
- 03
The Apple team ID prefix is missing or wrong. It is the 10-character ID from your Apple Developer account, not the app's numeric ID.
- 04
The Android fingerprint is from your debug or upload key. With Play App Signing, use the app signing key fingerprint from Play Console.
- 05
The file is valid but the app is not configured: Associated Domains on iOS (applinks:your.domain) or an autoVerify intent filter on Android.
Skip the file maintenance
Linkrunner hosts the apple-app-site-association and assetlinks.json files for your link domains, including branded subdomains. Save your verification objects once in the dashboard and universal links, app links and deferred deep links work on every campaign link, with installs attributed to the network that drove them. See how Linkrunner deep links work, or tag web campaigns with the UTM builder.
Frequently asked questions
Universal links, app links and the files that verify them.
Deep links that open the app, every time
Linkrunner hosts association files for your branded domains and connects deep-link journeys to install attribution. Configure your app and test routing before launch.
Pair the AASA validator with every Linkrunner solution for attribution, deep links, paid ads and benchmark reporting. See all solutions.