badges/shields · error · InvalidResponse
no images found for arch ${arch}
Error message
no images found for arch ${arch} What it means
This InvalidResponse is thrown by the Docker Hub version service's transform step when the user requests a badge filtered by CPU architecture (e.g. arch=arm64) with sort=semver and no tag, but none of the tag listing entries returned by the Docker Hub API contain an image with that architecture. It signals that the requested arch does not exist among the images of any matching tag, so no semver-ordered version can be computed. It is a response-validity error, not a client error in the badge server itself.
Source
Thrown at services/docker/docker-version.service.js:140
if (!tag && sort === 'date') {
version = data.results[0].name
if (version !== 'latest') {
return { version }
}
const imageTag = data.results[0].images.find(i => i.architecture === arch) // Digest is the unique field that we utilise to match images
if (!imageTag) {
throw new InvalidResponse({
prettyMessage: 'digest not found for latest tag',
})
}
const { digest } = imageTag
return { version: getDigestSemVerMatches({ data: pagedData, digest }) }
} else if (!tag && sort === 'semver') {
const matches = data
.filter(d => d.images.some(image => image.architecture === arch))
.map(d => d.name)
if (matches.length === 0) {
throw new InvalidResponse({
prettyMessage: `no images found for arch ${arch}`,
})
}
return { version: latest(matches) }
} else {
version = data.find(d => d.name === tag)
if (!version) {
throw new NotFound({ prettyMessage: 'tag not found' })
}
if (Object.keys(version.images).length === 0) {
return { version: version.name }
}
const image = version.images.find(i => i.architecture === arch)
if (!image) {
throw new InvalidResponse({
prettyMessage: 'digest not found for given tag',
})
}View on GitHub (pinned to 766fd8bc89)
Solutions
- Check the arch query parameter spelling against Docker Hub's architecture values (amd64, arm, arm64, 386, ppc64le, s390x).
- Inspect the repository on Docker Hub to confirm images exist for the requested arch; remove or correct the arch param if not.
- Use a tag-agnostic query first to list available architectures, then pick a supported one.
Example fix
// before /badge/docker/v/_/myrepo?sort=semver&arch=x86_64 // after /badge/docker/v/_/myrepo?sort=semver&arch=amd64
Defensive patterns
Strategy: validation
Validate before calling
const VALID_ARCHES = ['386','amd64','arm','arm64','ppc64le','s390x'];
if (!VALID_ARCHES.includes(arch)) {
throw new Error(`arch must be one of ${VALID_ARCHES.join(', ')}, got: ${arch}`);
} Type guard
function isValidArch(arch) {
return ['386','amd64','arm','arm64','ppc64le','s390x'].includes(arch);
} Prevention
- Always use Docker Hub's canonical architecture names (amd64, arm64, 386, arm, ppc64le, s390x).
- List the repo's images on Docker Hub to confirm the arch exists before pinning it in a badge URL.
- Omit arch if you don't specifically need an architecture-specific digest.
When it happens
Trigger: Calling the docker version badge endpoint without a tag and with sort=semver and an arch query param whose value matches no image architecture in any tag returned by Docker Hub (data.filter(d => d.images.some(i => i.architecture === arch)) yields zero matches).
Common situations: Typo in the arch query parameter (e.g. arch=x86 instead of amd64, arch=arm instead of arm64); the repository publishes only multi-arch manifests under names the filter doesn't see; the image was built for a single arch; Docker Hub response schema changes.
Related errors
- digest not found for given tag
- architecture not found
- digest not found for latest tag
- repository not found
- no tags found
AI-assisted analysis of badges/shields@766fd8bc89 (2026-08-30).
Data as JSON: /api/errors/807547dbe0b693e6.
Report an issue: GitHub.