Reads a Google Search Console export of queries or pages and lists where a small change can win clicks: results that are seen a lot and rarely clicked, queries stuck on page two, and pages that lost traffic. For anyone who owns a site's search performance.
How to use it
In Search Console, open Performance → Search results, choose a period, and use Export → Download CSV. Add the Queries or Pages file here; the analysis runs in your browser and the file is never uploaded.
- Export the Queries or Pages table for the period you care about and drop the file into the first box.
- To find lost traffic, export the same table for the earlier period and add it to the second box.
- If the columns aren't recognised, choose which column is clicks, impressions and the query or page.
- Press Run check and work from the top: each finding lists the rows, with their numbers, and what to do.
How Reavlo tests this
The file is decoded and read in your browser, in a background worker, so a large file doesn't freeze the page. Files up to 25 MB are accepted. In testing, an export of 100,000 rows is read and analyzed in a few seconds on an ordinary laptop.
Reading the file. UTF-8 and UTF-16 files are recognised, as are comma, semicolon, tab and pipe separators. Search Console writes numbers the way your account's language does (1,234.5 or 1.234,5), and both are understood. The click-through rate is always recomputed as clicks ÷ impressions, so the CTR column of the file isn't needed. Rows that can't be read (a quote that never closes, the wrong number of columns, text where a number should be) are listed with their line number and left out; the rest of the file is still analyzed, and the result says how many rows were skipped.
Thresholds are fixed numbers, shown under every result so you can judge them:
- Low click-through: at least 100 impressions and a click-through rate under 2%.
- Page two: an average position from 11 to 20, with at least 50 impressions.
- Lost traffic: between the earlier and the current export, a row lost at least 30% of its clicks and at least 10 clicks. A row missing from the current export counts as having 0 clicks. Rows are matched by their exact text, so a query and a page are never compared with each other.
| Rule | Severity | What fails it |
|---|---|---|
gsc.ctr.low-on-high-impressions | Warning | A row has at least the minimum impressions and a click-through rate below the declared threshold |
gsc.position.page-two | Info | A row has an average position inside the declared page-two range and enough impressions |
gsc.traffic.lost | Critical | A row lost at least the declared share of its clicks and the declared number of clicks between the two exports |
gsc.rows.unreadable | Info | A row has a different number of columns than the header, a broken quote, or text where clicks or impressions should be |
Limits. An export is a sample: Search Console limits the rows it exports and hides rare queries, so totals here can be lower than the totals shown in Search Console. Average position is an average over every time a result was shown, and clicks are not corrected for seasonality, so a drop can be a normal dip. The analysis doesn't open your pages or know why a row changed.
Questions
Is my file uploaded?
No. The file is read and analyzed in your browser, and nothing from it is sent to a server or stored. If Google Analytics is enabled on this site, it only records that the tool ran, never your file or what is in it.
Which export do I need?
The Queries or the Pages table from the Performance report, as a CSV. Add two exports of the same kind, for two periods, to find lost traffic. If the export has other columns, they are ignored.
Why do the totals differ from Search Console?
Exports contain a limited number of rows, and Search Console leaves out very rare queries for privacy. The numbers here add up what is in your file.
Why is a row skipped?
A row is skipped when it can't be read as a table row. The result lists the line numbers so you can check them in the file. Exporting again without editing the file in a spreadsheet usually fixes it.