Free SEO tool. Search Console

Branded vs Non-Branded Keyword Splitter (Free, Runs in Your Browser)

2 formulasA Search Console regex and a Looker Studio CASE field, built from your terms
3 bucketsBrand, non-brand, and the anonymised clicks that fit neither
0 uploadsYour export is read by your own browser and goes nowhere
Under 1 secTo split and display a 5,000-query export in testing

Privacy: nothing is uploaded. Your file is read and processed locally in your browser, and closing the tab clears it.

Split your Search Console queries into brand and non-brand

Load Search Console’s Queries export, list your brand terms, and the splitter sorts every query into Brand or Non-brand. It’s the counting half of my guide to branded vs non-branded search traffic, so if you’re not sure why the split matters, start there.

Needs a query column (Top queries or Query), Clicks and Impressions. Position is optional but recommended. Tabs, commas and semicolons all work.

Your brand name, misspellings from your own query list, product lines only you sell, and your domain (the .com gets dropped). Type a one-word name in CamelCase, like BrewMate, to also catch brew mate.

Phrases that contain a brand term but aren’t about you. They always count as non-brand.

3. Site totals from the Performance chart (optional)

Same date range as the export. These let the tool show the clicks no query row explains.

Quick answer

This free splitter takes Google Search Console’s Queries export and your list of brand terms, sorts every query into Brand or Non-brand, and reports clicks, impressions, CTR and impression-weighted average position for each side. It lists the queries that matched your brand terms so you can catch false positives, flags non-brand queries with weak CTR, and writes two formulas: an RE2 regex for Search Console’s Custom (regex) query filter and a Looker Studio CASE field that keeps blank query rows in their own Anonymised bucket. It’s built for SEOs, founders and marketing leads who need the brand line kept out of their growth number.

Search Console has had a built-in Branded queries filter since late 2025, and it’s a decent first look. But it’s an AI-assisted classifier you can’t edit, it only shows up on top-level properties with enough query volume, and Google itself warns that some queries can be misclassified (Google Search Central announcement). It isn’t in the API either: the searchanalytics.query reference filters on country, device, page, query and search appearance, with no brand dimension.

A pattern you write yourself can be read line by line and reused anywhere. This tool builds that pattern from your own export and shows exactly what it catches. The reasoning behind the split, and what to do with it, is in branded vs non-branded search traffic.

How to Use the Branded vs Non-Branded Splitter

Seven steps, and the first one is the only slow part.

  1. Export your queries from Search Console. In Search Console, open Performance, then Search results, and set the date range you want (three months is a sensible default). Click Export at the top of the report and choose Download CSV. You’ll get a zip file: unzip it and keep Queries.csv. The interface export stops at 1,000 rows, and values the report shows as a tilde or a hyphen come out as zeros.
  2. Load the file or paste it. Click Choose file and pick Queries.csv, or open it, copy every row including the header, and paste it into the box. Exports from Google Sheets, Looker Studio, the Search Console API and GA4’s Search Console queries report work too, because the tool finds the query, Clicks, Impressions and Position columns by name.
  3. List your brand terms. Put one term per line: your brand name, the misspellings you can see in your own query list, product lines nobody else sells, and your domain (the tool drops the .com). Write a one-word brand in CamelCase, like BrewMate, and it’ll also catch brew mate.
  4. Add your site totals. This one’s optional. Copy Total clicks and Total impressions from the boxes above the Performance chart, for the same date range and search type. With those, the tool can show the clicks that sit in no query row at all.
  5. Run the split and check the brand matches. Click Split my queries. Read the Brand matches table from the top. If a query matched for the wrong reason, add that phrase to the Not brand box and run it again.
  6. Paste the regex into Search Console. In the Performance report, click Add filter, choose Query, then Custom (regex), and paste the pattern. Matches regex gives you the brand line. Doesn’t match regex gives you non-brand.
  7. Add the CASE field in Looker Studio. Edit your Search Console data source built on the Site Impression table, click Add a field, paste the formula and name it Query type. Use it as a dimension in tables and trend charts, or as a filter control.

Two syntax details matter. Search Console’s regex filter uses RE2, ignores case by default and matches anywhere in the query unless you anchor it with ^ or $ (Google’s advanced filtering help). Looker Studio is stricter (Google’s docs now call it Data Studio again). Its regex is case-sensitive unless you add (?i), per regular expressions in Data Studio, and REGEXP_MATCH only returns true when the pattern matches the whole value. That’s why the generated field wraps your terms in .*( ).*. Miss either detail and the brand line quietly shrinks.

The same Search Console pattern also works in the API, as an includingRegex or excludingRegex filter on the query dimension (API reference).

How to Read Your Results

The split table and the ratio

Clicks and impressions are plain sums. CTR is the group’s clicks divided by its impressions, so it won’t match an average of the row CTRs. Average position is weighted by impressions: a query shown 9,000 times counts 9,000 times as much as one shown once. A plain average of the Position column lets hundreds of 3-impression queries at position 40 drag the figure around.

Shares are shares of query rows, so brand and non-brand always add to 100% between them. The ratio line says the same thing as Brand : Non-brand, on clicks and on impressions. Look at both. Clicks show where visits come from today. Impressions show where the demand is, and on most content-led sites that’s non-brand by a wide margin.

If brand is above about 80% of query clicks, the tool flags it. That’s the rough warning line from the paired guide. Search is mostly catching people who already know you.

Brand matches: where false positives hide

Every query that matched a brand term is listed with the term that caught it, most impressions first. Read the top 30 or so. You’re looking for two things. A common word that contains your brand: a brand called Ace would catch space and face, which is why terms of three letters or fewer are matched as whole words by default. And someone else’s product that shares a name with yours. A match with lots of impressions, a weak position and almost no clicks is the usual tell.

Then check the other direction. Set Every query to Non-brand only, sort by impressions, and scan for misspellings you didn’t list. Add them and run it again.

Non-brand opportunities

This list holds non-brand queries ranking at position 20 or better whose CTR is below your own non-brand CTR, biggest impressions first. Click gap is how many more clicks a query would get at your average non-brand CTR. Treat it as an order of work, because real CTR also swings with ads, AI Overviews and other SERP features.

  • Position 1 to 3 with few clicks: the title or snippet isn’t winning, or something big sits above you. Search the query and look.
  • Position 4 to 10: rewrite the title and meta description around the words in the query. If titles get cut off in results, run them through the title tag truncation checker.
  • Position 11 to 20: a new title won’t lift a page-two result. The page needs better content and more internal links, which is the work described in the position 11 to 100 trap.

If two of your URLs keep swapping on one of these queries, run it through the keyword cannibalization checker before you touch titles.

The two formulas

The Search Console pattern is plain alternation: each term with its variants, joined by a pipe. Multi-word terms get [ -]? between words, so crema one also matches cremaone and crema-one. Doubled letters become optional (coffee also matches cofee), and so does an apostrophe. There isn’t a backslash anywhere, because Google notes that escape characters may need extra escaping inside Data Studio formulas.

The Looker Studio field adds two lines before the brand test. Google’s Search Console connector docs say withheld queries may be grouped into one row with a blank Query value, and a CASE statement sends anything that matches no WHEN line to ELSE (CASE docs). Without the IS NULL and empty-string lines, that blank row lands in Non-brand and inflates the number you’re trying to prove.

CASE
  WHEN Query IS NULL THEN "Anonymised"
  WHEN Query = "" THEN "Anonymised"
  WHEN REGEXP_MATCH(Query, "(?i).*(acme|akme|acmee?|brew[ -]?mate|crema[ -]?one).*") THEN "Brand"
  ELSE "Non-brand"
END

Anything in Not brand only reaches the Looker Studio field, as an extra WHEN line above the brand test. RE2 doesn’t support lookahead (RE2 syntax), so a single Search Console pattern can’t say match acme but skip acme of perfection. The tool tells you how many clicks and impressions that difference is worth.

Worked example: the sample data

Click Load sample data and you get a made-up coffee gear brand, Acme, at example.com: 40 queries, the brand terms Acme, akme, acmee, BrewMate and Crema One, and site totals of 8,120 clicks and 176,400 impressions.

The first run puts 16 queries in Brand, with 5,230 clicks and 21,415 impressions at 24.42% CTR and an average position of 2.6. Non-brand gets 24 queries, 824 clicks and 121,795 impressions at 0.68% CTR and position 10.1. So brand takes 86.4% of query clicks and 15.0% of query impressions. That’s 6.3 : 1 by clicks and 1 : 5.7 by impressions, and the 80% warning fires.

Now read the brand matches. Sitting in there is acme of perfection meaning: 2,650 impressions, 6 clicks, position 8.9. That’s a dictionary lookup, not a customer. Add acme of perfection to Not brand and run it again. Brand drops to 15 queries and 18,765 impressions, brand CTR rises to 27.84%, and brand’s average position moves from 2.6 to 1.7. One wrong row was costing the brand line almost a full position.

Then the other direction. Show Non-brand only and acmi coffee is there: 21 clicks from 95 impressions at position 1.8, a misspelling nobody listed. Add acmi and it moves across. The 2,066 clicks between the query rows and the 8,120 site total (25.4%) stay in No query row. They belong to neither side.

Top of the opportunities list is how to descale espresso machine, with 11,200 impressions at position 11.6 and 0.46% CTR. That’s page two, so it needs ranking work before any title change. Espresso grind size, at position 9.8 and 0.43% CTR, is a page-one row and a title job.

Why Brand Plus Non-Brand Won’t Add Up to Your Site Total

Google keeps some queries out of every query table. Its deep dive on performance data calls them anonymized queries: ones not issued by more than a few dozen users over two to three months. They’re left out of the rows but still counted in the chart totals. Any split built on the Query dimension drops them from both sides.

Row limits widen the gap. The Search Console interface shows and exports up to 1,000 rows, and the API and Looker Studio connector stop at 50,000 rows per day per site per search type (same source). On a big site the long tail past those limits is missing too, and long-tail searches tend to be non-brand.

So report the split as a share between the two halves, and show the leftover as its own line. Don’t subtract brand clicks from the site total to get non-brand. That pushes every anonymised click into non-brand and inflates it, sometimes by a lot. Why the Search Console API misses keywords covers the row limits, and how to pull a keyword the top-rows listing skips.

Why the Tool Can’t Split Revenue by Query

Search Console knows the query and the click. GA4 knows the session and the order. Nothing joins the two at query level. Google’s help page on linking Search Console to GA4 says Search Console metrics only work with Search Console dimensions plus landing page, device and country. The query never reaches the session, so nobody can hand you a measured non-brand revenue number.

You can bracket it, though: organic transactions on landing pages that rank only for non-brand queries, Organic Search channel revenue as the ceiling, and non-brand clicks as the effort metric. The paired guide explains all three, and the Looker Studio SEO dashboard build shows the landing page blend the first one needs.

Limits of This Tool

  • It’s only as good as your term list. The variants are simple: optional spaces and hyphens, optional doubled letters and apostrophes, CamelCase splits. It won’t guess that acmi is a typo of acme. You add those.
  • A brand that’s also an everyday word (Glow, Bloom, Ace) will catch generic searches. Short terms are matched as whole words, but you still have to read the brand matches.
  • It only sees the rows in your file. Anonymised queries and anything past the export limit can’t be classified by anyone, this tool included.
  • It doesn’t copy Google’s Branded queries filter. Google also counts product names that appear without the brand, so add yours to the term list if you want the same.
  • One date range per run. To compare periods, export each one and run them separately.
  • The opportunity list uses your own average non-brand CTR as the yardstick. It knows nothing about ads, AI Overviews or intent.
  • It expects English column headers. If your Search Console interface is in another language, switch it to English before you export, or rename the headers.
  • It runs in your browser’s memory. A 5,000-query file took about 0.6 seconds to split and display in a desktop browser during testing. Files with hundreds of thousands of rows may be slow on a phone.

Branded vs Non-Branded Keywords FAQ

What is the difference between branded and non-branded keywords?

Branded keywords include your brand name, a misspelling of it or a product name only you sell, such as acme coffee or brewmate grinder. Non-branded keywords don’t, such as best burr coffee grinder. Branded searches come from people who already know you. Non-branded searches are how new people find you, so that’s the line SEO grows.

How do I filter branded keywords in Google Search Console?

Open Performance, then Search results, click Add filter, choose Query, then Custom (regex), and paste a pattern of your brand terms separated by a pipe. Keep Matches regex for brand queries and switch to Doesn’t match regex for non-brand. If your property shows the built-in Branded queries filter, use it as a quick cross-check.

What regex should I use for branded keywords?

List every variant separated by a pipe, for example acme|akme|brew[ -]?mate. Search Console uses RE2, ignores case and matches anywhere in the query, so you don’t need (?i) or .* there. Skip lookaheads and backreferences, because RE2 doesn’t support them.

Why don’t my branded and non-branded clicks add up to total clicks?

Google leaves anonymized queries out of query rows but still counts them in the site totals, and exports stop at a row limit. Any split built on queries therefore sums short of the total. Report the split as a share, and show the missing clicks as their own line.

Should I use Search Console’s built-in Branded queries filter instead?

Use it as a quick first read if your property has it. It’s an AI-assisted classification you can’t edit, it only appears on top-level properties with enough traffic, and the API has no brand dimension. For a monthly report, a pattern you control is easier to check and reuse.

Why does the Looker Studio formula wrap the pattern in .*?

Because REGEXP_MATCH only returns true when the pattern matches the whole value. Without .* on each side, acme matches the query acme and misses acme coffee. REGEXP_CONTAINS also works if you’d rather leave the .* out.

Can I split revenue into branded and non-branded?

Not from measured data. GA4 never receives the search query, and Search Console data in GA4 can only be broken down by landing page, device and country. Use proxies instead: organic revenue on pages that rank only for non-brand queries, organic channel revenue as a ceiling, and non-brand clicks as the effort metric.

Is my Search Console data uploaded anywhere?

No. Your browser reads the file with JavaScript and never sends it to a server. Close the tab and it’s gone. The Download CSV button builds its file in your browser too.

RS

Built by Ram Kr Shukla

SEO and growth consultant with 20+ years in SEO and growth across 50+ brands. Google Analytics and Google Ads certified. Works daily in Search Console, GA4 and Looker Studio, and builds the reporting that keeps brand demand apart from the growth SEO actually creates.