Is this drop real? Search Console anomaly check
Google documents Search Console data anomalies — logging errors that change impressions, clicks or both for some dates — on a help page, not in your export. Its chart annotations do not show in Compare mode. Upload your export and this lists every documented anomaly that overlaps your dates, says what is safe to compare instead, and measures whether your own file carries Google's impressions logging error — which Google does not say.
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.
Real change, or Google's logging?
Every documented anomaly in your dates
Each with what it affects, what it does not, what is safe to compare instead, Google's own wording and a link to the source. Anything that only applies if your site had FAQ or job-posting results is marked “only if”, because an export cannot tell.
Measured in your file, not assumed
Google says impressions were not accurately reported from 13 May 2025 to 27 Apr 2026 and does not say whether your export still carries the old figures. Clicks were not affected, so this compares how impressions and clicks moved across 27 Apr 2026 in your own data.
Year-on-year guard
If your dates include any whose same date a year earlier falls in that period, a year-on-year comparison of impressions, CTR or average position compares unlike figures if your export still carries the old ones. Google does not say whether your export still carries the old figures, so the warning is conditional and reads your file's own measured step where there is one. Clicks were not affected by this error, apart from the separate job-listing gap for sites with job-posting results.
What to upload
In Search Console, open Performance and the report you want to check (Search results by default), set the dates, then Export → Download CSV and upload the ZIP. This tool reads the Dates table (or Chart) and the Filters file inside it. Google does not publish the export's exact headers, so columns are read by what they hold — a date column, clicks, impressions — not by name, and columns it does not know are ignored.
To measure across 27 Apr 2026 the file must include 28 whole days on each side: 30 Mar to 26 Apr and 28 Apr to 25 May 2026, at one row per day, with clicks and impressions both switched on. The newest day in a file is set aside, so the file has to run to 26 May 2026 or later. It also needs enough clicks: the chance band around the click change is within ±10 points only above about 770 clicks in each 28-day window (about 27 a day), and below that a small gap between impressions and clicks is “cannot tell”. Without them the anomaly list still works and the measurement says why it was not made.
Compare exports (Compare selected in Search Console) hold two periods and nothing that lines the days up, so no per-day measurement is possible. If the Filters file has written-out dates they are used to list the anomalies; if it only says something like “Last 3 months”, which is relative to a day the file does not record, the tool explains this and stops.
A table with both a Date and a Page column, from Data Studio (formerly Looker Studio), the API or a spreadsheet add-on, is accepted too, by adding the pages up per day, and the result says so.
What this cannot do
- Only documented anomalies. Google's page lists issues from the last 3–16 months. It was read on 30 Sep 2026; an issue older than that may no longer be listed on it, and anything newer is not here. No match is not proof the data is clean.
- The measurement is evidence, not proof. It says whether impressions moved when clicks did not (Google says clicks were not affected by the error). It does not say why, and a real change that moves impressions and clicks apart looks the same.
- The newest day in the file is never used, because Google says the newest data can be preliminary and a file does not record when it was exported.
- Dates are Pacific Time in every view except the 24-hour view, which Search Console shows in your local time. An hourly table is not read: export with the Dates tab set to days.
- The 1,000-row limit Google documents for tables does not bind the Dates table, which has at most about 490 daily rows (Search Console shows up to 16 months).
Google's documented anomalies, as of 30 Sep 2026
Copied from Google's data anomalies page, which lists known issues in the last 3–16 months. Quotes are Google's words. Dates are as Google gives them. Where Google does not say which report an entry is about, the Report column says so and the entry is read as Search results.
| When | Report | What happened | Affects | Google says |
|---|---|---|---|---|
| 13 May 2025 to 27 Apr 2026 | Search results Google does not say which report; read as Search results. | Impressions logging error. A logging error meant impressions were not accurately reported for this whole period. The issue is resolved, and Google says that as a result impressions may now read lower. Only impressions and the metrics derived from them (CTR, average position) were affected. Safe to compare instead: Compare clicks, which this error did not affect (the separate job-listing gap did affect clicks, for sites with job-posting results). Do not compare impressions, CTR or average position across 13 May 2025 or across 27 Apr 2026, or between a date inside this period and one outside it, unless your own file shows no impressions-only step across those dates (this tool measures that where your file allows; Google does not say whether an export you download today still carries the old figures). Google’s heading for this entry is “April 3”; its text gives 27 Apr 2026 as the end of the period, which is what this tool uses. | impressions, CTR, average position not clicks | “you may notice a decrease in impressions” |
| 16 Apr 2026 to 27 Apr 2026 | Search results (job listings) Google does not say which report; read as Search results. | Job listing and Job details missing. Impressions and clicks for the "Job listing" and "Job details" search appearances were not reported for these days. (only if your site had job-posting results.) Safe to compare instead: Leave these days out of any comparison that includes job-posting results, or compare only pages that carry no job markup. | impressions, clicks | “prevented Search Console from reporting impressions and clicks” |
| 7 May 2026 onward | Search results (FAQ rich results) Google does not say which report; read as Search results. | FAQ rich results no longer shown. Google stopped showing FAQ rich results in Search from this date, so impressions for FAQ results drop. This is a change in what Google shows, not a data error, and it does not end. (only if your site had FAQ rich results.) Safe to compare instead: Compare impressions only for pages that never had FAQ rich results, and do not compare them across 7 May 2026 for pages that did. Google does not say whether clicks changed, so do not assume they did not. Do not read the drop as lost interest. | impressions | “FAQ rich results are no longer appearing in Google Search” |
| 7 May 2026 to 8 May 2026 | Discover | Discover under-reported. A logging error under-reported Discover clicks and impressions on these days. Safe to compare instead: Treat these days as missing in a Discover comparison and compare the days either side. | clicks, impressions | “a decrease in clicks and impressions for the Discover report” |
| 21 May 2026 | Discover | Discover under-reported. A logging error under-reported Discover clicks and impressions on this day. Safe to compare instead: Treat this day as missing in a Discover comparison. | clicks, impressions | “a decrease in clicks and impressions on the Discover performance report” |
| 24 Jun 2026 | Discover | Discover under-reported. A logging error under-reported Discover clicks and impressions on this day. Safe to compare instead: Treat this day as missing in a Discover comparison. | clicks, impressions | “a decrease in clicks and impressions on the Discover performance report” |
| 24 Jun 2026 | Generative AI report (Discover) | Generative AI in Discover under-reported. The same logging error under-reported impressions in the Generative AI performance report for Discover, for properties that have it. Safe to compare instead: Treat this day as missing. | impressions | “this error also caused a decrease in reported impressions” |
| 13 Aug 2026 | Discover | Discover under-reported. A logging error under-reported Discover clicks and impressions on this day. Safe to compare instead: Treat this day as missing in a Discover comparison. | clicks, impressions | “a decrease in clicks and impressions on the Discover performance report” |
| 13 Aug 2026 | Generative AI report (Discover) | Generative AI in Discover under-reported. The same logging error under-reported impressions in the Generative AI performance report for Discover, for properties that have it. Safe to compare instead: Treat this day as missing. | impressions | “this error also caused a decrease in reported impressions” |
| 13 Aug 2026 to 17 Aug 2026 | Generative AI report (Search) | Generative AI in Search under-reported, then restored. A logging error under-reported impressions in the Generative AI performance report for Search on these days. Google updated the entry on 21 Aug to say the missing data was restored, so an export made before 21 Aug may still carry the dip and one made after should not. Safe to compare instead: Export again, or leave these five days out of weekly sums and before/after comparisons. | impressions | “Missing data for this period has been restored” Updated 21 Aug 2026: restored. |
| 28 Feb 2026 to 1 Mar 2026 | BigQuery bulk data export | Two days missing from bulk data exports. For some properties these two days are missing from the Bulk data exports (the BigQuery export), and Google says this data will not be recovered. Google names only the bulk exports: it does not say whether the Performance report is affected. (only for some properties, and only in the BigQuery bulk export.) Safe to compare instead: Do not read these two days as zero traffic: leave them out of any comparison made from the bulk export, or check the same days in the Performance report, which Google does not say is affected. | clicks, impressions | “are missing from the Bulk data exports for some properties” |
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 check, 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 one thing that leaves the page's
memory is the summary you click to copy.
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/anomaly-check.js, in the table in anomalies.js, or (for the 13–17 Aug test) in ai-report.js; the read-size limit is in tool-ui.js. The project's tests compare the numbers quoted here with those constants; that is a check on the numbers, and not on every sentence. They are judgement calls, and they are the owner's to change.
- Which anomalies are shown
- An entry is shown when its dates overlap the dates in your file, and only for the report you are checking: Search results entries (including FAQ and job-listing appearances) for Search results, Discover entries for Discover, and so on. Google files its Performance entries under one “Search results / Discover / Google News” heading and names the report in only some of them: the impressions logging error, the FAQ change and the job-listing gap are treated as Search results because Google does not say otherwise, and the table marks them. For a Discover, Google News or bulk-export file that overlaps the logging error's dates, the result says Google does not say which of those reports the entry covers. With no Filters file the report is assumed to be Search results and the result says so.
- Which report
- Your choice in the selector wins. Otherwise the Filters file decides if it says Discover, Google News or names the generative AI report under a heading this tool does not fill in for you; a query or page filter that happens to say “ai mode” or “discover” is a filter, not the report. A Filters file that only says Web does not settle it, because the Generative AI report draws on the Web search type, so Search results is assumed.
- The measured step
- Mean daily impressions and mean daily clicks over the 28 days before the boundary day against the 28 days after it, the boundary day itself set aside. 28 days is four whole weeks, so every weekday appears four times on each side and the weekday mix cancels. The boundaries are 27 Apr 2026, where Google's fix lands and impressions are expected to read lower, and 13 May 2025, where the error began and impressions are expected to read higher (the direction there is this tool's inference from Google's note, which says only that impressions were not accurately reported); each is measured only if it is inside your dates. The 13 May 2025 step needs days from 15 Apr 2025, which Search Console may no longer show (it shows up to 16 months), and the result says so when it is given today's date. A day with no row and the file's newest day are not counted, and dates that appear more than once are not used, because their rows were added together; with fewer than 28 days on either side nothing is computed. A file has to run to the day after the last day of the after-window (26 May 2026 for the 27 Apr step), because its newest day is set aside.
- The rule
- The change in impressions minus the change in clicks, in percentage points. Clicks are counts, so their change carries chance: the ±1.96 standard-error band of the click change (Poisson counts, which understates real noise; its width assumes clicks did not fall, so it does not narrow when they happen to, and it widens when they rose) is worked out from the totals. Under 10 points, and with the click change measured to within ±10 points: the file does not show the logging step, which means no impressions-only step of 10 points or more. A gap inside the band, or under 10 points with a band wider than ±10 points, is “cannot tell”. A gap of 10 points or more that is also beyond the band is a verdict even when the band is wider than ±10 points; exactly 10 points counts as 10 points, in the gap and in the change in impressions alike. 10 points or more in the direction Google describes: consistent with the logging fix, provided impressions themselves also moved by at least 10 points in that direction; if impressions moved by less than that, or the other way, the result is “not called the logging step”, whether or not clicks moved, because a movement under 10 points is under the size this tool counts as a step. 10 points or more the other way: not the logging step. With a band wider than ±10 points either of those two results may be nothing but chance. The 10 points are a line this tool draws and not a cliff in the evidence: a file just under it and one just over it differ little. The measure is a proxy, and a real change that moves impressions and clicks apart would look the same. The band is within ±10 points only above about 770 clicks in each 28-day window (about 27 a day); below that a small gap is “cannot tell” and only a large one gets a verdict.
- Other anomalies in the same windows
- Entries that overlap the two 28-day windows, such as the FAQ change from 7 May 2026 or the job-listing gap from 16 Apr 2026, are named under the measurement, because where they apply they move impressions on their own. An entry that moves impressions and is not said to move clicks (the FAQ change) is named beside the verdict itself, because it looks the same and this check cannot separate the two.
- The April 3 entry
- Google's heading for it reads April 3, and its text says impressions were not accurately reported from 13 May 2025 until 27 April 2026. The text is used. If the true end were earlier, a measured “does not show the step” would be misread as an export that already carries the corrected figures.
- Year on year
- A warning when any date in your file falls from 13 May 2026 to 27 Apr 2027 (its year-earlier date is inside 13 May 2025 to 27 Apr 2026), or falls inside 13 May 2025 to 27 Apr 2026 itself. Whether a comparison across them is unreliable depends on whether your export still carries the old figures, which Google does not say: the warning is worded as conditional, and where your file has a measured step it says what that step shows (a step consistent with the error, which is evidence and not proof: unreliable if it is the old figures, and it names an impressions-only entry in the windows that could be the cause; no impressions-only step of 10 points or more: may be fine; one boundary stepped and the other flat: the two measurements disagree and the line says so). Impressions, CTR and average position are the metrics affected; clicks were not affected by this error, apart from the separate job-listing gap that applies only to sites with job-posting results.
- Generative AI in Search, 13–17 Aug 2026
- Each of the five days is compared with the same weekday in the 7 days before and the 7 days after; a day is tested only when that figure is at least 60 impressions, and at least 3 of the five days must be testable. If every tested day is under 60% of it, the file is read as the under-count Google logged for those dates, which it says in an update of 21 Aug was restored; dates that appear more than once are not used here either. The 60% line is set for counting noise only: a site with more day-to-day variation than that will see “not called either way” more often, and a real dip is sometimes not called.
- What is read
- A choice of files totalling more than 64 MB is not opened. A row with a negative or fractional impressions or clicks value is not used. Google says a value Search Console shows as ~ or - is written as 0 in its download, so an export carries zeros there; a table copied from the screen or from Data Studio still has the ~ or -, which is not a number, and that row is skipped and named under “What the parser could not read” and is not read as 0, so the day it was for has no row (and a measurement that needed that day says so). An empty clicks or impressions cell is read as 0 and named in the notes. A date after today (Pacific Time) is warned about. A table whose dates carry a time of day (an hourly table, which Search Console offers only in its 24-hour view, in your local time) is refused with a sentence that says to export with the Dates tab set to days.
- Coverage
- If your file starts earlier than 16 months before 30 Sep 2026, the result says that events before then may not be in the table.