Placeholder Image Generator
Generate placeholder images of any size. Create image placeholders for mockups and wireframes instantly.
Other Text Cleaner Tools
Mistral Turnitin Checker
Check if your Mistral-generated content will pass Turnitin plagiarism detection.
Open Tool →Mistral Research Paper Checker
Check research papers generated by Mistral for academic standards.
Open Tool →GPT-5.2 Humanizer
Humanize GPT-5.2-generated text to sound natural and bypass AI detectors online free.
Open Tool →Gemini Product Description Improver
Improve product descriptions generated by Gemini for better sales conversion.
Open Tool →AI Turnitin Checker
Check if your AI-generated content will pass Turnitin plagiarism detection.
Open Tool →GPT-5 Pro Humanizer
Humanize GPT-5 Pro-generated text to sound natural and bypass AI detectors online free.
Open Tool →Mistral Passive Voice Fixer
Convert passive voice to active voice in Mistral-generated content.
Open Tool →Text to Speech Online
Convert text to speech in your browser for free. Paste text and listen instantly with our free online TTS reader.
Open Tool →Placeholder Image Generator: Create Custom Dummy Images for Development and Design
Placeholder images are blank or labeled images used during development and prototyping to represent spaces where real images will eventually appear. They allow developers to build and test layouts, components, and user interfaces without waiting for final assets from designers or content teams. Our Placeholder Image Generator creates custom-sized placeholder images with configurable colors, text labels, and formats "” instantly and for free.
Placeholder images serve a critical role in modern web development workflows. They allow frontend developers and designers to work independently: the developer builds the layout using placeholder images of the correct dimensions, and the designer or content team supplies the real images later. This parallel workflow is the norm in agile development teams. Placeholder images are also essential for design systems documentation, component library Storybook stories, README screenshots, and user acceptance testing scenarios.
A History of Placeholder Image Services
The concept of a remote placeholder image service originated with placehold.it (now via.placeholder.com), launched around 2009. The service provided a simple URL API "”https://via.placeholder.com/300x200 "” that returned a gray rectangle with the size printed as text. This format became the universal standard for placeholder images in web development.
Many creative variants followed. Lorempixel (now defunct) provided real photographs in specific categories (food, nature, people) as placeholders. Picsum Photos (picsum.photos) uses unsplash-style photographs randomly selected by seed. Placebear, Placedog, and similar services provided humorous alternatives with bear and dog photos. For professional projects, these photograph-based placeholders could sometimes confuse clients into thinking real images had been selected. The labeled gray rectangle remains the clearest signal that "this is a placeholder."
Common Placeholder Image Dimensions
Standard dimensions used in web design correspond to common UI patterns:
- 16×16: favicon, small icon
- 32×32: standard icon
- 48×48: medium icon, avatar in list view
- 64×64: small avatar
- 100×100: small profile photo
- 150×150: thumbnail, product card image
- 200×200: square thumbnail
- 300×200: horizontal card image, blog post thumbnail
- 400×300: standard article image
- 600×400: featured image
- 800×600: large content image, 4:3 ratio
- 1200×630: Open Graph image (og:image), Facebook share preview
- 1280×720: 720p HD, hero image, banner
- 1920×1080: 1080p Full HD, full-width hero banner
- 2560×1440: 2K/1440p, large background image
Aspect ratios matter as much as dimensions. Common aspect ratios in web design:
- 1:1 (square): profile photos, product thumbnails, avatar
- 4:3: traditional monitor, general content images
- 16:9: HD video, wide hero banners, slides
- 3:2: DSLR photography, wide card images
- 2:1: wide panoramic banners
- 9:16: portrait (Stories, TikTok, mobile full-screen)
- 21:9: ultra-wide cinematic
Generating Placeholder Images with CSS
For pure CSS placeholder implementations without any external dependency, several techniques work:
CSS Background Color with Aspect Ratio
.placeholder {
background-color: #e5e7eb;
aspect-ratio: 16 / 9;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
color: #9ca3af;
font-size: 0.875rem;
}
.placeholder::before {
content: "Image placeholder";
}CSS-Generated SVG Data URI
An SVG data URI can be embedded directly in CSS as a background image, creating a self-contained placeholder with custom colors and text:
background-image: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="300" height="200"%3E%3Crect width="100%25" height="100%25" fill="%23e5e7eb"/%3E%3Ctext x="50%25" y="50%25" text-anchor="middle" dominant-baseline="middle" fill="%23888" font-family="sans-serif" font-size="14"%3E300×200%3C/text%3E%3C/svg%3E');Generating Placeholder Images with SVG
SVG is the ideal format for placeholder images because it is infinitely scalable, tiny in file size, and can be generated on the fly with arbitrary dimensions. A complete SVG placeholder:
<svg xmlns="http://www.w3.org/2000/svg" width="400" height="300">
<rect width="100%" height="100%" fill="#e5e7eb"/>
<!-- Cross pattern for visual interest -->
<line x1="0" y1="0" x2="400" y2="300" stroke="#d1d5db" stroke-width="1"/>
<line x1="400" y1="0" x2="0" y2="300" stroke="#d1d5db" stroke-width="1"/>
<rect x="1" y="1" width="398" height="298" fill="none" stroke="#d1d5db" stroke-width="1"/>
<text x="50%" y="50%" text-anchor="middle" dominant-baseline="middle"
fill="#6b7280" font-family="sans-serif" font-size="16" font-weight="500">
400×300
</text>
</svg>SVG placeholders can include diagonal lines (the classic "X" pattern from design wireframes), a camera icon, custom text, or any other visual cue. The SVG can be inlined directly in HTML or referenced as an src attribute value.
URL-Based Placeholder Services
Remote URL-based placeholder services provide the quickest way to add placeholders to HTML without generating files:
via.placeholder.com
https://via.placeholder.com/300x200
https://via.placeholder.com/300x200/ff0000/ffffff?text=Title
https://via.placeholder.com/300 <!-- square -->picsum.photos (Lorem Picsum)
https://picsum.photos/300/200 <!-- random photo -->
https://picsum.photos/seed/abc/300/200 <!-- deterministic -->
https://picsum.photos/300/200?grayscale <!-- grayscale -->
https://picsum.photos/300/200?blur=5 <!-- blurred -->dummyimage.com
https://dummyimage.com/300x200/000/fff
https://dummyimage.com/300x200.png
https://dummyimage.com/300x200/ff0000/00ff00&text=HelloSelf-Hosted with Canvas API
For projects that cannot depend on external services (air-gapped environments, CI testing, offline development), the HTML Canvas API can generate placeholder images in-browser:
function generatePlaceholder(width, height, bg = '#e5e7eb', fg = '#6b7280') {
const canvas = document.createElement('canvas');
canvas.width = width;
canvas.height = height;
const ctx = canvas.getContext('2d');
ctx.fillStyle = bg;
ctx.fillRect(0, 0, width, height);
ctx.strokeStyle = fg;
ctx.lineWidth = 1;
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(width, height);
ctx.moveTo(width, 0);
ctx.lineTo(0, height);
ctx.stroke();
ctx.fillStyle = fg;
ctx.textAlign = 'center';
ctx.textBaseline = 'middle';
ctx.font = `${Math.min(width, height) * 0.1}px sans-serif`;
ctx.fillText(`${width}×${height}`, width / 2, height / 2);
return canvas.toDataURL();
}Placeholder Images in Design Tools
Figma
Figma supports placeholder images via the "image fill" option: create a frame with the target dimensions, fill it with a color (typically gray), and add a text label. Figma's component library for design systems often includes a standardized "placeholder" component with consistent styling. The Unsplash plugin provides real photograph placeholders directly in Figma.
Sketch
Sketch has built-in placeholder support: rectangles with "data" fills that auto-populate with images from a predefined set. The "Images" data type provides random stock photographs. Custom data sources can be configured for project-specific placeholder sets.
Adobe XD
XD provides "Repeat Grid" with auto-populated image content from a folder, making it easy to create realistic-looking prototype layouts with multiple card images simultaneously.
Placeholder Images in JavaScript Frameworks
React
// Simple SVG placeholder component
function Placeholder({ width, height, text, bg = '#e5e7eb', fg = '#9ca3af' }) {
return (
<svg
width={width}
height={height}
xmlns="http://www.w3.org/2000/svg"
viewBox={`0 0 ${width} ${height}`}
>
<rect width="100%" height="100%" fill={bg} />
<text
x="50%"
y="50%"
textAnchor="middle"
dominantBaseline="middle"
fill={fg}
fontSize={Math.min(width, height) * 0.1}
fontFamily="sans-serif"
>
{text || `${width}×${height}`}
</text>
</svg>
);
}Next.js Image Component
Next.js's <Image> component supports a placeholder prop:
placeholder="empty": no placeholder (default)placeholder="blur": a blurred low-resolution version while the full image loads. For local images, Next.js generates the blur automatically; for remote images, provide ablurDataURLplaceholder="data:...": use a custom data URI as the placeholder
import Image from "next/image";
<Image
src="/product.jpg"
width={400}
height={300}
placeholder="blur"
alt="Product photo"
/>Lazy Loading and Low-Quality Image Placeholders (LQIP)
The Low-Quality Image Placeholder pattern uses a tiny, heavily compressed (10×10 pixels or smaller) version of the actual image as a placeholder that is immediately available, then progressively replaces it with the full-resolution image as it loads. The placeholder is often encoded as a base64 data URI and inlined directly in the HTML, eliminating an extra network request. Tools like Squoosh, Sharp, and plaiceholder can generate appropriate LQIP data URIs.
Skeleton Screens: The Modern Alternative
Skeleton screens (also called content placeholders or skeleton loaders) are UI patterns where blank shapes matching the approximate layout of loading content are shown while data is fetched. For images, this means a gray rectangle of the correct aspect ratio with a pulsing animation. This approach provides better perceived performance than a loading spinner and communicates the layout to the user before content arrives.
/* CSS skeleton loader */
.skeleton-image {
background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
background-size: 200% 100%;
animation: shimmer 1.5s infinite;
border-radius: 4px;
}
@keyframes shimmer {
0% { background-position: 200% 0; }
100% { background-position: -200% 0; }
}Skeleton screens are the current industry standard for loading states in web and mobile applications, used by Facebook, LinkedIn, YouTube, and virtually every major application.
Image Placeholder Best Practices for SEO
When using placeholder images in production (which should be rare "” placeholders should be replaced before launch), be aware of SEO implications:
- Always include descriptive
alttext "” even for placeholders, an emptyalt=""is better than omitting it - Avoid linking to external placeholder services in production; they may have downtime and introduce external dependencies
- External placeholder services may be blocked by corporate firewalls and content security policies
- Placeholder images count against Core Web Vitals LCP (Largest Contentful Paint) if they are large "” keep placeholder images appropriately sized
Server-Side Placeholder Generation
For dynamic applications, placeholder images can be generated server-side on demand:
Node.js with Sharp
import sharp from 'sharp';
async function generatePlaceholder(width, height) {
return sharp({
create: {
width,
height,
channels: 3,
background: { r: 229, g: 231, b: 235 }
}
})
.png()
.toBuffer();
}Express.js Placeholder Route
app.get('/placeholder/:size', async (req, res) => {
const [width, height] = req.params.size.split('x').map(Number);
const buffer = await generatePlaceholder(width, height);
res.set('Content-Type', 'image/png');
res.set('Cache-Control', 'public, max-age=31536000');
res.send(buffer);
});How to Use This Placeholder Image Generator
Enter the desired width and height in pixels, customize the background color, text color, and label text. The generator produces the image immediately in the preview and offers download as PNG or SVG. You can also copy the image as a base64 data URI for inline embedding in HTML or CSS. Select from preset sizes for common use cases (avatar, card image, hero banner, Open Graph) to quickly generate standard-dimension placeholders. The generated images are clean, clearly labeled with their dimensions, and suitable for development wireframes, Storybook stories, design documentation, and prototype presentations.
Frequently Asked Questions
Common questions about the Placeholder Image Generator.
FAQ
Basics
1.What is a placeholder image?
A placeholder image is a dummy image used during development or prototyping to represent a space where a real image will eventually appear. Placeholder images are typically gray or colored rectangles with the image dimensions printed as text, clearly communicating "this is not final content" while allowing layouts to be built and tested without waiting for actual images.
2.Why do developers use placeholder images?
Placeholder images allow parallel development: frontend developers build layouts with correctly-sized placeholders while designers or content teams prepare real assets. They are also used in component library documentation, Storybook stories, README screenshots, API documentation, design mockups, and user testing sessions where real images are not necessary or available.
Formats
3.What format should I use for placeholder images "” PNG or SVG?
SVG is usually preferred for placeholder images because it is infinitely scalable, very small in file size, and can be generated on the fly with arbitrary dimensions. SVG also renders text labels at any size without pixelation. Use PNG when you need a raster format (some older tools or email clients may not support SVG), or when you need specific pixel-level rendering. For development use, SVG is almost always the better choice.
4.Can I use a placeholder image as a base64 data URI?
Yes. A placeholder SVG or PNG can be encoded as a base64 data URI and used directly as the src attribute of an img element or as a CSS background-image. This eliminates the need for an external image file or network request. Format: data:image/svg+xml;base64,[encoded SVG] or data:image/png;base64,[encoded PNG]. This is particularly useful for CSS-only placeholder components in component libraries.
Services
5.What are the most popular placeholder image services?
via.placeholder.com: returns labeled gray rectangles at any dimension via URL (https://via.placeholder.com/300x200). Picsum Photos (picsum.photos): returns random photographs at specified dimensions. Lorem Picsum supports grayscale, blur, and seeded random selection. dummyimage.com: similar to via.placeholder.com with color customization. For most production development work, local SVG generation is preferred over external services to avoid network dependencies.
6.Should I use external placeholder image services in production code?
No "” external placeholder services should only be used in development, testing, and prototype stages. In production, they introduce external dependencies that may have downtime, may be blocked by content security policies or firewalls, add latency from the extra network request, and may log access statistics. Replace all placeholder images with real assets before deploying to production.
Dimensions
7.What dimensions should I use for an Open Graph image placeholder?
1200×630 pixels is the standard size for Open Graph (og:image) images. This ratio (roughly 1.91:1) is used by Facebook, LinkedIn, Twitter/X, and most social platforms for link preview images. The content should be kept within the central 1080×566 area to account for different cropping behaviors across platforms. Minimum size accepted by most platforms is 600×315.
8.What is the standard size for a website hero image placeholder?
Common hero image sizes: 1920×1080 (Full HD, most common for desktop), 1440×810 (common for many modern sites), 1280×720 (720p, minimum for modern sites), and 2560×1440 (2K for retina/HiDPI). For responsive designs, the hero section's intrinsic aspect ratio matters more than exact pixel dimensions. A 16:9 aspect ratio (1920×1080) works well for most landscape hero designs.
CSS
9.How do I create a CSS-only placeholder image?
Use a div with background-color and aspect-ratio: div { background-color: #e5e7eb; aspect-ratio: 4/3; width: 100%; }. Add a pseudo-element for the label: div::before { content: "Image placeholder"; display: block; text-align: center; color: #9ca3af; }. For the classic X wireframe look, use CSS gradients or SVG background images. The aspect-ratio property (supported in all modern browsers) is the cleanest way to maintain proportions without JavaScript.
React
10.How do I create a reusable placeholder image component in React?
Create an SVG-based component that accepts width, height, text, background color, and text color props. Return an SVG element with a rect fill and centered text element. This approach requires no external dependencies and works with SSR. For Next.js specifically, the built-in Image component supports placeholder="blur" with a blurDataURL prop for production-ready progressive loading.
Next.js
11.How does Next.js Image component handle placeholder images?
The Next.js Image component supports three placeholder modes: "empty" (no placeholder, default), "blur" (shows a blurred low-res version while loading "” automatically generated for local images), and a custom data URI. For remote images with blur placeholder, provide a blurDataURL (a small base64-encoded image). The blur placeholder eliminates layout shift during image loading and improves perceived performance.
Skeleton
12.What is a skeleton screen and how does it relate to image placeholders?
A skeleton screen shows blank shapes matching the layout of loading content, with an animated shimmer effect. For images, this means a gray rectangle of the correct aspect ratio with a pulsing gradient animation. Skeleton screens provide better perceived performance than static placeholders and communicate layout structure to users during loading. They are the industry standard for loading states in web and mobile apps (used by Facebook, LinkedIn, YouTube).
Performance
13.What is a Low-Quality Image Placeholder (LQIP) and how does it work?
LQIP is a performance technique where a tiny (10-20px), heavily compressed version of the actual image is used as a placeholder while the full image loads. The LQIP is encoded as a base64 data URI and inlined in HTML so it is available immediately without a network request. As the full image loads, it smoothly replaces the LQIP. This provides a visual preview of the final image and reduces the visual jump from blank to loaded. Tools like plaiceholder and Sharp can generate LQIP data URIs.
Figma
14.How do I add placeholder images in Figma designs?
Create a rectangle with the target dimensions and fill it with a gray color (#E5E7EB or similar). Add a text layer with the dimensions and center it. Group as a component for reuse across the design. Alternatively, use Figma plugins: "Unsplash" inserts real photographs, "Placeholder" generates labeled rectangles, and "Content Reel" populates designs with mock content including images. For consistent team usage, add a placeholder component to your design system.
Generators
15.Can I generate placeholder images on the server side in Node.js?
Yes. Use Sharp for high-performance server-side image generation: sharp({ create: { width, height, channels: 3, background: { r: 229, g: 231, b: 235 } } }).png().toBuffer(). This returns a PNG Buffer that can be served directly from an Express route. For text labels, use SVG generation (no Canvas dependencies) or the sharp composite API to overlay an SVG text layer on the generated image.
URL API
16.How does the via.placeholder.com URL API work?
The URL format is: https://via.placeholder.com/WIDTHxHEIGHT/BGCOLOR/TEXTCOLOR?text=Custom+Text. Examples: /300x200 returns a 300×200 gray rectangle with "300x200" text; /300x200/ff0000/ffffff returns a red background with white text; /300 returns a 300×300 square; /300x200.png forces PNG format. The service is free but has rate limits and may have occasional downtime "” use for development only, not production.
Responsive
17.How do I create responsive placeholder images that maintain aspect ratio?
Use the CSS aspect-ratio property: .placeholder { aspect-ratio: 16/9; width: 100%; background: #e5e7eb; }. Before universal aspect-ratio support, the padding-top hack was used: wrap the placeholder in a container with padding-top: 56.25% (for 16:9) and position: relative, then position the placeholder absolutely within it. For SVG placeholders, set width="100%" height="auto" on the SVG element to let it scale fluidly.
Accessibility
18.Should placeholder images have alt text?
Yes "” always include the alt attribute, even on placeholder images. For purely decorative placeholders where the space will be filled by real content, use alt="" (empty string) to tell screen readers to ignore the element. Never omit the alt attribute entirely "” that causes screen readers to read the image filename or URL, which is confusing for users. For placeholder images that represent meaningful content (e.g., in a product listing), use descriptive alt text like alt="Product photo placeholder".
Design
19.What colors should I use for placeholder images?
Standard placeholder colors: background #E5E7EB or #D1D5DB (light gray), text #9CA3AF or #6B7280 (medium gray). These Tailwind gray palette values have become the de facto standard. For dark mode, invert to #374151 background with #6B7280 text. Avoid pure white or black backgrounds which can be confused with actual content or broken images. The gray tones clearly communicate "not final" to both developers and stakeholders.
20.Do placeholder images work in HTML email templates?
External placeholder services (via.placeholder.com, picsum.photos) work in email since they are just standard image URLs. SVG inline images have limited email client support "” Outlook does not render SVG. For email templates, use PNG or JPEG placeholder images. Background-color CSS as placeholders are unreliable in email clients; always use actual image files. Litmus and Email on Acid are tools for testing image rendering across email clients.
Storybook
21.How do I use placeholder images in Storybook stories?
Use the data URI approach for offline-safe placeholders: import the generatePlaceholder function or use a fixed base64 SVG data URI as the src prop. For photograph placeholders, picsum.photos with a fixed seed (picsum.photos/seed/storyname/300/200) provides deterministic images that don't change between renders. Avoid via.placeholder.com in Storybook CI environments which may be network-restricted.
Tools
22.What desktop tools can generate placeholder images?
ImageMagick: convert -size 300x200 xc:#e5e7eb -pointsize 20 -fill "#9ca3af" -gravity center -annotate 0 "300x200" placeholder.png. GIMP: Script-Fu console can generate placeholder images programmatically. Inkscape: create SVG placeholders with precise dimensions. For batch generation, a shell script with ImageMagick is the most efficient approach. Python with Pillow: Image.new("RGB", (300, 200), "#e5e7eb") followed by ImageDraw for text.
Security
23.Are there security concerns with external placeholder image services?
Using external placeholder services requires browsers to make requests to third-party servers, which: (1) leaks user IP addresses to the placeholder service; (2) may violate strict Content Security Policies that disallow external image sources; (3) introduces availability dependency "” if the service is down, images break; (4) may trigger CORS issues in certain configurations. For any project with security requirements, use locally generated or self-hosted placeholder images.