High cardinality describes a dimension in your analytics that holds a very large number of different values, such as an order number, a timestamp or a page address with tracking codes attached. In Google Analytics 4 it matters because report tables can only keep so many distinct rows, and once a dimension pushes past that limit, the detail you wanted is folded into a single row labelled (other).
How high cardinality works
Cardinality is simply the number of distinct values a field can take. Device category has a handful: desktop, mobile, tablet and the occasional smart TV. Postcode district has a few thousand. Transaction ID has as many values as you have orders. The first is low cardinality; the last is about as high as it gets.
GA4 processes raw events into aggregated tables so that reports load quickly. Each table can hold a limited number of unique combinations of dimension values for a given day. When a report needs more combinations than the table can hold, GA4 keeps the most common ones and groups everything else under the (other) row. Combining dimensions multiplies the effect: landing page by source by campaign by city can produce hundreds of thousands of combinations even when each dimension on its own looks manageable.
Google’s GA4 documentation describes a dimension as high cardinality when it has more than 500 unique values in a single day (at the time of writing, October 2026). Most trouble starts with custom dimensions. When you register an event parameter as a custom dimension, GA4 starts building it into those tables. If the parameter carries a session ID, a user ID, a timestamp or a phrase typed into your site search, nearly every event creates a new value, and any report that uses it fills with (other) quickly.
Why it matters
There is no error message. Reports simply stop telling you what you need. An online shop looking at revenue by landing page may find its largest row is (other) because every product URL carries a different filter string. A lead-generation site may lose the breakdown of which campaign produced enquiries because campaign names were built with dates and ad IDs inside them. Budget and content decisions then rest on whichever slice of the data happened to survive.
The problem travels. Looker Studio dashboards built on the GA4 connector inherit the same rows, so a monthly board report can carry a large, unexplained (other) line that nobody in the meeting can interpret or act on.
Common mistakes
- Registering identifiers such as order numbers, session IDs or client IDs as custom dimensions in order to see everything. Identifiers are useful in raw data, not in aggregated reports.
- Sending full page addresses, including UTM tags, sort orders or internal search terms, in a parameter you report on.
- Putting dates, times or random codes into campaign names, which turns a dozen campaigns into thousands of values.
- Collecting free-text form input as a parameter. Apart from the cardinality, it risks sending names or email addresses to Google, which its terms forbid and UK GDPR makes your responsibility.
- Treating (other) as lost data. Totals are still correct; it is the breakdown that is missing, and that is often recoverable elsewhere.
How to act on it
Start with an inventory. In GA4’s custom definitions, list every custom dimension you have registered and ask, for each one, whether anyone needs to see it as rows in a standard report. If the honest answer is no, archive it. The parameter can still be collected and analysed in raw form.
Where you do need the dimension, reduce its values before they reach GA4. Group product pages into categories, strip query strings from the page paths you report on, and send a basket value band such as £50 to £99 rather than the exact amount when you want to segment by it. Agree a campaign naming convention without dates, write it down in one shared document, and use it across Google Ads, Meta and email.
For genuine row-level questions, such as revenue per order or the path of an individual visitor, use the free BigQuery export, which keeps every event without the aggregation limits. It only collects data from the day you switch it on, so set it up before you need it. Keeping GA4 reports lean and decision-focused, and leaving the fine detail to raw data, is how I design measurement as part of performance marketing work.
