Skip to main content

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 app

Everything runs in your browser. Nothing you enter is sent to a server.

The host that serves your links, without https://.

One per line: your 10 character App ID prefix (usually your Team ID), a dot, then the bundle ID. Find both in Xcode under Signing & Capabilities.

One per line. Start a line with ! to keep that path in the browser. * matches any characters and ? one character. Exclusions are written first, because the first match wins.

Adds one entry per app with a single appID and a paths list, which iOS 12 and earlier read. Leave it off unless you support iOS 12.

Lists the same App IDs under webcredentials.

One per line. Adds an appclips section.

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

FieldWhat it means
DomainThe 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 IDsTEAMID.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 rulesOne 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 listAdds 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.
webcredentialsLists 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 IDsThe App ID of each App Clip, for example ABCDE12345.com.acme.app.Clip. They go in an appclips section.

Common mistakes

MistakeWhat happens and the fix
A redirect in front of the fileA 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 typeThe file name has no extension. Return Content-Type application/json so clients read it as JSON.
A lowercase or short App ID prefixAn 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 targetiOS 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 exclusionA first rule of /* matches everything, so an exclusion below it never applies. The generator writes exclusions first.
The host is missing from Associated DomainsThe 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.

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.

Start buildingFree to start. No sales call.