Google image SEO: reading the numbers in Search Console

Search Console reports images at the page level, not the image level. What that changes about optimizing for Google Images, and how to read the image search type without fooling yourself.

calendar_today schedule 7 min read
Christian Ehler Written by Christian Ehler
A gray plate seated in a machined tray on a dark panel, one slim blue thread running from it off the left edge of the frame

Most Google image SEO advice stops exactly where it gets interesting. Write descriptive alt text, name the file properly, put the image near relevant text — and then it stops, because the measurement half needs one fact that nobody leads with.

The fact is documented and short. Search Console does not report images — it reports the pages images sit on. Every image on a page shares a single row, and that one detail shapes what an image report can honestly show.

What follows is what Google says decides whether an image appears at all, how image performance is counted, and how to read it in the Performance report. The last section is where the numbers stop being able to answer the question you asked.

What Google image SEO actually controls

Google publishes the requirements, and they split cleanly in two: whether the image can be found and indexed, and what the page around it says. The first half is mechanical. The second half is where filenames and alt text live.

Mechanically, Google finds images in the src attribute of an img element and does not index CSS background images. The supported formats are BMP, GIF, JPEG, PNG, WebP, SVG and AVIF. An image sitemap adds URLs that might not be discovered otherwise, including images served from a CDN domain (Google Search Central, image SEO best practices, page last updated 2026-03-02, checked 2026-08-14).

The second half is the landing page. The same documentation says Google extracts the subject matter of an image from the content of the page, including captions and image titles, and reads the alt attribute alongside computer vision output. The filename, in Google’s own wording, gives very light clues.

info
None of that is a ranking promise

Google’s image documentation names inputs, never weights. Nobody outside Google can measure the share a filename or an alt attribute carries, and a page can lose its appearance in Google Images because of a layout change on Google’s side while nothing on your site moved. Optimize the inputs because they are cheap, checkable and read by people too — not because a number is guaranteed.

Which fields exist, where WordPress stores each of them, and what changing one costs afterwards are covered in the image SEO fundamentals behind these numbers. This article starts where that one ends.

Google image search SEO is counted per page, not per image

This is the sentence that reorganizes everything else, and Search Console’s own documentation states it plainly.

In search analytics data, an image is simply a link to the URL of the host page. This means that Search Console doesn’t distinguish between different images on the same page; all are considered identical links as far as clicks, impressions, and position are concerned.

Three consequences follow, and each one breaks a report somebody has already built. A query that surfaces four images from one gallery page records a single impression. Swapping a weak image for a better one on the same page produces no separate row to compare it against. And a page with one image and a page with two hundred look identical in the data.

Many images, one slot. The row belongs to the page, and every image on it reports through that row.

Clicks are narrower still. Clicking to expand a thumbnail is not counted; only a click that takes the person out of Google Search counts. A fully successful image result — seen, expanded, read — can therefore log an impression and no click, which is worth remembering before anyone reads image CTR as a quality score.

Which search type your numbers land in

Search Console splits performance by search type, and the split is sharper than most people assume. The Search Console API documents the image type as results from the Image tab in Google Search, and web as the combined All tab (Search Analytics query reference, page last updated 2026-08-11, checked 2026-08-14). A thumbnail shown inside the All tab is recorded on the web side.

The same page appears in both, and the two are never merged: Search Analytics records data for each search type separately and does not combine it. Each is a complete report of a different surface. Compare each against its own history rather than against the other, and a combined total stops being tempting.

Image search type against web search type
How it behaves Image type Web type
What it covers Results in the Image tab The combined All tab, thumbnails included
When an impression counts Only once the image has been scrolled into view When the result is in the current set, scrolled into view or not
How often per page Once per host page URL, however many images matched Once per page when grouped by page, even with several links to it
What position means Left to right, then top to bottom, with rows per screen width Top to bottom on the primary side, then the secondary side
What counts as a click A click that leaves Google Search — expanding a thumbnail does not A click that leaves Google Search
Which URL the row belongs to The canonical URL of the host page The canonical URL of the page
Two records of the same site, kept apart on purpose. Neither one is missing data the other has.

The practical effect is that an unfiltered Performance report is not image data. It opens on the web type, and a report screenshot with no search type filter in it is evidence of nothing about Google Images.

How to read image performance without fooling yourself

Reading the image search type in the Performance report

Six steps, and the third one is the one people skip. Nothing here needs a plugin or a paid tool.

schedule About 20 minutes, then monthly signal_cellular_alt Easy
  1. 1

    Switch the search type to Image

    Open the Performance report, click the search type filter and change Web to Image. Every number on the screen changes meaning at that moment. Take the habit of reading the filter chips before reading the chart.
  2. 2

    Choose a window long enough to be readable

    Image impressions are noisy day to day on a small library. I compare 3 months against the previous 3 months rather than 28 days, because a 28-day image window on a site with a few hundred images swings on a single day of unusual demand.
  3. 3

    Read the Pages dimension first, queries second

    Switch the table to Pages. That is the grain the data actually exists at. The Queries tab is real and useful, but a query row tells you what somebody searched, not which image on the page answered it.
  4. 4

    Compare a period, never a point

    Turn on comparison against the previous period of equal length. Read impressions and average position together: impressions up while position stays flat usually means more queries matched, not better ranking for the same ones.
  5. 5

    Give it weeks before you judge it

    Google has to recrawl the page, re-fetch the image and accumulate enough impressions for a trend. The newest data is preliminary and drawn as a dotted line on the chart, so reading the last two days is reading an estimate.
  6. 6

    Write down what changed and when

    Search Console has no annotation layer. A before-and-after window only means something if you know the date the change went live, and by the third month nobody remembers. A dated line in a text file is enough.

The two changes worth measuring first are the two that alter what Google reads from the image itself: the filename change you would measure first and the alt text whose effect you are measuring. Change one of them at a time on a given set of pages, or the window cannot tell them apart.

What the numbers cannot tell you

Per-image performance does not exist in Search Console, so no tool built on the API can show it. That includes every dashboard, every plugin and every agency report claiming an image-level score sourced from Google. The API returns rows keyed to host page URLs.

Average position in image results is softer than it looks. Position runs left to right and then top to bottom, and a wider screen fits more images per row, which is why the same position value describes a different place on different devices. Google’s own advice is to watch change in position over time as well as the absolute number.

A period against a period. A single number has a value and no direction, which is why one screenshot never settles an argument.
warning
A flat line is not always a failure

Image impressions depend on how often anyone searches for the thing your image shows. A page can improve on every input Google names and report the same impressions afterwards, because demand did not move. Compare the pages you changed against the pages you did not, on the same dates — that is the only control group a single site has.

Causation stays out of reach as well, and no length of window recovers it. A window shows that something moved; it never shows what moved it. Core updates, seasonality, a competitor deindexing a gallery and your own rename all land in the same chart, and the honest reading is a direction rather than a verdict.

Closing the loop on a library you cannot check by hand

Everything above runs in a browser for free. On a site with twenty pages that carry images, a bookmarked filtered view and a text file of dated changes is the entire measurement system. Adding software to that is pure overhead.

It stops scaling when the question changes. Once metadata is being written in batches, the question is no longer how one page did. It is which of the 300 pages touched last month moved, and the Performance report holds no record of which pages you touched. On the writing side of that job, Google’s own guidance is unusually direct.

If your site has thousands of images, you might want to consider automating the naming of the images.

The reporting side is the gap I built the Search Console screen in Image SEO Optimizer for. It connects through Google OAuth with the read-only webmasters.readonly scope, stores the tokens encrypted in wp_options using the WordPress security salts, and syncs performance rows into an infyp_gsc_data table in your own database. The API calls go from your site to Google.

There is one hop worth knowing about. The quick connect method routes the authorization step through an InfyPress proxy that holds the Google client secret, so that secret never ships inside plugin code. Choosing custom credentials instead, with your own Google OAuth client, removes the proxy from the flow entirely.

The sync itself is unglamorous and worth stating exactly. It runs twice daily on WP-Cron, pulls the last five days on each run and 30 days on first connection, and requests up to 25,000 rows — the maximum the API allows. Image rows are stored by date, page and query; web rows by date and page only. Rows older than 16 months are deleted on each run.

What the Search Console screen does, and what it does not

  • check Connects with a read-only Search Console scope and keeps the tokens encrypted in your own database
  • check Reports impressions, clicks, CTR and average position for 7 days, 28 days, 3 months, 6 months or 12 months
  • check Lists image queries and pages, and drills from one to the other
  • check Names the queries whose average position moved by more than half a place against the preceding period of equal length
  • close Shows per-image performance — Google does not publish it, so nothing built on the API can
  • close Changes anything about how Google ranks a page. It reads a report that already exists
  • close Generates an image sitemap. It reports the status of one Search Console already knows about
  • close Records which query drove a web-type row. That sync requests date and page only

Four limits are worth reading before you connect. The property you pick has to match the site’s own domain, so a different property cannot be tracked from inside this WordPress install. The sync asks Google for finalized data and stops at yesterday, so the current day is never in the table and recent rows still change on later runs.

The other two are quieter. The device and country columns exist in the table and stay empty, because the sync does not request those dimensions. Disconnecting revokes the token at Google and deletes the stored credentials, and it leaves the collected rows where they are.

Which pages are worth pointing at is a separate question. Coverage answers it, not Search Console: the Image SEO Stats dashboard counts how much of the library carries metadata, and how the SEO score is calculated explains what the per-image number rewards.

Both score structure rather than correctness. A fully scored image can still describe the wrong thing, which is why what the plugin writes to your media library is worth reading before a first batch.

Frequently asked questions

Weeks rather than days. Google has to recrawl the page, re-fetch the image and then accumulate enough impressions for a trend to separate from noise. The newest data in the report is preliminary and drawn as a dotted line, so the last day or two is an estimate rather than a result. On a library with modest traffic, judge the change at 4 to 8 weeks.
Usually because of how they are counted rather than how the images perform. One impression is recorded per host page URL no matter how many of that page’s images appear for the query, and the image search type covers the Image tab only. Thumbnails inside the combined All tab are recorded on the web side of the report.
No, and no tool can. Search Console attributes clicks, impressions and position to the canonical URL of the image’s host page and does not distinguish between different images on that page. Any product showing per-image ranking data is either inferring it or sourcing it somewhere other than Google.
No. Position in image results is counted left to right and then top to bottom, and a wider screen fits more images per row. The same value therefore sits in a different place on a phone than on a desktop. Google’s documentation says as much, and recommends watching change over time alongside the absolute number.
No. The Performance report answers every question in this article for free, and for a small site a bookmarked filtered view is enough. A plugin earns its place when metadata is changing in batches and the useful question becomes which of several hundred pages moved, which the report cannot answer on its own.
Connecting changes nothing about ranking. Search Console reports on what already happened, and the OAuth scope the plugin requests is read-only — it reads performance data and writes nothing back to Google. What moves rankings, if anything does, is the work you do after reading the report.

One thing to do after reading this: open the Performance report, switch the search type to Image, set the range to 3 months against the previous 3 months, and sort the Pages table by impressions. The pages at the top are where an hour spent on filenames and alt text has somewhere to land. Most sites have never looked at that list.

Image SEO Optimizer Pro

Read the image numbers beside the images

Image SEO Optimizer connects Google Search Console with a read-only scope and syncs image performance into your own database, beside the media library the numbers describe. It reads a report that already exists rather than changing one, and nothing is stored on InfyPress servers. Per-image performance is absent from that report for every tool, this one included.

Yearly Lifetime Best value

Free

Single-site license – ideal for personal blogs or small corporate websites

$0
Get Free

Personal

Single-site license – ideal for personal blogs or small websites.

$49 /year
  • check_circle 1 Site License
  • check_circle Bulk Processing
  • check_circle Image Context Generation
  • check_circle Real-time Upload Optimization
  • check_circle Best-in-Class AI Models
Get Personal
Most Popular

Freelancer

License for up to 10 sites – ideal for freelancers and developers.

$99 /year
  • check_circle 10 Sites License
  • check_circle Bulk Processing
  • check_circle Image Context Generation
  • check_circle Real-time Upload Optimization
  • check_circle Best-in-Class AI Models
Get Freelancer

Agency

Unlimited Sites – ideal for digital agencies and corporations.

$149 /year
  • check_circle Unlimited Sites
  • check_circle Bulk Processing
  • check_circle Image Context Generation
  • check_circle Real-time Upload Optimization
  • check_circle Best-in-Class AI Models
Get Agency
Share this article
Christian Ehler

I'm a WordPress developer and technical SEO — in search since 2010, currently traveling the world and working from wherever the coffee and wifi hold up. My focus is building WordPress apps on top of AI: automating the daily SEO workflows nobody has time for and preparing sites in depth for how AI-driven search reads the web. InfyPress is the first piece of that.

arrow_back Previous Alt text SEO: screen readers first, search engines second Next arrow_forward WCAG alt text: what 1.1.1 requires, and what a scan cannot check