What is ImageObject schema?
ImageObject is a structured data type defined by schema.org that describes a specific image in machine-readable JSON-LD. It is a subtype of MediaObject, which is itself a subtype of CreativeWork. When you add an ImageObject block to a page, you are telling Google — in a language it can parse without inference — exactly what the image shows, who made it, where it was taken, who owns the copyright, and what licence it carries.
A standard <img> tag with alt text gives Google a single sentence of context. An ImageObject block gives Google a structured record with up to 20 machine-readable fields. The difference in signal density is significant — and it is one of the primary reasons why some business images rank in Google Image Search and others do not.
ImageObject schema works in concert with EXIF metadata embedded in the image file. EXIF data travels with the file; ImageObject schema is declared on the page. Both are read by Google, but at different points in the crawl. For maximum entity signal strength, you need both layers working together.
Why ImageObject schema matters for local business SEO
Google's local ranking systems — the Map Pack, the Knowledge Panel, and Google Business Profile — are entity-based. Google needs to know that a specific image was created by a specific business at a specific location before it can use that image as a ranking signal. Without structured data, Google must infer these connections from surrounding text, file names, and alt attributes. With ImageObject schema, you state them explicitly.
For a plumber, this means that a photo of a completed job — with a properly structured ImageObject block declaring the creator as "Acme Plumbing Ltd", the location as "Manchester, UK", and the subject as "emergency boiler repair" — becomes a direct entity signal linking that image to the business's Knowledge Graph node. Google can then use that signal when ranking the business for local searches.
This is why unique, original business images outperform stock photos in local SEO. A stock photo has no creator, no location, no copyright owner — its ImageObject schema is empty by definition. An original image of your team, your premises, or your work can carry all of these signals.
The ImageObject properties Google actually uses
Schema.org defines over 40 properties for ImageObject. Google documents a subset of these as supported in its structured data features. The table below covers every property with confirmed or strongly implied Google support, in order of SEO importance.
| Property | Type | Purpose | Required? |
|---|---|---|---|
| contentUrl | URL | Absolute URL of the image file. Google fetches this to verify the image exists. | Required |
| name | Text | The image title — treated like an alt attribute by Google's indexing systems. | Required |
| description | Text | 1–2 sentence description of what the image shows. Indexed by Google. | Recommended |
| creator | Person / Organization | Who created the image. Used for attribution in image search and Knowledge Graph. | Recommended |
| copyrightNotice | Text | Copyright attribution string, e.g. '© 2026 Acme Plumbing Ltd'. | Recommended |
| creditText | Text | Credit line for display. Usually matches copyrightNotice. | Recommended |
| license | URL | URL of the image licence. Required for the 'Licensable' badge in Google Image Search. | Recommended |
| acquireLicensePage | URL | Where to request permission to use the image. Required for 'Licensable' badge. | Recommended |
| encodingFormat | Text | MIME type: image/jpeg, image/png, image/webp, etc. | Recommended |
| width | QuantitativeValue | Image width in pixels. Must match the actual file dimensions. | Recommended |
| height | QuantitativeValue | Image height in pixels. Must match the actual file dimensions. | Recommended |
| datePublished | Date | ISO 8601 date when the image was first published. | Recommended |
| locationCreated | Place | Where the image was taken. Nested Place with address and geo. Key local signal. | Recommended |
| contentLocation | Place | The depicted location (may differ from where photo was taken). | Optional |
| url | URL | The canonical URL of the page where the image appears. | Recommended |
A complete ImageObject JSON-LD example
The following example shows a complete, production-ready ImageObject block for a plumbing business. Every property has a value that mirrors visible page content — no invented facts. This is the standard LinkDaddy Media generates for every hardened image.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "ImageObject",
"contentUrl": "https://acmeplumbing.co.uk/images/boiler-repair-manchester-2026.jpg",
"url": "https://acmeplumbing.co.uk/services/boiler-repair",
"name": "Emergency boiler repair — Manchester city centre",
"description": "Acme Plumbing engineer replacing a faulty heat exchanger on a Vaillant boiler in a residential property in Manchester city centre, January 2026.",
"encodingFormat": "image/jpeg",
"width": { "@type": "QuantitativeValue", "value": 1200, "unitCode": "E37" },
"height": { "@type": "QuantitativeValue", "value": 800, "unitCode": "E37" },
"datePublished": "2026-01-15",
"creator": {
"@type": "Organization",
"name": "Acme Plumbing Ltd",
"url": "https://acmeplumbing.co.uk"
},
"copyrightNotice": "© 2026 Acme Plumbing Ltd. All rights reserved.",
"creditText": "© 2026 Acme Plumbing Ltd",
"license": "https://acmeplumbing.co.uk/image-licence",
"acquireLicensePage": "https://acmeplumbing.co.uk/contact",
"locationCreated": {
"@type": "Place",
"name": "Manchester City Centre",
"address": {
"@type": "PostalAddress",
"addressLocality": "Manchester",
"addressRegion": "Greater Manchester",
"addressCountry": "GB"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 53.4808,
"longitude": -2.2426
}
}
}
</script>Notice that contentUrl points to the image file and url points to the page. Both are required. The locationCreated block uses a nested GeoCoordinates object — this is the JSON-LD equivalent of the GPS EXIF fields, and it is the primary local entity signal in the schema stack.
For a deeper look at how the file-level signals complement this page-level schema, see the guide to what image SEO actually involves and how each layer of metadata contributes to Google's entity model.
How to implement ImageObject schema: step by step
The following process applies to any website — WordPress, Shopify, custom HTML, or a React SPA. The only variation is how you inject the <script> block into the page <head>.
Identify the image and its page context
Every ImageObject block must describe a specific image on a specific page. Gather: the absolute URL of the image file (contentUrl), the page URL where it appears (url), the image dimensions (width, height in pixels), and the file format (encodingFormat, e.g. image/jpeg).
Write a descriptive name and description
The 'name' property is the image's title — treat it like an alt attribute: concise, descriptive, keyword-bearing. The 'description' property is a 1–2 sentence expansion: what the image shows, who created it, and why it is relevant to the page topic. Both are indexed by Google.
Add creator and copyright fields
Set 'creator' to a nested Person or Organization object with the business name and URL. Set 'copyrightNotice' to your business name and year (e.g. '© 2026 Acme Plumbing Ltd'). Set 'creditText' to the same value. These three fields establish provenance and are used by Google's image licensing feature.
Add license and acquireLicensePage
For CC0 images, set 'license' to 'https://creativecommons.org/publicdomain/zero/1.0/'. For proprietary images, set it to your terms page URL. Set 'acquireLicensePage' to the URL where someone can request permission to use the image. Google surfaces these in the image search 'Licensable' badge.
Add GPS and location data
If the image was taken at a specific location (a job site, a business premises, a local landmark), add a 'locationCreated' property with a nested Place object containing the address and geo coordinates. This is the JSON-LD equivalent of EXIF GPS data and reinforces local entity signals.
Embed the JSON-LD block on the page
Add a <script type='application/ld+json'> block to the <head> of the page where the image appears. Do not use a generic sitewide block — each ImageObject must be on the page that contains the image. Multiple ImageObject blocks can appear on a single page (one per image).
Validate with Google's Rich Results Test
Paste the page URL into Google's Rich Results Test (search.google.com/test/rich-results). Check for errors and warnings. Common issues: missing required properties (contentUrl, name), relative URLs instead of absolute, and mismatched image dimensions.
The five most common ImageObject schema mistakes
Using relative URLs in contentUrl
contentUrl must be an absolute URL (https://...). A relative path like /images/photo.jpg will fail Google's validation. Always use the full absolute URL of the image file.
Putting the block in a sitewide header template
An ImageObject block must appear on the specific page where the image is displayed. A sitewide block in your header template will be ignored or flagged as spam. One block per image, on the page that contains it.
Omitting license and acquireLicensePage
These two properties are required for the 'Licensable' badge in Google Image Search. Without them, your images cannot earn the badge regardless of how well the rest of the schema is structured. For proprietary images, link to your terms page and contact page respectively.
Mismatched image dimensions
The width and height values in your schema must match the actual pixel dimensions of the image file. Google fetches the image to verify. A mismatch will cause a validation warning and may suppress the schema entirely.
No locationCreated for local businesses
This is the most impactful omission for local SEO. Without locationCreated, Google cannot use the image as a local entity signal. Every image of your premises, your team, or your work should have a locationCreated block with the full address and GPS coordinates.
ImageObject schema and Google Lens
Google Lens uses the same entity recognition infrastructure as Google Search. When a user photographs a business premises, a product, or a service professional, Lens attempts to identify the entity depicted. The creator, name, and locationCreated fields in your ImageObject schema are the primary signals Lens uses to connect a photographed image to a Knowledge Graph node.
For a plumber whose van is photographed by a potential customer, a well-structured ImageObject block on the plumber's website — with the van's image, the business name as creator, and the service area as locationCreated — creates a direct path from the photograph to the business's Google Business Profile. This is why image SEO for plumbers increasingly involves schema markup as well as EXIF data.
Frequently asked questions about ImageObject schema
- What is ImageObject schema and why does it matter for SEO?
- ImageObject schema is a structured data type from schema.org that describes a specific image in machine-readable JSON-LD. It tells Google the image's name, description, creator, copyright owner, license, dimensions, and location — information that is invisible in a standard <img> tag. Google uses this data to populate image search results, surface the 'Licensable' badge, attribute images to their creators, and build Knowledge Graph connections between images and the entities they depict. For local businesses, ImageObject schema is the JSON-LD equivalent of EXIF metadata: it makes your images legible to Google's entity recognition systems.
- What is the difference between ImageObject schema and EXIF metadata?
- EXIF metadata is embedded inside the image file itself — it travels with the file wherever it goes. ImageObject schema is declared in the HTML page that displays the image — it describes the image in context. Both serve Google, but they operate at different layers. EXIF data is read when Google crawls the image URL directly; ImageObject schema is read when Google crawls the page. For maximum signal strength, you need both: EXIF metadata baked into the file, and an ImageObject JSON-LD block on every page where the image appears. Using only one of the two leaves half the signal on the table.
- Which ImageObject properties does Google actually use?
- Google's documentation confirms it uses: contentUrl (the image file URL), name (the image title), description (the image caption), creator (the author or business), copyrightNotice (copyright attribution), license (the license URL), acquireLicensePage (where to request permission), encodingFormat (the MIME type), width and height (pixel dimensions), and datePublished. The 'Licensable' badge in Google Image Search specifically requires license and acquireLicensePage. The 'creator' and 'copyrightNotice' fields are used for the image attribution panel. Location-based fields (locationCreated, contentLocation) are used for local entity association.
- Can I use one ImageObject block for all images on a page?
- No. Each ImageObject block must describe exactly one image, and it must appear on the page where that image is displayed. A single JSON-LD block cannot describe multiple images — you need one block per image. If a page contains five images, it should have five separate ImageObject blocks in the <head>. Google validates each block against the actual image it references via the contentUrl property, so a generic sitewide block will fail validation.
- Does ImageObject schema help with Google Lens and visual search?
- Yes, directly. Google Lens uses the same entity recognition infrastructure as Google Search. When a user photographs a plumber's van, a restaurant frontage, or a product, Lens attempts to identify the business or entity depicted. ImageObject schema — particularly the creator, name, and locationCreated fields — provides the entity disambiguation signals that help Lens connect the image to the correct Knowledge Graph node. Businesses with well-structured ImageObject schema are significantly more likely to appear in Lens results for their category and location.
- How do I add ImageObject schema to a WordPress site?
- The most reliable method is to add the JSON-LD block manually to the page template using a plugin like WPCode or by editing the theme's single.php or page.php template. Yoast SEO and Rank Math both generate some ImageObject data automatically, but neither injects the full set of properties Google uses — particularly license, acquireLicensePage, copyrightNotice, and locationCreated. For complete coverage, use a custom JSON-LD block. LinkDaddy Media generates the complete, ready-to-paste ImageObject JSON-LD for every image you harden, including all required and recommended properties.
- What is the 'Licensable' badge in Google Image Search?
- The 'Licensable' badge is a label Google displays in Image Search results to indicate that an image has machine-readable license information. It appears when the ImageObject schema on the page includes both a 'license' property (the license URL) and an 'acquireLicensePage' property (a URL where users can request permission to use the image). Clicking the badge takes users to the license page. For CC0 images, the license URL is 'https://creativecommons.org/publicdomain/zero/1.0/'. The badge increases click-through rate from image search and signals to Google that the image is properly attributed.
- Does ImageObject schema affect Core Web Vitals or page speed?
- ImageObject schema is a small JSON-LD block in the page <head> — typically under 1KB per image. It has no measurable impact on Core Web Vitals (LCP, FID, CLS) or page load speed. The JSON-LD is parsed by Google's crawler, not by the browser's rendering engine, so it does not block rendering or add to the critical path. The only performance consideration is ensuring the image file itself is properly sized and served with correct width and height attributes — which are also required fields in a valid ImageObject block.