Generate an AASA file
Enter your Team ID, bundle ID and the paths that should open your app. The apple-app-site-association file updates as you type, ready to copy or download.
Your file
Serve it over HTTPS with no redirect and a JSON content type.
apple-app-site-association
https://links.example.com/.well-known/apple-app-site-association (Serve over HTTPS with Content-Type application/json, no redirect and no file extension.)
{
"applinks": {
"details": [
{
"appIDs": [
"ABCDE12345.com.example.app"
],
"components": [
{
"/": "/*"
}
]
}
]
}
}Deploy it, then validate
Upload the file to the address above, then check what a client reads from your domain.
How it works
- Enter your domain and App IDs
- Each App ID is your App ID prefix (usually your Team ID), a dot and the bundle ID. Add one line per app that should open your links.
- Choose the paths
- Allow the paths that open your app and start a line with ! for the ones that stay in the browser. The default /* allows every path.
- Copy or download
- The file has no extension. Serve it at the .well-known address shown above it.
- Add the domain to your app
- In Xcode, add the Associated Domains capability and an applinks: entry for the same host.
- Deploy, then validate
- Run the AASA validator on your domain to confirm iOS can read it.
Reference
What each field means
| Field | What it means |
|---|---|
| Domain | The host that serves your links, such as links.acme.dev. It sets the address above the file and is not written into the JSON. Use the host from your applinks: entry. |
| App IDs | TEAMID.bundle.id, one per line. The App ID prefix is 10 uppercase letters and digits, usually your Team ID from your Apple Developer membership page. The bundle ID is the identifier of your Xcode target. See the guide to finding your app identifiers. |
| Path rules | One URL path pattern per line. * matches any characters and ? matches one. A leading ! excludes the path. Exclusions are written first, because iOS uses the first rule that matches. |
| Legacy paths list | Adds an empty apps list and one entry per app with a single appID and a paths array, which iOS 12 and earlier read. iOS 13 and later read components, so leave it off unless you support those versions. |
| webcredentials | Lists the same App IDs so the app can share saved passwords with your site. Turn it on when you use Password AutoFill for the domain. |
| App Clip IDs | The App ID of each App Clip, for example ABCDE12345.com.acme.app.Clip. They go in an appclips section. |
Common mistakes
| Mistake | What happens and the fix |
|---|---|
| A redirect in front of the file | A 301 or 302 from http, from the bare domain or to www means iOS ignores the file. Serve it with a 200 on the exact host. |
| A .json extension or the wrong content type | The file name has no extension. Return Content-Type application/json so clients read it as JSON. |
| A lowercase or short App ID prefix | An App ID prefix is exactly 10 uppercase letters and digits. The generator flags anything else before you copy it. |
| A bundle ID that does not match the target | iOS compares the App ID with your signed app. A typo in the bundle ID, or an App ID prefix from another account, leaves the links in Safari. |
| A broad rule before an exclusion | A first rule of /* matches everything, so an exclusion below it never applies. The generator writes exclusions first. |
| The host is missing from Associated Domains | The file is only read for hosts the app lists as applinks:links.acme.dev. A file on a host the app does not list has no effect. |
What goes in the apple-app-site-association file
The file tells iOS which app may open links to your domain. It lists App IDs, each made of your App ID prefix (usually your Team ID) and bundle ID, and path rules in components that say which URLs belong to the app. A rule with exclude set to true keeps a path in the browser.
Serve the file at /.well-known/apple-app-site-association on the exact host in your Associated Domains entry. It needs HTTPS, a 200 response, no redirect and no file extension. Apple reads it through its own CDN, so a change can take time to reach a fresh install.
This generator writes the components format that iOS 13 and later read. It can also add the legacy paths list, webcredentials for shared saved passwords, and App Clip IDs. The output is plain JSON with a fixed key order, so the same input always gives the same file.
Frequently asked questions
Where do I host the file?
At https://your-domain/.well-known/apple-app-site-association, on every host listed in your app's Associated Domains. Serve it directly with a 200 status and no redirect.
Does it need a .json extension?
No. The file name has no extension. Serve it with a JSON content type so clients read it as JSON.
Can one file list several apps?
Yes. Put one App ID per line and the generator lists them all in one appIDs array. Every listed app can open the paths you allow.
How do exclusions work?
Start a path rule with ! to keep it in the browser. iOS uses the first rule that matches, so the generator writes exclusions before the broader rules that allow the section.
Do I still need the legacy paths list?
Only for iOS 12 and earlier. iOS 13 and later read components. The toggle adds one entry per app in the older format after the components entry.
Why has my updated file not taken effect?
Apple's CDN caches the file, and devices cache what the CDN returns. Validate your server copy and the CDN copy, then reinstall the app on a test device to fetch the new rules.
Is anything I enter sent to a server?
No. The file is built in your browser as you type. The page address updates with your entries, so you can bookmark or share the result.
Related tools
- AASA validatorDoes iOS find and trust your file? We test the fetch, headers, JSON, App IDs and the Apple CDN copy.
- assetlinks.json generatorBuild the Digital Asset Links file for Android App Links from your package name and signing certificate fingerprints.
- React Native deep link generatorBuild the React Navigation linking config, iOS associated domains and Android intent filters for your domain.
We host this file for you
Register your app in WarpLink and we generate, serve and update your apple-app-site-association file. You never hand-edit JSON or redeploy a server to change a rule.