Search Console’s Performance report is a ledger, not a brief. The opportunity work lives in the export: queries stuck just off page one, two URLs splitting the same query, pages whose CTR sits under the curve for their average position, and content that used to earn impressions and no longer does.
This free analyzer takes a Performance CSV (Queries and/or Pages — or a Queries + Pages export when you have one) and runs four client-side cuts in your browser: striking distance (average position roughly 4–20), keyword cannibalization, a CTR-vs-position curve with under-performers called out, and content / page decay when your file covers enough of a comparison window. There is no login, nothing is uploaded to SiteLine, and the tool never connects to your Search Console account. Your rows stay on the device that opened the page.
When you want the same opportunity views on a rolling archive — without re-exporting every month — SiteLine keeps a GSC history warehouse (about 16 months backfilled on connect, up to 25k rows/day/report, retained while you subscribe) next to cookieless analytics, with read-only MCP for agents. Start a 7-day trial (no card) · Pricing from $4.99/mo.
How to use the analyzer
- In Search Console → Performance → Search results, set the date range you care about (often last 28 days, or two comparable periods for decay).
- Export Queries and Pages (or a Queries + Pages export). Prefer the fullest file you can get — the UI caps named rows around 1,000; see export more than 1,000 rows.
- Drop the CSV(s) into the tool above. Confirm columns map to query / page / clicks / impressions / CTR / position.
- Read the four panels: striking distance, cannibalization, CTR curve, decay.
- Copy the lists you will action, then close the tab. Nothing was stored server-side.
What each analysis means
Striking distance (positions ~4–20)
Queries that already earn impressions but average between roughly position 4 and 20 are the classic “small ranking gain → real clicks” set. Rows are ordered by opportunity size (usually impressions), with average position and CTR so you can tell a query that ranks well but is not clicked from one that simply sits too low.
Position is impressions-weighted over the whole range — a query “at 8” may have been 3 on some days and 15 on others. The export is a sample of the head, not every named query Google holds. Raise a minimum-impressions floor on busy sites so noise does not fill the list.
Keyword cannibalization
When two or more pages show meaningful impressions for the same query, Google is choosing (or switching) winners. The analyzer flags query → multi-page clusters from a Queries + Pages shaped export so you can consolidate, canonicalize, differentiate intent, or leave a deliberate hub/spoke alone.
Not every overlap is a bug. Brand navigational queries and genuine category vs product splits often look like “cannibalization” in a spreadsheet and are correct in the SERP. Treat the list as a review queue, not an auto-merge script.
CTR vs position curve
Bucket CTR by average position for your own queries, then highlight rows whose CTR sits clearly under the curve for that band. Those are title/meta, rich-result, or intent-mismatch candidates — not always “rank higher” work. Use your export as the baseline; do not paste a blog’s industry CTR table as law.
Content / page decay
If the CSV (or a pair of exports) lets the tool compare an earlier window to a later one, decay surfaces pages or queries whose impressions or clicks fell hard while the rest of the site held — the refresh / broken-link / lost-ranking queue. A single one-shot export can only approximate decay; honest period-over-period movers need two ranges or a warehouse — year-over-year Search Console.
Step-by-step: get a useful CSV out of GSC
- Property → Performance → Search results → Web (unless you intentionally want Image/Video/News).
- Pick dates that are closed enough — recent days revise; do not treat yesterday as final.
- Export Queries, then Pages. For cannibalization, also export with Queries and Pages when available.
- Prefer API / Sheets with a raised
rowLimitwhen the UI’s ~1,000-row table is truncated — export guide. - Remember the rolling ~16-month window: exports only see days Google still serves. Days that aged out are gone — When does Google delete Search Console data? · GSC data expiry calculator.
When a free CSV pass is not enough
One export answers “what should we fix this sprint?” It is weak as a system of record: you re-download every month, UI exports stay capped, month-17 year-over-year is empty if you never archived, and agents cannot reliably re-run ad-hoc spreadsheet cuts.
SiteLine’s job: connect once with webmasters.readonly, backfill about 16 months of what Google still holds (capped by property age), keep importing up to 25k rows/day/report, retain imported days while you subscribe, and query striking distance, movers, and page/query cuts over MCP without write tools. Cookieless product analytics sits beside the GSC archive. Compare options in Best Google Search Console history tools. Setup: Connect Google Search Console to SiteLine.
Start free for 7 days — no card · See pricing from $4.99/mo · MCP overview · Register with MCP intent
Related free tools: GSC data expiry calculator · GSC regex builder · All free tools
FAQ
Does this tool upload my Search Console CSV to SiteLine?
No. Parsing and analysis run in your browser. The file is not sent to SiteLine’s servers, and the tool does not OAuth into Search Console. Close the tab when you are done.
Which CSV export should I use?
Start with Performance Queries and Pages exports for the same date range. For cannibalization, a Queries + Pages (or equivalent joined) export is ideal. Chart totals can include anonymised rows the table never names — do not expect CSV sums to match the headline.
What is “striking distance” here?
Queries with enough impressions whose average position sits roughly between 4 and 20 — close enough that a modest ranking improvement can unlock clicks. Defaults are tunable in the UI; the band is a planning heuristic, not a Google product name.
Can the analyzer recover data older than 16 months?
No. It only scores the rows in the file you provide. Once Google drops a day from the ~16-month window, neither the UI nor the API returns it. Archive while the day still exists — expiry calculator, deletion guide.
Why do cannibalization flags sometimes look wrong?
Multiple URLs can legitimately rank for one query (brand, category vs SKU, international). The tool surfaces overlap for human review; it does not auto-decide consolidations.
How is SiteLine different from uploading a CSV here?
This tool is a one-shot, private spreadsheet brain. SiteLine stores the live window (and later days) in a hosted archive — ~16-month backfill, 25k rows/day/report, retention while subscribed — with cookieless analytics and read-only MCP so opportunity views run without another export. Trial is 7 days, no card; plans from $4.99/mo.
Will regex filters in GSC replace this analyzer?
No. Regex slices the live Performance view by pattern. This analyzer scores an export for opportunity types (striking distance, cannibalization, CTR gaps, decay). Use both: regex to isolate a segment, CSV (or SiteLine) to prioritise what to fix inside it.