
Grab your gear: The official Sanity swag store
Read Grab your gear: The official Sanity swag storeBased on the information I found, here's how to query an array of images to get both the URL and alt text for each image using GROQ:
*[_type == 'yourDocumentType'] {
images[] {
'url': asset->url,
alt
}
}The key syntax here is images[] followed by a projection {} where you specify the fields you want. Here's what's happening:
images[] - This iterates through each item in your images arrayasset->url - The -> operator dereferences the image asset reference to get the actual URLalt - This directly accesses the alt field on each image objectImportant note: Don't use images[]-> (with the arrow after the brackets). The dereference operator -> should only be used when accessing the asset reference itself, not on the array.
If you have a more complex schema where you need to access other metadata, you can expand the projection:
*[_type == 'page'] {
title,
images[] {
'url': asset->url,
alt,
'width': asset->metadata.dimensions.width,
'height': asset->metadata.dimensions.height
}
}This pattern works because in Sanity, images are stored as references to asset documents, and GROQ's projection syntax lets you reshape the data from arrays into exactly the structure you need. You can use projections to select specific fields, rename them, and even follow references to build the exact JSON structure your application requires.
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.
Content operations
Content backend


The only platform powering content operations
By Industry


Tecovas strengthens their customer connections
Build and Share

Grab your gear: The official Sanity swag store
Read Grab your gear: The official Sanity swag store