badges/shields · error · InvalidResponse
digest not found for given tag
Error message
digest not found for given tag
What it means
This InvalidResponse is thrown when a tag is found in the Docker Hub response and the tag has images, but none of them matches the requested arch (version.images.find(i => i.architecture === arch) is undefined), so the digest for the tag cannot be determined. Docker Hub data is present but does not satisfy the combination of tag and arch the user asked for.
Source
Thrown at services/docker/docker-version.service.js:155
.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',
})
}
const { digest } = image
return { version: getDigestSemVerMatches({ data, digest }) }
}
}
async handle({ user, repo, tag }, { sort, arch }) {
let data, pagedData
if (!tag && sort === 'date') {
data = await this.fetch({ user, repo })
if (data.count === 0) {
throw new NotFound({ prettyMessage: 'repository not found' })
}
if (data.results[0].name === 'latest') {
pagedData = await getMultiPageData({View on GitHub (pinned to 766fd8bc89)
Solutions
- Verify on Docker Hub that the requested tag ships an image for the requested arch.
- Omit the arch parameter to accept the default resolution path.
- Choose a newer or multi-arch tag that includes the architecture.
- Correct architecture naming (amd64 vs x86_64, arm64 vs aarch64).
Example fix
// before /badge/docker/v/_/myrepo/1.2.0?arch=arm64 // 1.2.0 built for amd64 only // after /badge/docker/v/_/myrepo/1.3.0?arch=arm64
Defensive patterns
Strategy: validation
Validate before calling
// verify tag+arch combo before requesting
const tagData = await fetch(`https://hub.docker.com/v2/repositories/${user}/${repo}/tags/${tag}`).then(r => r.json());
const hasArch = tagData.images?.some(i => i.architecture === arch);
if (!hasArch) throw new Error(`tag ${tag} has no ${arch} image`); Type guard
function tagHasArch(tagEntry, arch) {
return Array.isArray(tagEntry?.images) && tagEntry.images.some(i => i.architecture === arch);
} Prevention
- Check the tag's architecture list on Docker Hub before specifying arch.
- Use multi-arch tags (or newer versions) when pinning arch.
- Avoid mixing arch naming conventions (amd64 not x86_64, arm64 not aarch64).
When it happens
Trigger: Requesting /docker/v/<user>/<repo>/<tag> with an arch query param when that specific tag has no image built for that architecture (images exist for the tag, just not for the requested arch).
Common situations: Single-arch images (e.g. an old tag built only for amd64) requested with arch=arm64; architecture names differing between old/new Docker images; requesting a historic tag before multi-arch builds were introduced.
Related errors
- digest not found for latest tag
- no images found for arch ${arch}
- architecture not found
- repository not found
- no tags found
AI-assisted analysis of badges/shields@766fd8bc89 (2026-08-30).
Data as JSON: /api/errors/05da0a4bd4df9b42.
Report an issue: GitHub.