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.
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
- architecture not found
- arch not found
- arch not found
AI-assisted analysis of badges/shields@766fd8bc89 (2026-08-30).
Data as JSON: /api/errors/05da0a4bd4df9b42.
Report an issue: GitHub.
Appendix: 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)