Image upload fails after adding metadata options for dimensions and image

3 replies
Last updated: Jan 28, 2026
hi everyone, recently added
options: { metadata: ["dimensions", "image"] }
to the image type and now i cannot upload new images, some of them stuck forever or just fail (screenshot below) without any console warning, other throw an error
"child "meta" fails because [single value of "meta" fails because ["meta" must be one of [location, exif, image, palette, lqip, blurhash, none]]]"

i can only upload previously uploaded images and don’t understand what is the problem. i really need metadata.dimensions for next.js Image component to pass width and height for responsive image. is there any workaround? thanks!
AI Update

Based on the error message you're seeing, the issue is that "dimensions" and "image" are not valid values for the metadata options array in your image schema.

According to the Sanity image metadata documentation, here's what's happening:

Dimensions are ALWAYS included automatically - you don't need to (and shouldn't) specify them in the metadata array. The dimensions field cannot be disabled and is available by default on all image assets.

The valid values for the metadata array are only:

  • "exif"
  • "location"
  • "lqip"
  • "blurhash"
  • "palette"

To fix your issue, change your schema from:

options: { 
  metadata: ["dimensions", "image"] 
}

To either remove the options entirely (dimensions will still be available):

// dimensions are available by default, no options needed
type: 'image'

Or specify only valid metadata types you want:

options: { 
  metadata: ["blurhash", "lqip", "palette"] 
}

To get dimensions for Next.js Image component, you can extract them from the asset reference ID using this pattern (as shown in this answer):

const pattern = /^image-([a-f\d]+)-(\d+x\d+)-(\w+)$/

const decodeAssetId = (id) => {
  const [, assetId, dimensions, format] = pattern.exec(id)
  const [width, height] = dimensions.split("x").map(v => parseInt(v, 10))
  return { assetId, dimensions: { width, height }, format }
}

// Usage:
const { dimensions } = decodeAssetId(image.asset._ref)
// dimensions.width and dimensions.height are now available

After fixing your schema, you should be able to upload images again without errors!

Show original thread
3 replies

Sanity – Build the way you think, not the way your CMS thinks

Sanity is the developer-first content operating system that gives you complete control. Schema-as-code, GROQ queries, and real-time APIs mean no more workarounds or waiting for deployments. Free to start, scale as you grow.

Was this answer helpful?