A keyword gap analysis compares the keywords your competitors rank for against the ones you rank for, then isolates the difference. That difference is your opportunity list - search terms with proven demand where you have zero visibility. It’s the single most efficient way to find content ideas that aren’t based on hunches, because every keyword in the gap already drives traffic to someone in your space.

This guide walks through the full process. We’ll use a running example, cover both Ahrefs and SEMrush, and end with a method for turning a raw gap export into something you can actually publish from.

When to run a keyword gap analysis

Not every quarter needs one. Run a gap analysis when:

  • You’ve exhausted your seed keyword list. You’ve written the obvious stuff. The brainstorming well is dry. Gap analysis pulls from a completely different source - competitor performance data - so it surfaces terms you’d never think of on your own.
  • Traffic has plateaued. You’re publishing but growth has flatlined. Gaps reveal where competitors are pulling traffic that should be yours.
  • You’re entering a new topic area. Before writing 20 articles on a new subject, check what competitors already rank for. Their keyword footprint is your shortcut to understanding what the audience actually searches for.
  • After a competitor publishes heavily. If a rival just dropped 15 new blog posts in a month, run a gap analysis. They did research you can benefit from.

Don’t run one weekly. The data doesn’t change fast enough to justify it. Every quarter or after a major strategic shift is plenty.

The running example

Throughout this guide, we’ll use a fictional SaaS company that sells proposal software. The site has about 8,000 organic visits per month and a domain rating of 34. We’ve picked three competitors:

  • Competitor A - 22,000 visits/mo, DR 48, strong on proposal templates and sales content
  • Competitor B - 15,000 visits/mo, DR 42, focused on contract and document management
  • Competitor C - 12,000 visits/mo, DR 37, covers sales enablement broadly

These are sites in our weight class. Not industry giants - companies a step or two ahead that we can realistically catch within six months.

Step 1: Pull keyword data in Ahrefs

Open Ahrefs’ Content Gap tool (Site Explorer > Content Gap). Enter your domain in the top field and your three competitors below it. Set the filter to “at least one of the below targets should rank in top 10” and your domain to “doesn’t rank.”

Hit “Show keywords.” You’ll get a list - probably 2,000 to 5,000 terms depending on your niche.

For our proposal software example, this produces 3,400 keywords. That’s the raw gap. It includes everything from “how to write a business proposal” (8,100/mo) to “rfp management software pricing” (40/mo) to “what font to use for proposals” (90/mo). Most of it is noise.

The SEMrush alternative

In SEMrush, go to Keyword Gap. Enter your domain and up to four competitors. Select “Organic Keywords” and hit Compare. Then filter to “Missing” (competitors rank, you don’t) or “Weak” (competitors rank higher than you).

The output is functionally identical. Different interface, same data shape. Use whichever tool you already pay for.

Step 2: Filter aggressively

The raw export is useless without filtering. Here’s the stack that works:

Keyword difficulty under 35. You need to actually rank for these terms. Unless you have a DR above 60 and a track record of building links, keywords above KD 35 are multi-month projects with uncertain outcomes. Start with the wins you can get.

Search volume above 100/mo. Below this threshold, even a position-one ranking won’t move the needle. Exception: high-intent commercial terms where 50 searches a month could mean real pipeline. “Proposal software for agencies pricing” at 60/mo is worth more than “free proposal tips” at 300/mo.

Relevance to your product. This is the filter most people skip. Competitor A ranks for “sales commission calculator” (KD 18, 720/mo). Looks great on paper. But our product is proposal software - that keyword connects to sales broadly but not to what we sell. The traffic won’t convert. Cut it.

Remove branded terms. Any keyword containing a competitor’s brand name is useless to you. Filter those out immediately.

For our example, the 3,400 keywords shrink to about 280 after filtering. That’s the real gap.

Step 3: Categorise what you find

Not all gaps are the same. Sort your filtered list into three buckets:

Missing entirely. You have no page even loosely related to this keyword. Competitor A ranks for “proposal follow-up email template” and you have nothing on proposal follow-ups at all. This is a net-new content opportunity.

Covered but not targeted. You have a page that touches the topic but doesn’t target the specific keyword. You wrote about “how to close deals faster” and it briefly mentions follow-up emails, but there’s no dedicated page. The fix might be a new article or it might be expanding the existing one.

Outranked. You have a page targeting this keyword but competitors rank higher. This isn’t a content gap - it’s a content quality or authority gap. Different problem, different solution.

In our example, the breakdown looks roughly like this: 160 keywords missing entirely, 80 covered but not targeted, 40 outranked. The first bucket is where the biggest gains live.

Step 4: Prioritize with a scoring method

You have 280 filtered keywords. You can’t write 280 articles next quarter. Prioritize.

A simple scoring formula that works:

Opportunity score = (Volume / KD) x Relevance multiplier

The relevance multiplier is subjective but critical. Score each keyword 1 to 3:

  • 3 - Directly related to your product. The searcher could become a customer. “Proposal template for consulting firms” for our proposal software company.
  • 2 - Adjacent topic. The searcher is in your audience but not necessarily buying. “How to write a project scope.”
  • 1 - Loosely related. Tangential traffic. “Business letter format.”

Run this formula across your filtered list and sort descending. The top 30 to 50 keywords are your priority targets.

For our example, the top five scored keywords:

KeywordVolumeKDRelevanceScore
proposal template for consulting880143189
how to write a project proposal1,300283139
request for proposal template1,600322100
business proposal format72022265
scope of work template free59018266

These are the keywords worth writing for first.

Step 5: Cluster before you write

Don’t create one article per keyword. That’s how you end up with 50 thin pages cannibalizing each other.

Group related gap keywords into clusters. “Proposal template for consulting,” “consulting proposal example,” and “consulting proposal format” are one cluster. They get one article.

From our 280 filtered keywords, clustering typically produces 40 to 60 distinct topic clusters. Each cluster becomes one piece of content targeting a primary keyword and capturing the related terms naturally.

This is where a keyword gap strategy matters. The clustering step determines whether your gap analysis produces a coherent content plan or a disconnected pile of articles.

Step 6: Build the content plan

For each cluster, define:

  • Primary keyword - the highest-volume term in the cluster
  • Supporting keywords - the other terms in the cluster that should appear naturally
  • Content type - guide, template page, comparison, tool page
  • Priority - based on your opportunity score from step 4
  • Existing content - does a page already exist that could be expanded?

Here’s what three entries from our example plan look like:

Cluster: Consulting proposals Primary: “proposal template for consulting” (880/mo, KD 14). Supporting: “consulting proposal example,” “consulting proposal format,” “how to write a consulting proposal.” Content type: Template page with downloadable template. Priority: 1. Existing content: None.

Cluster: Project proposals Primary: “how to write a project proposal” (1,300/mo, KD 28). Supporting: “project proposal template,” “project proposal example,” “project proposal outline.” Content type: Long-form guide with examples. Priority: 1. Existing content: Thin blog post from 2024 - rewrite.

Cluster: Scope of work Primary: “scope of work template free” (590/mo, KD 18). Supporting: “scope of work example,” “sow template,” “how to write a scope of work.” Content type: Template page with editable template. Priority: 2. Existing content: None.

How keyword gap analysis fits into content gap analysis

A keyword gap analysis is granular - individual search terms. A content gap analysis is broader - entire topic areas your site doesn’t cover.

Think of it this way: keyword gap analysis tells you which specific pages to create. Content gap analysis tells you which sections of your site are missing. You might discover through content gap analysis that you have nothing on “sales enablement” as a category. The keyword gap analysis then tells you the 15 specific articles to write within that category.

Run the content gap analysis first to set direction. Then use keyword gap analysis to fill in the specific targets.

Common mistakes that waste the data

Comparing against too many competitors. Three is ideal. Five is the max. Beyond that, the gap report becomes so broad it loses signal. You end up with keywords that only one obscure competitor ranks for - not real opportunities.

Ignoring search intent. A keyword like “proposal” (40,000/mo, KD 78) shows up in your gap. Ignore it. The intent is ambiguous, the difficulty is brutal, and ranking for it wouldn’t necessarily drive qualified traffic. Every keyword in your final list needs a clear intent you can match with a specific page type.

Never re-running the analysis. Your competitors publish new content. New competitors emerge. Run a fresh gap analysis each quarter. The keywords you ignored three months ago might look different now - maybe a competitor dropped off page one, or a new term spiked in volume.

Treating every gap as equal. A 200/mo keyword with KD 8 that directly relates to your product is worth more than a 2,000/mo keyword with KD 45 that’s tangentially related. The scoring step exists for a reason.

Turning this into a repeatable process

Keyword gap analysis shouldn’t be a one-off project. Build it into your quarterly planning:

  1. Pull fresh competitor data every quarter
  2. Filter using the same criteria (adjust thresholds as your domain grows)
  3. Score and prioritize the new gaps
  4. Cluster them into your existing content plan
  5. Track which gap-driven articles actually rank within 90 days

The keyword research tools that automate the clustering step save the most time here. The gap export and filtering take an hour. Manually clustering 200+ keywords into coherent topic groups takes a full day. That’s the bottleneck worth solving.

Over time, your gap shrinks. The first analysis might surface 280 opportunities. The second quarter, after you’ve published 15 to 20 gap-driven articles, it drops to 200. The third quarter, 140. That’s the trajectory you want - a shrinking gap means you’re catching and passing the competitors you benchmarked against.

Then you pick new competitors and start again.