Raydar free tools · Link decoder

Decode a link with _branch_match_id in it

_branch_match_id shows up after a Branch deep link sends someone to a website. Paste the URL to see the match ID beside everything else the link carries.

Example: https://example.app.link/kJNbhZ1PrF?$fallback_url=https://www.website.com/&_branch_match_id=418480444086051524

What Branch adds, and when

Branch makes deep links, links meant to open a specific place inside an app, and a Branch link can carry a fallback URL that points to a website. When the link sends someone to that website, Branch appends _branch_match_id. Branch's own testing guide shows it as a long number: https://example.app.link/kJNbhZ1PrF?$fallback_url=https://www.website.com/&_branch_match_id=418480444086051524. The website's copy of Branch's web SDK reads it when branch.init() runs, which is how the page gets the data attached to the link that was clicked.

It points at a browser

Branch's Web SDK reference describes the matching value as "the current user's browser-fingerprint-id". So the number belongs to the browser that clicked, where a campaign tag like utm_source is identical for everyone. The same reference says the SDK keeps the browser-fingerprint-id in local storage, and returns null for it when tracking is disabled. It is the value to remove before you forward a Branch link.

Redirects are where it gets lost

Branch's reference says the manual branch_match_id option in init() is "only necessary if ?_branch_match_id is lost due to multiple redirects in your flow". The fix it describes is to carry the value through yourself and pass it back in when the SDK starts.

Google Ads' parallel tracking sends visitors straight to the final URL. Branch's help page on Google web campaigns says attribution is unaffected, because the match ID is still appended to the clicked link and the web SDK can still store it.

Stripping it, and checking a Branch link

The website loads the same without it. What breaks is Branch's match for that click, and Branch's attribution depends on that match ID reaching the SDK. To inspect a Branch link itself, Branch's docs say to add ?debug=1 to the end while signed in to the Branch dashboard, which opens its Link Debugger. To build app links of your own, try the deep link generator.

Questions

What is _branch_match_id in a URL?

It is a value Branch appends when a Branch link sends someone to a website, so Branch's web SDK on that site can match the visit to the click. Branch's Web SDK reference describes it as the current user's browser-fingerprint-id.

Is it safe to remove _branch_match_id?

For the visitor, yes, the website loads the same. For the site running Branch, removing it before the SDK reads it breaks the match for that click, and Branch's attribution depends on the match ID.

Why does _branch_match_id disappear from the URL?

Usually a chain of redirects. Branch's reference says its manual branch_match_id init option is only needed when the parameter is lost due to multiple redirects, and you pass the value back in yourself.

Related parameters: sfmc_id · tag · hsa_cam · fbclid

Give your bio link a brain.

Build your page, watch who converts, free to start.

Get started free

No card required.