# Keyword Gap Analysis: Find the Keywords Your Competitors Rank For

> A keyword gap analysis compares the keywords your search competitors rank for with yours, to find the ones you are missing and the ones where you sit on page two. The useful part is not the export: it is filtering that list by relevance and difficulty for your own domain, then grouping what remains into topics you can write about one after another.

Source: https://tonaily.com/guides/keyword-gap-analysis/
Last updated: 2026-11-06
Checked against sources on: 2026-11-06

## What is a keyword gap analysis?

A keyword gap analysis compares the keywords your competitors rank for in Google with the ones you rank for. It brings out two lists: the gaps (they rank, you do not) and the weak spots (you rank, but too low to get clicks). Filtered by relevance and difficulty, those lists become a content plan.

Picture a small online shop selling loose-leaf tea, which we will call Leaf & Kettle. Its owner has written thirty blog posts in two years, mostly about new arrivals. Traffic is flat. She knows two shops that sell the same teas, but she has no idea which questions bring them visitors from Google. A keyword gap analysis answers exactly that question, in an afternoon.

The method has five steps:

```mermaid
flowchart LR
  A[Pick search competitors] --> B[Export their ranking keywords]
  B --> C[Compare with yours]
  C --> D[Filter: relevance and difficulty]
  D --> E[Group into topics]
  E --> F[Content plan]
```

Each step is simple. The mistakes happen in the first one and in the filter.

## Who are your real search competitors?

Your search competitors are the domains that show up in Google for the queries you want, not necessarily the companies you lose deals to. The two lists overlap, but rarely completely.

For Leaf & Kettle, the business competitors are the two other tea shops. The search competitors, on "how to brew oolong" or "green tea caffeine", may well be a tea magazine, a hobbyist blog and a large retailer's guide section. None of them is a direct rival for sales, yet they hold the positions she wants.

To find them:

1. **List ten to fifteen queries your customers really type.** Not your product names: the questions they ask before buying. If you have no idea, the free [keyword generator](/resources/tools/keyword-generator/) turns one seed keyword into questions, comparisons and buying-intent variations to start from.
2. **Search them in Google**, in a private window, and note the domains that appear on the first page.
3. **Count.** The domains that come back on several of your queries are your search competitors. A site that appears once is noise.
4. **Keep two or three.** Ideally sites of a size close to yours. A domain with thousands of pages and a strong brand ranks for keywords you will not reach for a long time; it inflates the list without helping you choose.

A good search competitor writes about your topics, for your audience, and is not out of reach. If you only have business competitors in mind, include one, but add at least one site that genuinely ranks on your queries.

## How do you get the keywords your competitors rank for?

You cannot see another site's Search Console. To know which keywords a competitor ranks for, you go through a tool that estimates it from its own database of queries and results. For your own site, you have something better: first-hand data.

**For the competitors.** SEO tools offer a list of the keywords a domain ranks for, with an estimated position and search volume. Export it for each competitor. Keep in mind what these figures are: estimates, useful for comparing domains and spotting patterns, not exact counts.

**For your own site.** Use the Performance report in Search Console, with the Queries dimension. Google defines the two columns you need there:

```quote source="Search Console Help, What are impressions, position, and clicks?" href="https://support.google.com/webmasters/answer/7042828"
(average) Position: A relative ranking of the position of your link on Google, where 1 is the topmost position, 2 is the next position, and so on.
```

Impressions tell you a query exists for you; position tells you how far you are from the clicks. Export the queries over the last three months, with impressions and average position. The [Performance report help page](https://support.google.com/webmasters/answer/7576553) also reminds you that these numbers are averages, not a fixed rank: "Search results are specific to the time, place, device, and recent history of the person searching." A query at position 14 may show you on page one for some people and page three for others.

You now have one list per competitor and your own list. The rest is comparison.

## How do you find the gaps and the weak spots?

Put all the lists in one spreadsheet, one row per keyword, one position column per domain. Then sort each keyword into one of four groups.

| Group | Definition | What to do |
|---|---|---|
| Gap | At least one competitor ranks on page one, you do not rank in the top 100 | Candidate for a new article |
| Weak spot | You rank between positions 11 and 30 | Improve the existing page first |
| Shared | You and a competitor are both on page one | Monitor, no urgent work |
| Unique | Only you rank | Your angle: protect it, link to it |

The **gaps** are what people usually mean by keyword gap. The **weak spots** are often worth more: you already have a page Google considers relevant, it just needs to be better than the ones above it. Moving from position 14 to position 6 generally takes less work than building a new page from scratch.

For the weak spots, compare your page with the one that ranks above it. The free [TF-IDF analyzer](/resources/tools/tf-idf-analyzer/) puts the two texts side by side and lists the terms the ranking page uses that yours lacks, or uses much less. Read them as subtopics you have not covered, not as words to repeat.

A word on vocabulary: "content gap analysis" is sometimes used as a synonym for keyword gap, sometimes for this page-level comparison. The first tells you which topics to write about; the second tells you what is missing from a page you already have. You need both, in that order.

## How do you filter the gaps by relevance and difficulty?

A raw gap list is long and mostly useless. A competitor ranks for its brand name, for products you do not sell, for topics it covers for reasons of its own. Copying the whole list would mean writing about things you have nothing to say on.

Google's guidance on helpful content lists warning signs that a site is writing for search engines first. Two of them describe exactly the trap of an unfiltered gap list:

```quote source="Google Search Central, Creating helpful, reliable, people-first content" href="https://developers.google.com/search/docs/fundamentals/creating-helpful-content"
Are you producing lots of content on many different topics in hopes that some of it might perform well in search results?
```

And, a few lines further: "Did you decide to enter some niche topic area without any real expertise, but instead mainly because you thought you'd get search traffic?"

So filter in three passes:

1. **Relevance.** Remove brand names, products you do not sell and topics you could not discuss with a customer. The question to ask: would this person be a potential customer, and do we know the answer better than most?
2. **Difficulty.** Estimated keyword difficulty is useful only relative to your own domain. A keyword where competitors with a profile like yours are on page one is within reach; a keyword held only by very large, very established sites is not, for now. Set those aside instead of deleting them.
3. **Intent.** Look at the first page for the query. If Google shows product pages and you planned a blog post, or the reverse, either change the format or drop the keyword.

Search volume comes last, not first. A keyword with 90 searches a month that matches exactly what you sell is worth more than one with 5,000 searches from people who will never buy.

## A worked example: Leaf & Kettle

Here is what the analysis can look like for our fictional tea shop. The figures below are invented for the example, they are not data from any tool.

Leaf & Kettle picks three search competitors: one rival shop, one tea magazine, one hobbyist blog. After merging the exports and its own Search Console queries, the spreadsheet has about 2,400 keywords. The groups:

- **Gaps:** around 900 keywords. After the relevance pass, about 600 are gone: the magazine's brand, recipes with alcohol, coffee equipment, travel guides to tea regions. Some 300 remain.
- **Weak spots:** 41 keywords where Leaf & Kettle sits between positions 11 and 30, mostly on its old posts about green tea.
- **Difficulty pass:** of the 300 gaps, about 70 are held only by very large retailers. They are set aside for later.

The remaining gaps cluster naturally around a few topics: brewing (temperatures, times, quantities by type of tea), caffeine and health questions, and storage. Brewing alone gathers some 80 keywords, from the broad "how to brew loose leaf tea" to the narrow "oolong second infusion time".

The owner decides on one topic per quarter, starting with brewing: a pillar guide on brewing loose-leaf tea, then one satellite article per tea type, each linked to the pillar. In parallel, she reworks her three green tea posts stuck on page two, using the TF-IDF comparison to see what the pages above them cover.

The interesting result is what she does not write: 600 keywords removed in one pass, and a plan of about fifteen articles instead of three hundred.

## How do you turn the gaps into a content plan?

Group the remaining keywords by topic, then turn each topic into a series: one pillar article on the broad query, satellites on the specific questions, all linked together.

```mermaid
flowchart TD
  P["Pillar: how to brew loose leaf tea"] --> S1[Brewing green tea]
  P --> S2[Brewing oolong]
  P --> S3[Brewing black tea]
  P --> S4[Water temperature by tea type]
  S1 --> P
  S2 --> P
  S3 --> P
  S4 --> P
```

A few rules make the plan hold up:

1. **One main keyword per page.** If two gaps have the same intent ("how long to steep green tea" and "green tea steeping time"), they belong in the same article. Two pages on the same intent compete with each other.
2. **Weak spots before gaps.** Improving an existing page is usually faster to pay off. Put them at the top of the calendar.
3. **A pace you can keep.** One well-researched article a week beats ten skimmed ones. The plan is only worth what you can publish while staying accurate.
4. **Something only you can say.** For every article, note what your business brings that the ranking pages do not: a customer case, an internal figure, a method. If you cannot find anything, the keyword is probably not yours.
5. **Measure, then redo.** After a quarter, compare the positions of the new pages in Search Console, and run the analysis again with fresh exports.

```tonaily
In Tonaily's [Strategy](/features/strategy/) module, you add the domains you want to compare yourself with and Tonaily **imports the keywords they rank for** into your corpus (1, 2 or 3 competitors depending on the plan). Every keyword is scored on volume, difficulty measured against your own domain, relevance to your business and an overall opportunity score, and off-topic terms are filtered out. Keywords are grouped into themes, and a theme becomes a **sequence**: a pillar article and its satellites, which you approve before writing starts.
```

## What should you check before you start writing?

Run through this list once the plan is drafted.

```checklist title="Keyword gap analysis"
- I compared myself with search competitors, not only with business competitors
- I kept two or three competitors of a size close to mine
- My own keywords come from Search Console, over at least three months
- I treated the competitors' figures as estimates, not as exact data
- I separated gaps (not ranking) from weak spots (positions 11 to 30)
- I removed brand names, products I do not sell and topics outside my expertise
- I judged difficulty relative to my own domain
- I checked the intent of the first page for each main keyword
- Keywords with the same intent are grouped into one page
- Each topic has a pillar and satellites, linked together
- Weak spots are at the top of the calendar
- Every planned article has something only my business can add
- A date is set to measure the results and redo the analysis
```

## Does a keyword gap analysis also help with AI assistants?

Partly. The topics you identify are the questions your customers ask, in Google and in ChatGPT, Gemini or Grok alike. But AI assistants do not publish keyword positions, and the sites they cite are not always the ones ranking first in Google.

To see which competitors the assistants name instead of you, the guide [Why ChatGPT recommends your competitor](/guides/why-chatgpt-recommends-competitor/) explains how to check, and [AI share of voice](/guides/ai-share-of-voice/) how to measure it over time. The guide [Generative engine optimization](/guides/generative-engine-optimization/) covers what is documented about getting cited.

The keyword gap analysis remains the starting point: it tells you which questions your market asks and which ones you have not answered yet. The rest of the work is answering them better than the pages already there.

## FAQ

### What is the difference between a keyword gap and a content gap analysis?

A keyword gap analysis compares lists of ranking keywords between domains. A content gap analysis goes one level down: it compares the pages themselves to see which subtopics a ranking page covers and yours does not. You usually run the first to choose what to write, and the second to improve a page that already exists.

### How many competitors should I include?

Two or three search competitors are usually enough. Beyond that, the list grows faster than your ability to act on it, and the extra domains tend to repeat keywords you already have from the first ones.

### Are the keyword lists from SEO tools exact?

No. Third-party tools estimate which keywords a domain ranks for and how many searches they get, from their own databases. They are good for spotting patterns and comparing domains, not as precise figures. Your own Search Console data is the only first-hand source, and only for your own site.

### Should I target every keyword a competitor ranks for?

No. Many of them are tied to their brand, products you do not sell or topics outside your expertise. Google's own guidance warns against entering a topic area mainly because you think it will bring search traffic. Keep the gaps your business can answer better than anyone.

### How often should I redo a keyword gap analysis?

Once a quarter is a reasonable rhythm for most small sites: often enough to catch new topics, rarely enough that the articles from the previous round have had time to be indexed and to rank.


## Sources

- [Performance report (Search results) (Search Console Help)](https://support.google.com/webmasters/answer/7576553)
- [What are impressions, position, and clicks? (Search Console Help)](https://support.google.com/webmasters/answer/7042828)
- [Creating helpful, reliable, people-first content (Google Search Central)](https://developers.google.com/search/docs/fundamentals/creating-helpful-content)
