vercel/next.js · error · Error
Image with src "${src}" has "placeholder='blur'" property bu
Error message
Image with src "${src}" has "placeholder='blur'" property but is missing the "blurDataURL" property.
Possible solutions:
- Add a "blurDataURL" property, the contents should be a small Data URL to represent the image
- Change the "src" property to a static import with one of the supported file types: ${VALID_BLUR_EXT.join(',')} (animated images not supported)
- Remove the "placeholder" property, effectively no blur effect
Read more: https://nextjs.org/docs/messages/placeholder-blur-data-url What it means
Error "Image with src "${src}" has "placeholder='blur'" property but is missing the "blurDataURL" property. Possible solutions: - Add a "blurDataURL" property, the contents should be a small Data URL to represent the image - Change the "src" property to a static import with one of the supported file types: ${VALID_BLUR_EXT.join(',')} (animated images not supported) - Remove the "placeholder" property, effectively no blur effect Read more: https://nextjs.org/docs/messages/placeholder-blur-data-url" thrown in vercel/next.js.
Source
Thrown at packages/next/src/shared/lib/get-img-props.ts:591
warnOnce(
`Image with src "${src}" is smaller than 40x40. Consider removing the "placeholder" property to improve performance.`
)
}
}
if (
qualityInt &&
config.qualities &&
!config.qualities.includes(qualityInt)
) {
warnOnce(
`Image with src "${src}" is using quality "${qualityInt}" which is not configured in images.qualities [${config.qualities.join(', ')}]. Please update your config to [${[...config.qualities, qualityInt].sort().join(', ')}].` +
`\nRead more: https://nextjs.org/docs/messages/next-image-unconfigured-qualities`
)
}
if (placeholder === 'blur' && !blurDataURL) {
const VALID_BLUR_EXT = ['jpeg', 'png', 'webp', 'avif'] // should match next-image-loader
throw new Error(
`Image with src "${src}" has "placeholder='blur'" property but is missing the "blurDataURL" property.
Possible solutions:
- Add a "blurDataURL" property, the contents should be a small Data URL to represent the image
- Change the "src" property to a static import with one of the supported file types: ${VALID_BLUR_EXT.join(
','
)} (animated images not supported)
- Remove the "placeholder" property, effectively no blur effect
Read more: https://nextjs.org/docs/messages/placeholder-blur-data-url`
)
}
if ('ref' in rest) {
warnOnce(
`Image with src "${src}" is using unsupported "ref" property. Consider using the "onLoad" property instead.`
)
}
if (!unoptimized && !isDefaultLoader) {
const urlStr = loader({View on GitHub (pinned to 0eb3775416)
Solutions
- Add a blurDataURL prop, use a static image import, or remove placeholder='blur'.
Defensive patterns
Strategy: validation
When it happens
Trigger: next/image uses placeholder='blur' without blurDataURL.
Common situations: A non-statically-imported image with placeholder='blur' but no blurDataURL prop.
AI-assisted analysis of vercel/next.js@0eb3775416 (2026-08-19).
Data as JSON: /api/errors/43af9de1fbfd5e24.
Report an issue: GitHub.