Skip to content
Issue docs

No ImageObject schema inside Article or Product

Importantimageobject_schema_embeddedIssue 105

What is this issue?

This issue reports a nested ImageObject block your page already declares — inside an Article-family or Product schema's image property — that is missing contentUrl. It does not report a schema whose image is written as a bare URL string, or one with no image declared at all.

What this issue is not:

  • It does not apply when image is a plain string — that is valid schema.org markup with nothing to validate.
  • It does not check width/height here. An ImageObject's dimensions are validated as part of its parent schema: the Article rich-result rule (#92) or the Organization logo rule (#89).

Why it matters

ImageObject schema enhances image SEO and discoverability:

  • Google Image rich results: Images with proper schema are eligible for badges, captions, and enhanced display
  • AI search citations: AI engines like ChatGPT and Bard use ImageObject metadata to properly attribute and describe images
  • Licensing clarity: license property helps search engines understand image usage rights
  • Accessibility: caption and description improve screen reader experience
  • Dimension information: width and height help browsers reserve space and prevent layout shifts

Resolving this issue improves your overall SEO health score by ensuring images are properly structured for maximum visibility and understanding.

How to fix it

If this issue was raised, your page already declares an ImageObject nested inside an Article-family or Product schema that is missing contentUrl — open the finding for which parent it sits in. A plain image URL string is valid markup and is never reported; the steps below are for a page that has chosen to use the richer ImageObject form and needs contentUrl added.

  1. Find the nested ImageObject: check the image property of your Article, Product, Recipe, VideoObject or NewsArticle schema

  2. Add contentUrl — this is the property PixyScan's check requires, not url:

    {
      "@context": "https://schema.org",
      "@type": "Article",
      "headline": "Blog Post Title",
      "image": {
        "@type": "ImageObject",
        "contentUrl": "https://example.com/photo.jpg",
        "width": 1200,
        "height": 630,
        "caption": "Description of the image"
      }
    }
  3. Include recommended properties:

    • contentUrl (required by this check)
    • width and height in pixels — required for the parent's own rich-result dimension rule (Article: #92, Organization logo: #89)
    • caption (recommended for accessibility)
  4. Or keep it simple: a bare URL string ("image": "https://example.com/photo.jpg") is valid schema.org markup and is never reported by this check.

  5. Validate with Google's Rich Results Test

Examples

Example 1: A Bare Image URL — Not This Issue

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "SEO Best Practices Guide",
  "image": "https://example.com/images/seo-guide.jpg"
}

Nothing is reported here. A plain URL string is valid schema.org markup with nothing for this check to examine — it only runs once image is written as an ImageObject object.

Example 2: A Well-Formed Nested ImageObject (passes)

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "SEO Best Practices Guide",
  "image": {
    "@type": "ImageObject",
    "contentUrl": "https://example.com/images/seo-guide.jpg",
    "width": 1200,
    "height": 630,
    "caption": "A comprehensive guide to SEO best practices for 2024"
  }
}

contentUrl is present, so this passes. The 1200px long-edge requirement for an Article's image is checked separately, under the Article's own issue (#92).

Example 3: Nested ImageObject Missing contentUrl (fails)

Problematic state:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Wireless Headphones",
  "image": {
    "@type": "ImageObject",
    "url": "https://example.com/headphones-front.jpg",
    "width": 800,
    "height": 800,
    "caption": "Front view of wireless headphones"
  }
}

Reported: ImageObject schema (nested inside Product) is present but failed validation: contentUrl missing. url is a common but different property — this check requires contentUrl specifically.

Corrected state:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Wireless Headphones",
  "image": {
    "@type": "ImageObject",
    "contentUrl": "https://example.com/headphones-front.jpg",
    "width": 800,
    "height": 800,
    "caption": "Front view of wireless headphones"
  }
}

How PixyScan detects this

  1. Read the declared structured data: every JSON-LD block is parsed, and @graph wrappers are flattened.

  2. Walk each declared schema for nested ImageObject blocks: wherever an object with @type: "ImageObject" appears nested inside another schema — most commonly an Article-family or Product schema's image property — it is examined. A schema whose image is a bare URL string is not examined here: there is nothing to validate, and a plain string is valid markup.

  3. Check the required property: a nested ImageObject must have contentUrl.

  4. This is reported when: a nested ImageObject object is declared but is missing contentUrl, reported under this issue naming the parent it was found inside. A schema whose image is a bare URL string, or that declares no image at all, is not reported here.

Note: width/height and caption are not checked by this issue. An ImageObject's dimensions are checked separately, as part of its parent's own validation — the 1200px minimum long edge for an Article's image lands on the Article's own issue (#92), and a 112px minimum for an Organization's logo on #89.

What we store

Storage Level

Page Level — This issue is evaluated for each individual URL that contains structured data.


Database Table / Prisma Model

PageStructuredData


Stored Fields

Field Type Description
schemaType SchemaType The type of schema (e.g., Organization, Person)
schemaFormat SchemaFormat The format of the schema (JSON-LD, Microdata, RDFa)
schemaIdentifier String? Unique identifier for the schema
rawJson Json? The raw JSON-LD or structured data content
schemaErrors Json? Array of validation errors found in the schema
isValidSchema Boolean? Whether the schema is valid according to validation
missingFields Json? Reserved for future use — the crawler always writes null here today; no check currently populates it

Detection Dependencies

  • The following data sources are required to evaluate this issue:
  • HTML Document — The crawler parses the HTML to find structured data (JSON-LD, Microdata, RDFa)
  • Structured Data Validation — The extracted schema is validated against Schema.org definitions
  • Schema Parser — JSON-LD scripts, Microdata attributes, and RDFa markup are parsed

Further reading