Hidden query share
The Queries table in Search Console leaves out anonymized queries and stops at 1,000 rows, while the chart total includes everything. Drop your Performance export here and see what share of your clicks and of your impressions is in no query row at all. That share mixes anonymized queries with rows Google does not show, so it is given as an upper bound, with or without a full table, and labelled as one.
Your file never leaves your browser. It is read by JavaScript in this tab; there is no upload, and this page's security policy blocks fetch, XHR, WebSocket, EventSource and beacon calls and form posts.
The traffic the Queries table cannot show
The gap, measured
The chart's total, minus what the query rows add up to, as a share of the chart's total: one figure for clicks and one for impressions, from your own export. No industry average is used, because the share differs from site to site.
An upper bound, said so
Google's table stops at 1,000 rows, and Google also says it stores and shows only the most important rows. So the gap holds anonymized queries and rows the table does not show, whether or not yours reaches the limit, and the file cannot say how it divides. The figure is "up to", and so is every sentence about it.
Counted the same way, checked
Google says the chart and a Queries table are both aggregated by property, so in an unfiltered export the two are counted alike. With a page or search appearance filter they are not, and with a query filter the chart leaves anonymized queries out too. Those exports are refused, not measured.
What to upload
The whole Performance export. In Search Console, open Performance, then Search results, choose a date range, and use
Export, then Download CSV. Upload the ZIP. It holds the daily table, which the ZIP names Dates.csv or, in newer exports,
Chart.csv, and the Queries table, Queries.csv. You can also choose those two CSV files together. Google says the export carries both the chart and the
table data, and that a value shown as ~ or - in the report is a zero in the download.
Take it with no query, page or search appearance filter. Search type, country and device filters apply to both tables alike and are fine. The ZIP's Filters.csv is read, and an export that shows one of the three that change what a total means is refused with the reason. The tool reads the name of a search appearance filter in English only, and a Query or Page filter in the languages the parser knows.
The daily table must have one row per day: its sum is the chart total, since Google's file has no total row. A weekly or monthly table, and a table taken with Compare, are refused.
What the gap is, and is not
- Three reasons, on Google's own pages. Google's troubleshooting page for the Performance report lists why chart and table totals differ: aggregation when a page or search appearance filter is on, the table's limit of 1,000 rows (rare or long-tail rows may be left out of the table but are in the chart total), anonymized queries (left out of the table but counted in the chart totals unless a query filter is applied), and the match totals under a page or query filter. Its page on dimensions and data groupings adds data truncation: due to internal limitations, Search Console stores and shows only the most important rows, so not all queries beyond the anonymized ones are in the table. With no filter that changes aggregation, the gap is anonymized queries plus truncation, and at the limit also the rows the limit cut.
- Google does not say how much is truncated. Nothing in the file or on the Google pages cited here splits the gap between anonymized queries and truncated rows, so this page does not. The share is an upper bound whether or not the table reaches the limit, and it is the share in no query row, not a count of anonymized queries.
- At the limit, one more reason. A table of exactly 1,000 rows may or may not have had rows cut by the limit, and the file cannot say. It is treated as cut, and the wording says so.
- Which queries. The file cannot say which queries are hidden, or how many. The Google pages cited here give no rule by which a query is called rare, so this tool does not guess one.
- Impressions and clicks differ. Each is measured on its own. The two shares are usually not equal, and neither implies the other.
- One export. The two tables must come from the same export, over the same dates and filters. A queries table that adds up to more than the chart is refused, since that cannot happen within one export.
- Pacific Time and preliminary days. Dates in an export are Pacific Time. Google says the newest data can be preliminary, so for a range that runs up to today the shares can still move.
What happens to your file
Nothing leaves your browser. The file is read by JavaScript running in this tab and parsed in memory; it is not uploaded, there is no copy on a server, and nothing from it is written to a cookie or to local storage (the theme switch remembers light or dark and nothing else). The page loads no analytics and no third-party scripts.
You do not have to take our word for it. Open your browser's developer tools, choose the Network tab, run a measurement, and
watch it make no request. Two things back that up. This page carries a content security policy, readable in its source,
that blocks fetch, XHR, WebSocket, EventSource and beacon calls (connect-src 'none') and form posts
(form-action 'none'), and allows images only as inline data: URIs. A content security policy
does not cover every browser feature (WebRTC, for one), so the second check matters: the project's tests read this page's
own script and every module it imports, and fail on any of the browser's network APIs.
The site-wide script penlid.js, which every page loads, contains network calls for the signed-in app's
account switcher. This page never calls it, and a test checks that those calls sit only inside the switcher.
Methods: the rules and thresholds
Each number below is a constant in public/assets/lib/series-tools.js. The project's tests compare the numbers quoted here with those constants. They are judgement calls, and the one that is Google's is marked.
- Reading the files
- A table is recognised by its columns, not its name. The daily table needs a date column with both clicks and impressions; the queries table needs a query column with both. Of two tables of one kind the one with more rows is read and the other is named. A row with a negative or fractional count is not counted, and is named. A row whose whole query text is a summary label such as "Grand total" or "Total", and that is at least as large as every other row, is not a query: it is left out of the sums and of the row count, and named. A query that appears twice refuses the file, because Search Console lists each query once and a sum over a table pasted twice would be wrong. A day that appears twice in the daily table, or a day missing from it, refuses the file, because the chart total is the sum of its rows.
- The gap
- One minus the query rows' total over the chart total, separately for clicks and for impressions. A queries table that adds up to more than the chart is refused. With no clicks in the chart there is no share of clicks to give.
- Upper bound
- Every share is called an upper bound on the anonymized share, with a table under 1,000 rows as well as one at the limit, because Google also truncates rows and does not say how many. A queries table of 1,000 rows or more (Google's documented limit) is also treated as possibly cut by the limit, and the wording says so. The number of rows is the table's, counting rows that could not be used but not a summary row or a blank line.
- Refused by the Filters file
- A Query filter (Google leaves anonymized queries out of the chart total when one is applied), and a Page or Search appearance filter (Google says the chart and table are then aggregated differently), in the Filters file of the daily table or of the queries table. Two files exported under different filters are refused. Without a Filters file the page says it cannot know, and when only one of two files has one it says so.
- Small totals
- When the chart holds under 100 clicks, the page notes that one click moves the share by whole percentage points.
Sources
Every statement about Google on this page comes from one of these pages, each read on 21 Oct 2026.
- Performance report (Search results): troubleshooting data discrepancies
- Performance report (Search results): dimensions and data groupings (anonymized queries, data truncation)
- Performance report (Search results): overview, how the chart and the table are aggregated
- Export data directly from a Search Console report