Android

Syntax-check Android deep links before you waste a device

Paste https, custom-scheme, or intent:// URLs (one per line). We parse structure, flag raw spaces, and emit am start lines. We do not fetch assetlinks.json and we do not open the app.

Status URL Scheme / host Notes ADB
Run analysis to see results.
Enter deep link URLs (one per line).

When to use this — and when not to

Use it when marketing dumped a spreadsheet of campaign URLs and you want to catch broken hosts, raw spaces, and malformed intent:// fragments before a device session. Bulk paste and export are the point.

Do not treat a green row as “the app will open.” Verified App Links need assetlinks.json, the right android:autoVerify filter, and the matching applicationId. This page never talks to your host or your phone.

What we actually parse

Each line is classified as https, a custom scheme, or an intent:// fragment. We look for unencoded spaces, missing schemes, and an Intent;…;end shape. We emit adb shell am start -a android.intent.action.VIEW -d …. That ADB path skips Chrome’s intent parser — a URL can work in ADB and fail in Gmail.

Worked example

https://app.example.com/note/42
notes://note/42
intent://app.example.com/note/42#Intent;scheme=https;package=com.example.notes;end

All three can be “OK” here and still miss a debug install whose id is com.example.notes.debug. Next: Intent URL generator if you need a fallback, then a physical tap test.

Mistakes people make

  • Testing only am start and shipping a QR that opens Chrome.
  • Ignoring redirectors — the final URL after a short-link hop must match the intent filter.
  • Forgetting android:exported="true" on the activity that owns the filter (Android 12+).

Related

ADB & intents guide · Exported components after Android 12 · ADB command generator

Frequently asked questions

Why is https “OK” but the app does not open?

We only checked syntax. Host verification and the merged manifest decide routing.

Are URLs uploaded?

No. Parse and export stay in this tab.

Why warn about whitespace?

Raw spaces break parsers and CI logs. Percent-encode.