Universal link generators, and what they leave out

Generating the file takes a minute. Everything that goes wrong afterwards happens in the parts a generator does not touch.

6 August 2026 by PAD team

What gets generated

A universal link generator produces the JSON that grants your app permission to open URLs on your domain:

{
  "applinks": {
    "details": [
      {
        "appIDs": ["ABCDE12345.com.example.app"],
        "components": [ { "/": "/app/*" } ]
      }
    ]
  }
}

That is the whole file. Writing it by hand takes about as long as finding a generator, and the fields you need are the team identifier, the bundle identifier and the path patterns you want to claim.

What breaks after generation

In practice the file is rarely the problem. The failures cluster elsewhere:

Verify with a request rather than a generator:

curl -sI https://yourdomain.com/.well-known/apple-app-site-association

HTTP/2 200                       ← not 301, not 302
content-type: application/json   ← not text/html

Apple's own validator

Apple runs a tool that fetches the file and reports whether it parses and is served correctly, which covers most of the list above. It does not check the entitlement inside your build, so a green result there still leaves one thing to verify on a device.

The part no generator covers

A universal link only helps people who already have the app. For everyone else the link is a web page, and if your web page is a store link opened inside Instagram, you are back to the in-app browser problem. Generators solve the first case and say nothing about the second, which is where most marketing traffic lives.

For visitors who do not have the app yet, our link gets them from an in-app browser to the store without a blank page.

Create a link

Related