Google keeps a record of every search where it showed your site, and it shares most of that record with you in Search Console. Among those searches are questions your site almost answers. Google shows your site for them, usually low on the page and often with a page that only half fits, because nothing you have published is a clear match. Those are often the cheapest pages you can build, since your own data already shows the demand.
This module walks through where to click, how to read what you find, and what to do about each kind of result. The words used throughout: a query is what someone typed into Google. An impression is one time a link to your site appeared in the results. A click is a visit from that result. CTR (click-through rate) is clicks divided by impressions. Position is how high your result appeared, 1 being the top, averaged over all the times it was shown.
What the Performance report can and can't tell you
The Performance report for search results shows four numbers: total clicks, total impressions, average CTR and average position. Below the chart is a table you can group by Queries, Pages, Countries, Devices, Search appearance or Dates, using the tabs above it. By default it covers the last three months.
Four limits shape how you read it. Each comes from Google's help pages.
- The table shows at most 1,000 rows. Rare, long-tail searches can be missing from the table even though they count in the chart total.
- Some queries are anonymized: searches made very rarely are left out to protect privacy. They count in the chart totals but never appear as rows.
- The chart counts your whole site once per search. The table counts each page separately when you group by Pages. If two of your pages appear for one search, that is one impression in the chart and one impression for each page in the table. So the chart and table totals often disagree, and nothing is broken.
- Data usually arrives two to three days late.
The report also only shows one dimension at a time. It can tell you which queries a page gets, or which pages a query shows, but it can't print both side by side for every row. For that you need the Search Console API, where you can request query and page together, or an AI agent connected to it. Several open-source MCP servers (small connectors that give an agent tools) do this for Search Console.
Step by step in Search Console
Set aside 30 minutes the first time. After that it takes ten.
- Open Search Console and choose your property in the property selector.
- In the left menu, open Performance, then Search results.
- Click the date filter at the top. Keep Last 3 months for a first pass. Three months is enough data to be stable and recent enough to reflect your current pages.
- Above the chart, click the boxes for Total clicks, Total impressions, Average CTR and Average position so all four show in the chart and the table.
- Under the chart, open the Queries tab. Click the Impressions column heading to sort from most to least.
- Look for rows with many impressions and few clicks. Write them down, or use the Export button to download the chart and table data to a spreadsheet, which is easier to filter.
- To see which page Google showed for a query, click the query's row. The whole report now filters to that query. Open the Pages tab to see the URLs that appeared for it.
- Remove that filter with the x next to it at the top, and repeat for the next query worth checking.
Filters help you cut the list down. Click + Add filter, pick the query filter, and you can choose Queries containing, Queries not containing or Custom (regex). Matching ignores upper and lower case. A regular expression (regex) is a pattern that matches many queries at once. Google uses the RE2 syntax and matches anywhere in the query unless you anchor it with ^ (start) or $ (end). Two patterns worth saving:
Question-style searches (Custom regex, "Matches regex"):
^(how|what|why|which|when|can|does|is)\s
Leave out your brand (Custom regex, "Doesn't match regex"):
acme|acmebackupSearch Console also offers a built-in Branded and Non-branded filter under the query filter. It isn't available for sites with few impressions or for sub-properties such as a single folder. Where you have it, non-branded searches are where new people find you, so that is the list to mine.
Before you change anything, run one of the queries in Google yourself and look at what ranks. Keep in mind that results vary by place, device and search history, so your view will not match everyone's.
A worked example
Say you run the site for a hypothetical open-source backup tool called Acme Backup. You pull three months of data through the API with query and page together, and the interesting rows look like this:
| Query | Page shown | Clicks | Impressions | CTR | Position |
|---|---|---|---|---|---|
| acme backup | / | 410 | 1,900 | 21.6% | 1.2 |
| acme backup pricing | / | 30 | 300 | 10.0% | 1.9 |
| acme vs restic | /blog/why-we-built-acme | 6 | 2,300 | 0.3% | 11.4 |
| restic alternative | /blog/why-we-built-acme | 3 | 1,700 | 0.2% | 14.8 |
| backup postgres to s3 | /docs/postgres | 38 | 3,100 | 1.2% | 7.9 |
| how to back up postgres to s3 | /docs/postgres | 22 | 1,400 | 1.6% | 6.3 |
| postgres backup s3 cron | /docs/postgres | 9 | 800 | 1.1% | 9.2 |
| acme encryption | /docs/config | 14 | 520 | 2.7% | 4.1 |
| acme encryption | /docs/security | 5 | 480 | 1.0% | 6.8 |
| incremental backup linux | / | 1 | 2,600 | 0.04% | 38.0 |
The next step is grouping by intent. Intent is what the searcher is trying to get done: learn how to do something, compare options, find a specific product, or buy. Different wordings of the same need belong together, because one page should answer all of them.
- Brand searches ("acme backup", "acme backup pricing"). People already know you. The home page wins these at the top. Nothing to build.
- Comparison ("acme vs restic", "restic alternative"). 4,000 impressions and 9 clicks, at positions 11 to 15, shown with a blog post about why the project started. That post is only loosely related. Build a dedicated comparison page: an honest table of what each tool does, where each is the better choice, and the commands side by side.
- How-to (the three Postgres queries). One intent, the right page, positions 6 to 9, CTR around 1 to 2%. This page is in striking distance. Improve it rather than adding a second page.
- Two pages, one query ("acme encryption"). Two docs pages split 1,000 impressions almost evenly. That is the cannibalization pattern covered below.
- Broad and far ("incremental backup linux"). Position 38 with the home page, against large guides and vendor sites. Park it. Building depth on the how-to and comparison groups first gives you a better base to try for it later.
From ten rows you get one page to build, one to improve, one consolidation and one thing to deliberately ignore. That is a normal result.
Pages already close: striking distance and low CTR
Striking distance: positions 4 to 20
"Striking distance" is SEO shorthand for pages ranking just below the top results, around positions 4 to 20. They are the cheapest to move, because Google already shows them close to the top for those searches. A brand-new page has to earn that first.
To find them, use the Pages tab with the Average position column showing, or filter your export to positions 4 to 20 and sort by impressions. For each page:
- Click the page to filter the report to it, then open the Queries tab to see what it is shown for.
- Search the top two or three queries yourself and read the pages above you. Note what they answer that you don't.
- Put the direct answer near the top. For the Postgres guide, that means the working command in the first screen, before any background.
- Add a short section for each sub-question in the query list ("with cron", "to S3").
- Make the title match the main query in plain words.
- Add a few links from related pages on your own site, with anchor text that describes the target ("back up Postgres to S3", not "click here").
- If you have substantially updated the page, change its visible "last updated" date. If you haven't, leave the date alone.
Low CTR: fix what people see in the results
Some pages rank well but few people click them. Google's help suggests a direct check: select CTR as your metric, open the Pages tab and sort by CTR, lowest first. A low CTR, in Google's words, "can indicate that users see your page in Search results but don't think it answers their query."
Judge CTR against your own data, not a number from someone else's site. Compare a query with your other queries at similar positions. If most of your queries around position 2 have several times this one's CTR, this result is the problem. The usual fix is the title and the meta description (the short summary under the title in results).
The weak title repeats the brand and says nothing about the page. The strong one names the task in the searcher's words and mentions the brand once. Google's title guidance asks for exactly this: descriptive and concise, no repeated or boilerplate text, the brand kept short. Google writes its title links from several sources, including your <title>, headings and links to the page. It uses your meta description when it judges that the description is more accurate than text taken from the page itself. So write both for people, and judge the result by CTR over the next few weeks.
Two pages, one query: cannibalization
Keyword cannibalization means two or more of your pages compete for the same search. Neither becomes the clear answer, so Google may alternate between them, and links and attention are split.
To check a query, click it in the Queries tab and open Pages. One URL with nearly all the impressions is healthy. Two or more URLs with a real share each is worth a look. To see whether they take turns, add a date comparison (Compare tab in the date filter) and check if one page's impressions fell as the other's rose.
Then decide which case you are in (the same fix appears as strategy 5 in Eight SEO strategies that always work):
- Same intent. Both pages try to answer the same question, like the two encryption docs. Merge the better parts into one page, redirect the other URL to it with a permanent (301) redirect, and point your internal links at the survivor. Google's canonical documentation names redirects and
rel="canonical"as strong signals, and consolidating helps it combine the signals, such as links, from the duplicates onto one URL. - Different intents. One page explains a concept, the other is a how-to. Keep both, and make the difference obvious: distinct titles and headings, each page linking to the other for its own purpose.
Two of your pages appearing for one query is not always a problem. A home page and a product page can both show for a brand search and both earn clicks. Act when the split leaves both pages stuck below where one strong page would be. Google's starter guide is also clear that duplicate content is not a penalty in itself. Content reachable under several URLs is, in its words, "inefficient, but it's not something that will cause a manual action."
The decision table
| What you see | What it usually means | What to do |
|---|---|---|
| Many impressions, few clicks, a loosely related page shown, position 8 to 30 | You have no page for this intent | Build one page for the whole query group |
| Right page shown, position 4 to 20 | Relevant but not the best answer yet | Improve the page: answer first, sub-questions, internal links, title |
| Position 1 to 3, CTR well below your other top queries | The result doesn't look like the answer | Rewrite title and meta description; check what else appears on that results page |
| Two of your URLs share the impressions for one query | Cannibalization | Same intent: merge and redirect. Different intents: separate them clearly |
| Position 30 or worse on a broad query with strong competitors | You lack depth on the topic | Park it; build the closer groups first |
| A page's impressions and clicks fell against the previous period | Rankings or demand changed | Compare dates, check the cause before rewriting (see Read the growth curve) |
The traps are the same every time. One is building a thin page for every wording of a query: "acme vs restic", "restic vs acme" and "restic alternative" belong on one page. Another is chasing big, broad searches where Google doesn't see you yet, when the searches it already shows you for are waiting.
Before you act on an opportunity, run through this: