Mobile development

deep link builderBuild and inspect mobile URIs locally

Build a custom scheme or Android Intent URI, or inspect an existing intent link.

deep link builder

Input

Result

Enter a scheme or paste an Intent URI.

URI text stays in this browser. No app is opened and no URL is requested.

Options

Query parameters

Intent output is text only. Package, fallback and extras do not prove device behavior.

Enter a scheme or paste an Intent URI.

Use the deep link builder when a mobile route must carry a path and several parameters without letting a stray ampersand change their meaning. Start with a scheme URI, then choose Android Intent when package targeting or a browser fallback matters.

The deep link builder also reads an existing intent URI into query pairs, typed extras and untouched unknown fields. That review is useful before copying a link into a test plan; it cannot tell you which installed app will open. An intent URI parser can expose unknown fields before sharing.

Why use this deep link builder?

Separate the layers of a mobile link before sharing it.

Keep query and Intent extras distinct

A query pair belongs to the destination URI; an S, B, i or l extra belongs to the Android Intent fragment. The deep link builder encodes each value once and preserves repeated query keys.

A mobile URI splits into path and query branches, while typed extras remain in a separate Intent branch.

Inspect without opening the app

Paste an intent URI to see its known fields and any unknown fragments. Nothing is launched, fetched or silently rebuilt, so the original text remains available for review.

An Intent URI is separated into visible field cards; a device icon remains unactivated.

Three checks before you share a link

01

Choose the grammar

A custom scheme can omit a host. Android Intent requires one and adds its own #Intent field section. Switch type before entering package or fallback fields.

02

Separate two kinds of parameters

Query rows encode both key and value as UTF-8. Intent extras have an explicit type; l values use full 64-bit integer checking rather than a rounded JavaScript number.

03

Review the current result

Automatic updates wait 350 ms. With automatic mode off, press Ctrl/Cmd+Enter. Changing any field marks the previous result stale and disables Copy until a new result is valid.

Paths, parameters and intent fields

Ordered query pairs

Add the same key more than once when the receiving app expects repeated values. Empty values remain key=, and separators inside values are percent encoded.

Browser fallback and package

An optional package narrows the Android target. An optional HTTPS fallback is encoded into S.browser_fallback_url; this page never visits it.

Read-only Intent parsing

Inspect scheme, path, query, package, fallback and supported extras from an existing intent:// string. Unknown fields remain visible as raw text.

What this local check can and cannot establish

No device launch or availability claim
The generated text never opens an app. Chrome may require a user gesture and a BROWSABLE activity; a valid string cannot prove the target is installed.
Restricted Intent fields
Build mode offers S, B, i and l extras, but no freeform action, component, flags or selector. Parse mode shows unfamiliar fields without offering a lossy rewrite.
HTTPS fallback only
Fallback accepts an absolute HTTPS URL and stays text in this browser. Other schemes and embedded credentials are refused.
Copied links can expose data
Local processing does not protect query values or extras after you share the result. Avoid placing credentials in a link and test actual routing on the intended device.

Deep link builder questions

How do I create an Android deep link with query parameters?

Enter a scheme, host and path, then add one row per query pair. The builder encodes separators in each value and preserves row order; Android Intent adds the separate #Intent section.

Why does my custom scheme not open the app?

The app must register a matching intent filter or URL scheme, and browser policy may intervene. This builder checks text only; use a device to verify the installed app and its route.

How do I format an intent URI with a package name?

Choose Android Intent, enter a host and optional dotted package ID. The result places package= inside #Intent, while normal query pairs stay before it.

What happens when the app is not installed?

An HTTPS browser fallback can be included as S.browser_fallback_url. Chrome may use it when no app handles the intent, but behavior still depends on browser context and user action.

Can an intent URI open any activity?

No. Browser launched intents require an eligible BROWSABLE activity, and this page never launches one. It also avoids freeform component and action fields that could misrepresent routing.

Still stuck?

Build a deep link with a clear boundary

Return to the deep link builder to adjust a URI or inspect an intent before copying it.