All posts
guide7 min read

How to See Who Clicks Your Bio Link

What bio link click tracking actually shows you — referrers, devices, geo — what it can't, and how to read the data without lying to yourself.

July 24, 2026

# How to See Who Clicks Your Bio Link

Short answer: you can't see *who*. Not names, not handles, not the specific person who tapped your link at 2am. Anyone selling you that is selling you something else.

What you *can* see is almost as useful: how many people clicked, which link they clicked, what device they were on, where the traffic came from, and — with the right setup — what country they clicked from. That's enough to make real decisions. Here's how to track bio link clicks properly, what the data means, and where it lies to you.

How click tracking actually works

When someone taps a link on your bio page, it doesn't go straight to the destination. It hits a tracking endpoint first — a redirect that takes a few milliseconds to log the event, then forwards the visitor on. They never notice.

In that few milliseconds, the server records:

  • -**Timestamp** — when the click happened
  • -**Link ID** — which of your links got hit
  • -**Referrer** — the page the visitor came from
  • -**User agent** — a string identifying browser, OS, and device type
  • -**IP-derived location** — country and city, if the tool does geo lookup

That's the whole trick. No cookies required for the basics, no pixel on the destination site, no consent banner theatrics for anonymous aggregate counts. One redirect, one row in a database.

Page views work the same way but simpler: a tiny request fires when your bio page loads, logging the same metadata minus the link ID. Views tell you reach. Clicks tell you interest. The ratio between them — click-through rate — tells you whether your page is doing its job.

What each signal actually tells you

Referrers. In theory, the URL of the page that sent the visitor. In practice, mostly broken for bio links — and you need to know why. Instagram, TikTok, and most in-app browsers strip or mangle the referrer. A click from your Instagram bio often shows up as "direct" or a vague `l.instagram.com`. This is the dark social problem: your biggest traffic source is frequently invisible in referrer data. When you see a big "direct" bucket, that's not people typing your URL by hand. That's apps hiding their tracks.

Device, browser, OS. Parsed from the user agent. For bio links, expect 80–95% mobile — your traffic comes from phone apps. If your mobile share is *lower* than that, interesting: you're getting desktop traffic from somewhere (a website embed, an email signature, a podcast show-notes page). Device data also tells you what to test. If 90% of clicks are iOS Safari, that's the browser your page has to be fast in. Not Chrome on your MacBook.

Geography. IP-based country and city lookup. Useful for three things: knowing when to post (your audience's timezone, not yours), deciding whether to bother with a second language, and catching bot traffic (a spike of 400 clicks from a country where you have zero followers is not a fanbase, it's a crawler). City-level data is approximate — IP geolocation resolves to the ISP's region, not someone's street. Treat cities as directional, countries as reliable.

Time-series. The shape of your clicks over time is more informative than the total. A post goes up, clicks spike within an hour, decay over 24–48 hours. If the spike doesn't come, the post didn't move people. If clicks arrive but the *wrong* link got them, your page order is fighting your content. On hasl.ink you can zoom from 30-minute windows out to all-time — the 30-minute view is what you watch right after posting. Most free tiers elsewhere give you a 7-day trailing number and call it analytics. Check pricing — full history is $6/mo here, and the free tier's 7-day window already beats a raw counter.

What you cannot get — and shouldn't want

  • -**Identity.** No tool tells you *which follower* clicked. IP addresses don't map to Instagram handles. Anonymous, aggregate, that's it.
  • -**Post-click behavior.** Bio link analytics ends at the redirect. Whether they bought, subscribed, or bounced happens on the destination site — that's the destination's analytics job (or UTM's, below).
  • -**Cross-app referrer truth.** As covered: in-app browsers lie. Accept the "direct" bucket as "probably the platform I just posted on" and move on.
  • -**Precision at small numbers.** 12 clicks is not a dataset. Don't restructure your page over a Tuesday.

On privacy: aggregate click counts are the boring end of tracking. No fingerprinting, no ad-network resale, no following people across the web. A user agent and a country lookup on a link *you* published is a different universe from third-party cookie surveillance. Pick tools that keep it that way.

UTM parameters: five minutes, permanent upgrade

Referrers are unreliable, so stop depending on them. UTM parameters are tags you append to URLs so the *destination's* analytics knows where traffic originated — they survive in-app browsers because they travel inside the URL itself.

The three that matter:

?utm_source=instagram&utm_medium=bio&utm_campaign=july_drop
  • -`utm_source` — the platform (instagram, tiktok, youtube)
  • -`utm_medium` — the placement (bio, story, video_description)
  • -`utm_campaign` — the specific push (july_drop, album_presave)

Use them in one direction: on the destination URLs inside your bio page. Your Shopify store, your Substack, your booking page — tag those links, and their analytics will correctly attribute the traffic to your bio instead of dumping it in "direct." Lowercase everything, stay consistent (`instagram`, not `IG` one week and `Insta` the next), and don't tag links between your own pages.

This is the two-layer setup that actually works: bio link analytics tells you *what happens on your page* (which links win, when, on what devices). UTMs tell the destination *where the visitor came from*. Neither replaces the other.

How to read the data without fooling yourself

1. CTR first, totals second. 1,000 views and 40 clicks is a 4% CTR — your page is leaking. 200 views and 60 clicks is a page doing its job with less reach. Fix the smaller problem. 2. Compare links against each other, not against zero. Your top link earning 70% of clicks is normal — position matters. The interesting question is why link #2 beats link #3. 3. Watch the 48 hours after a change. Reordered links? New page design? That's an experiment. Note the date, watch the CTR shift. Our AI design studio can regenerate your whole theme in a sentence — but the analytics tell you whether the new look converts or just looks good to you. 4. QR clicks are offline attribution. A tracked QR code on a flyer, a stage screen, or packaging shows up in your data like any other source. It's the only reliable way to measure print. (Free on hasl.ink, tracked like everything else.) 5. Segment by device before judging a link. A link that underperforms overall but wins on desktop might just be something people won't do on a phone — like filling in a long form.

The tool question

Any serious link-in-bio tool logs clicks. The differences are in depth and paywalls: how far back you can look, whether you get device and referrer breakdowns or just a number, and whether geographic data exists at all. Linktree's free tier is famously thin on analytics depth — the full picture sits behind their paid tiers, and their pricing climbs fast. We wrote up the direct comparison in hasl.ink vs Linktree if you're deciding.

hasl.ink's position: full analytics — per-link clicks, views, CTR, device/browser/OS, referrers, time-series — on every plan, with a 7-day window free and complete history at $6/mo. Setup takes about two minutes; the how-to-use guide covers it.

You'll never see *who* clicked. But you'll see everything a name would have told you anyway: what they wanted, where they came from, and whether your page gave it to them.


Related: hasl.ink vs Linktree · Features · Pricing · More guides

Related reads.