Docket / Learn / Internal UTM links

How common are internal links with UTM parameters?

Quick answer

A modest minority of sites do it. In a random sample of 40 Tranco hosts crawled on 15 September 2026, 6 of 40 (15.0%) emitted at least one link to their own site carrying UTM parameters. 34 of 40 emitted none at all.

The share is not the useful part. The shape is. The affected hosts split in two: some carried such links on a handful of pages, and some carried them on every page we looked at. We measured where the links are, not how they got there — but the two shapes point at different work. A handful of pages is consistent with links tagged one at a time; every page is consistent with something in a template, and a template would be one fix rather than many.

We did not measure any consequence. This counts what the HTML emits. What an analytics tool then does with it is documented behaviour, not something this survey observed — the mechanism is explained on the marketing tag audit.

Everyone asserts it. Nobody counted it.

Search for the SEO problem with UTM parameters on internal links and page one is unanimous: it overwrites the original source of the session, it multiplies URLs, stop doing it. Re-checked on 15 September 2026, every result on page one made the argument. Not one of them stated how often it happens. There was no vendor documentation on the page and no study of any size — no sample, no denominator, no rate. Nine pages agreeing on a mechanism is not evidence about a prevalence, and after a while an unmeasured claim starts to sound measured simply from repetition.

So the mechanism is not our finding and this page does not re-argue it. It is well documented, and the marketing tag audit already explains in a paragraph what a tagged internal link does to a session. What follows is the missing half: how often, and in what shape.

What we counted, exactly

On 15 September 2026, Docket crawled 40 hosts drawn with a recorded seed (20260915) from the Tranco top 10,000 — at most 25 pages each, with its own identified user-agent and its own backoff. Ordinary crawling at the scale a customer runs, not a special-purpose scrape.

A host counts as affected when any indexable page it served emitted a link to the same site whose URL carries a utm_ parameter. That definition is narrower in several places than the phrase "internal links with UTM parameters" suggests, and the differences are worth having in front of you before the numbers:

All 40 of 40 hosts crawled successfully. That is worth stating rather than assuming. In a survey where unreachable hosts drop out — a robots.txt survey, say — the denominator quietly thins and every share computed from it is a share of whoever answered. Here the denominator is the sample.

The number

6 of the 40 hosts (15.0%) emitted at least one internal link carrying UTM parameters. Across those hosts, 177 such links in total, with a median of 17.5 per affected host and a maximum of 91 on a single host.

40 hosts is a small sample and we are not going to dress it up as more. It supports "this is a real minority practice, not a myth and not a majority"; it does not support a confident rate to the decimal place, and it says nothing about sites outside the top of the Tranco list. Every share on this page is quoted with its denominator for that reason.

The distribution, which is the actual finding

Read the page-count column with its ceiling in mind. We crawled at most 25 pages per host, so the number of affected pages cannot exceed 25. A host showing 25 means every page we looked at carried such a link — not that the site has 25 pages. For those hosts the count is a lower bound and the share of the site affected is unmeasured. 2 of the affected hosts sit at that ceiling.

Host (withheld)Pages carrying such a link, of up to 25 crawled What that shape is consistent with
Host A1Isolated. Consistent with links tagged one at a time, by hand.
Host B1Isolated. Consistent with links tagged one at a time, by hand.
Host C4Isolated. Consistent with links tagged one at a time, by hand.
Host D24Nearly every page we crawled. Consistent with a template.
Host E25 (at the crawl limit)Every page we crawled. A lower bound — the true figure is however many pages the site has.
Host F25 (at the crawl limit)Every page we crawled. A lower bound — the true figure is however many pages the site has.

The affected hosts do not sit on a smooth curve from "a bit" to "a lot". They sit at the two ends: 3 hosts had it on four pages or fewer, and the rest had it on nearly or exactly every page crawled, with nothing in between. Say that carefully, though. 6 hosts is far too few to establish the shape of a distribution — a split this clean in a group this small could be chance, and we are not going to call it bimodal on this evidence. What it does do is show you the two cases exist, and they are worth telling apart when you look at your own site.

Those two clusters are different problems that happen to trip the same check:

A per-page count without this split is close to useless, which may be why nobody publishes one. A tool that reports "91 internal links carrying UTM parameters" and stops has told you the size of the number and nothing about the size of the job.

A tagged internal link is not automatically a mistake

Some teams tag their own links deliberately. If you want to know how many people clicked the specific banner in the middle of your homepage, tagging that link is one way to find out, and a team that does it knowingly has accepted the cost in exchange for the measurement. That is a decision, not an error.

Nothing in this survey can tell those apart. The check reports the links; it does not read intent, and neither do we. When you look at your own results you are the only person who knows which of your tagged links were chosen and which were pasted. What the numbers here support is narrow and worth stating plainly: this happens on a minority of sites, and where it happens it is usually either a few links or all of them.

How to find them on your own site

You do not need a tool for the first pass. Look at the rendered HTML of a page and search it for utm_ appearing inside an href that points at your own domain. In a browser, view source and search for utm_; from a terminal, fetch the page and grep for anchors:

curl -s https://example.com/ | grep -o 'href="[^"]*utm_[^"]*"'

Two things to keep straight while you read the output. A tagged link pointing somewhere else is not this problem — tagging outbound links to a partner or to your own campaign landing pages on another domain is what UTMs are for. And check the header, footer and any repeated card component first, because that is where the whole-site pattern lives; if you find it there, you have found every page at once.

Whether a parameterised URL is then treated as a duplicate of the clean one is a canonical question, and not one this survey measured — that is canonical tags, and when the signals disagree, fixing conflicting canonicals. Docket runs the internal-UTM check as part of its tracking lane, alongside the rest of the conversion checks; the full catalogue is what Docket checks, and the lane-by-lane walkthrough is the SEO audit.

What this page does and does not claim

Every count above, the sampling frame, the seed, what the check actually treats as an internal link, and the two things we decline to claim from it are published as utm-internal-2026-09.json. Host names are not in it, by policy.

Download Docket

Common questions

How many sites put UTM parameters on their own internal links?

In a random sample of 40 Tranco hosts crawled on 15 September 2026, 6 (15.0%) emitted at least one link to their own site carrying UTM parameters, and 34 emitted none. All 40 hosts crawled successfully, so that share is out of the whole sample rather than out of whoever answered. 40 hosts is a small sample: it supports 'a real minority practice', not a precise rate.

Is it a few links or the whole site?

Both, and that is the finding. Among the 6 affected hosts the counts sit at two ends with nothing between: 3 had such links on four pages or fewer, and the rest had them on nearly or exactly every page crawled — though 6 hosts is too few to call that a distribution shape rather than chance. A handful of pages is usually hand-pasted links; every page is a template emitting the parameter on every render, which is one fix rather than many. Across affected hosts there were 177 such links in total, median 17.5 per host, maximum 91.

Does a host showing the maximum page count mean the site has that many pages?

No, and this is the easiest number on the page to misread. We crawled at most 25 pages per host, so the page count cannot exceed 25. A host showing 25 means every page we looked at carried such a link — the true number is however many pages that site has. 2 of the 6 affected hosts sit at that ceiling, and the share of those sites affected is unmeasured.

Did you measure the damage to analytics attribution?

No. The survey counted what 40 hosts emit in their HTML. It did not observe a single session, a single re-attribution, or a single lost conversion. What an analytics tool does with a tagged internal link is documented behaviour, not something this survey measured, and the mechanism is explained on the marketing tag audit page rather than here.

Is tagging an internal link always a mistake?

No. Some teams tag a specific internal link on purpose — an on-site banner, say — and accept the attribution cost to get the click count. That is a decision. Nothing in a crawl distinguishes it from a pasted URL, so the check reports the links and does not read intent; across 40 hosts we can say how often it appears and in what shape, and nothing about why.