UTM casing and consistency
Casing is the single most common UTM data bug. Because tools match values as exact strings, utm_source=Reddit and reddit are two separate rows, so one campaign quietly fragments. This page makes the lowercase rule concrete and shows how to deepen it into real consistency.
The lowercase rule
Make every UTM value lowercase, every time. This one rule removes the most common cause of fragmented rows, because casing is the difference people forget most:
- Lowercase only — Reddit and reddit are different rows
- Hyphens, not spaces or underscores, inside values
- No trailing spaces or stray characters
- One agreed spelling per source and medium
Deepen it past casing
Lowercase is the start, not the finish. Real consistency means the same source always spells itself the same way (x or twitter, never both), the same medium value is reused across platforms (cpc everywhere, not ppc here and cpc there), and separators never drift between hyphens and underscores. Each of these fragments rows exactly the way casing does.
The durable way to hold the line is to remove free text from link building: a builder or template that offers only approved, already-lowercased values means a person cannot introduce a capital, a space, or a new spelling by accident. Consistency you enforce in tooling survives; consistency you only ask for erodes.
How it appears in analytics and logs
Reports group by the exact UTM string, so Reddit, reddit, and REDDIT are three sources. One campaign's traffic splits across the variants and each row looks smaller than the real total.
Diagnostic use case
Adopt a strict lowercase rule and the habits around it so the same campaign never splits across differently-cased or inconsistent rows.
What WebmasterID can help detect
WebmasterID attributes by the literal utm_* strings it receives, so a lowercase, consistent convention is what makes its rollups accurate. Inconsistent casing produces near-duplicate rows that understate every affected campaign.
Common mistakes
- Allowing mixed casing so one campaign splits into several rows.
- Drifting between hyphens and underscores in values.
- Reminding people to be consistent instead of removing free text from the builder.
Privacy and accuracy notes
A strict casing-and-format rule pairs naturally with an allow-list of generic labels, which keeps personal data and secrets out of UTM values as a side effect of consistency.
Related pages
- UTM naming conventions that survive reporting
Most UTM data problems are naming problems. Because tools treat utm_source=Reddit and reddit as different values, inconsistent casing and spelling fragment one campaign across many rows. This page gives a convention — lowercase, hyphenated, documented allow-list — that keeps reports clean.
- UTM governance and templates
UTM data degrades when everyone builds links by hand. This page covers the governance that prevents it: a shared builder or spreadsheet, documented allow-lists for source and medium, and a review step so new values are deliberate rather than ad-hoc.
- Campaign links (docs)
A builder that emits lowercase, consistent UTM values.
Sources and verification notes
- MDN — URL search paramsUTM values are matched as exact, case-sensitive strings.
Last reviewed 2026-06-24. Facts are checked against primary/official sources where available; uncertain specifics are marked “Data not yet verified” rather than guessed.