GA4 Comparisons: Comparing Groups in Reports
Comparisons put two or more groups of users side by side in GA4's standard reports, such as mobile against desktop or paid against organic traffic. This guide covers how to add one, how conditions combine, saved comparisons, comparing date ranges, the limits, and when a filter or a segment is the better tool.
This guide is built from Google's Analytics Help articles on applying comparisons to reports, changing and comparing date ranges, report filters, how filters, subproperties and user roles differ, the Realtime report, configuration limits and data thresholds. For segments inside explorations, see our guide to GA4 segments.
What a comparison is
Google's definition: "Comparisons let you evaluate subsets of your data side by side." Instead of narrowing a report to one group, a comparison adds another version of the same report next to the first, one per group, each in its own colour. Google's example is Android devices against iOS devices; other common ones are organic search against paid traffic, or one country against the rest.
Comparisons work in the standard reports, such as Traffic acquisition, Pages and screens and the Realtime report. They are built from dimensions and dimension values, or from an audience you have defined. When you need more than that, such as a sequence of steps or a metric condition over a past period, you are in exploration territory and need a segment instead.
Adding a comparison to a report
- Open a report and click the comparison icon in the top right.
- Pick a saved comparison, or click + Create new.
- In the Dimension drop-down, choose a dimension. Google says "Only dimensions that have dimension values appear in the list," and a dimension is greyed out if it is incompatible with other dimensions in the report.
- Choose a match type and one or more dimension values.
- Optionally click + Add new condition, for up to 4 more conditions.
- Click Apply. "A color-coded version of the data appears for each comparison."
Make one comparison per group you want to see. To compare app with web, Google suggests one comparison for Android and iOS and a second one for Web. Google also ships prebuilt saved comparisons "for direct traffic, organic traffic, web traffic, and mobile traffic," so for those you don't have to build anything.
The Realtime report has a shortcut of its own: click one of the bubbles on its map to create a comparison of all users against users in that city.
Conditions, match types and logic
Each condition is a dimension plus one or more values. Google gives Stream, Platform (Android, iOS, Web), Country and Audience as examples. Two rules decide how conditions combine:
| What you set | How GA4 combines it | Google's example |
|---|---|---|
| Several values in one condition | OR | Platform = Android OR iOS |
| Several conditions in one comparison | AND | (Platform = Android OR iOS) AND (Country = Argentina OR Japan) |
| Several comparisons | Shown side by side, not combined | Android and iOS in one, Web in another |
There are two kinds of match type. Exact matching ("exactly matches" and "does not exactly match") compares data that precisely matches or doesn't match the values you pick. Partial matching ("contains" and "does not contain") is more flexible, but Google warns that "Partial match phrases are case sensitive." A comparison for a campaign name that contains "Spring" will miss rows tagged "spring", so check how your UTM tags are written before relying on it.
Google also notes that "Not all dimension values may be available. Some dimensions are not allowed to be excluded, while others are not available due to your configuration."
Saved comparisons
A saved comparison is stored on the property so that "you and others with access to your property" can apply it without rebuilding it. Google marks this as a gradual rollout, so not every property may have it yet.
- In Admin, under Data display, click Comparisons.
- Click New comparison in the top right.
- Build the conditions the same way as in a report, then click Save.
- Enter a name and description, then click Confirm.
Saving needs the Editor role or above at the property level (see our guide to GA4 user permissions). After that, Google says "Anyone with access to the property can apply the comparison to reports," and saved comparisons can be edited, duplicated or deleted on the same Admin page.
On the limit, Google's two help pages disagree. The comparisons article says "You can save up to 200 comparisons per Google Analytics 4 property," while the configuration limits table lists saved comparisons at 50 per standard property, and says they can't be archived to free space. The Comparisons page has a Quota information link that shows how many your property has used, which is the number to trust.
Moving between reports
Comparisons don't follow you fully from report to report. Google says that when you move to another reporting page, "all comparisons but the All users one will be unselected on the new page." Each report opens on All users; click the symbol next to All users to turn your previously applied comparisons back on. To remove one, click the X to the right of its definition at the top of the report.
Your view is your own: Google notes that when you change the date range in a report, other users won't see the change. To show a colleague the same view, give them a saved comparison and tell them the dates, or annotate the event you are looking at.
Comparing date ranges
Comparing one period with another is a separate control in the date picker, not a comparison. Open the date picker in the top right, choose a range, turn on Compare and click Apply. Google gives three options, using a range of Wednesday January 11 to Thursday January 12, 2023:
| Option | What it compares with | Google's example |
|---|---|---|
| Previous period (match day of week) | The previous range, starting on the same weekday | Wed Jan 4 to Thu Jan 5 |
| Previous period | The range directly before | Mon Jan 9 to Tue Jan 10 |
| Previous year | The same range last year | Tue Jan 11 to Wed Jan 12 |
Google has removed the Previous year (match day of week) option. For traffic that follows the working week, match day of week is usually the fairer comparison. The Realtime report has no date picker, because it only shows recent activity.
Comparisons vs filters vs segments
All three narrow your data, but they answer different questions:
| Comparison | Report filter | Segment | |
|---|---|---|---|
| Where | Standard reports, incl. Realtime | Detail reports only | Explorations only |
| What you see | Several groups side by side, colour-coded | One group, the rest hidden | Up to 4 groups in a technique |
| Match types | Exact, partial (contains) | Exact, partial, regex, empty | Dimension, metric and event conditions, sequences |
| Saved for others | Saved comparisons in Admin | Through report customisation | Property level segments |
Report filters use the same OR and AND logic and the same limit of 4 extra conditions, but they also offer begins with, ends with, regex (limited to 250 characters) and "is empty". They only exist in detail reports; overview reports can only be filtered by an Editor or Administrator through report customisation. Google calls report filters "Ad-hoc report customization" and stresses that they are not governance, because users can remove them. Neither comparisons nor filters change the stored data, unlike data filters, and neither restricts access, unlike subproperties or user roles.
For complex criteria in a report, Google's advice is to build an audience with those criteria and use it as a comparison condition. The catch: it "will only apply to data gathered from the point when the audience was created onwards." For past data with complex criteria, build a segment in an exploration.
Limits and blank cards
- Each comparison can have up to 5 conditions: the first plus "up to 4 more conditions".
- "If a report doesn't support a condition (for example, the report doesn't include one of the dimensions), then a blank card appears for that comparison." Google says this happens most often in the Realtime report; pick another dimension or remove the condition.
- Comparisons on demographic dimensions, or on audiences defined with demographic data, can be thresholded: Google may withhold small groups so that no individual can be identified. You can't adjust thresholds, but a wider date range makes it less likely.
- Partial match phrases are case sensitive, so mixed-case values split across rows. For values GA4 couldn't fill, see (not set) in GA4.
How we use comparisons
This is our own practice, not Google guidance:
- We keep a short set of saved comparisons per client, such as paid vs organic, mobile vs desktop and the main market vs the rest, so everyone on the account reads the same groups.
- We always keep All users switched on next to the groups, so a small segment isn't mistaken for the whole site.
- We use exact matches where we can; partial matches only where the values are tagged consistently.
- When a group needs a sequence or a metric condition, we build an audience for future reporting and a segment in an exploration for the past.
- For month-on-month reviews we use Previous period (match day of week) rather than Previous period, so weekdays line up.
Frequently asked questions
How do I compare two groups in a GA4 report?
Click the comparison icon at the top right of a standard report, create one comparison per group from a dimension and its values, and click Apply. GA4 shows a colour-coded version of the report for each group.
How many conditions can a GA4 comparison have?
One condition plus up to 4 more. Several values in one condition are joined with OR; several conditions are joined with AND.
Why did my comparisons disappear when I opened another report?
Google turns off every comparison except All users when you move to a new reporting page. Click the symbol next to All users to turn the earlier ones back on.
What is the difference between a comparison and a segment?
Comparisons work in standard reports and use dimension conditions or audiences. Segments work only in explorations and can also use metrics, events and sequences, and they apply to past data.
Why does a comparison show a blank card?
The report doesn't support one of its conditions, usually because the report doesn't include that dimension. Google says this is most likely in the Realtime report. Choose a different dimension or remove the condition.
For more on measurement, see our guides to GA4 basics, the landing page report, channel groups and GA4 key events.