---
layout: page
title: Blurry images
permalink: /guides/debugging/blurry-images/
parent: Debugging
grand_parent: Guides
nav_order: 2
description: >-
Complete guide to understanding and fixing blurry images with pixel density, resolution, and device scaling
---
# Debugging Blurry Images
{: .no_toc }
{: .fs-9 }
The complete guide to crystal-clear, high-resolution images
{: .fs-6 .fw-300 }
## Why Images Look Blurry
Blurry images are almost always caused by **insufficient pixel density** for the display they're viewed on. Modern screens—especially smartphones, tablets, and high-resolution monitors—pack many more pixels into the same physical space than older displays.
The HTML/CSS to Image API automatically generates **high-resolution images by default** to ensure your images look crisp on all devices. Here's everything you need to know about creating pixel-perfect images.
{% include hint.md title="Default High Resolution" text="The HCTI API defaults to 2x resolution (device_scale: 2) for HTML images to prioritize image quality. This ensures your images look sharp on both standard and high-DPI displays." %}
## Understanding Pixel Density
### The Modern Display Challenge
Today's screens vary dramatically in pixel density:
- **Standard displays**: 1 physical pixel = 1 CSS pixel (1x)
- **Retina/High-DPI displays**: 2-4 physical pixels = 1 CSS pixel (2x-4x)
- **Ultra-high resolution**: 3+ physical pixels = 1 CSS pixel (3x+)
When you create an image at standard resolution (1x) and display it on a high-density screen, the browser must **stretch** those pixels to fill the available space—resulting in a blurry, pixelated appearance.
### The 2x Rule Explained
The **2x rule** is simple: **create images at double your intended display size**.
**Example:**
- Display size needed: `400×400px`
- Image source size: `800×800px` (2x)
- Result: Sharp image on all screens
This ensures you have enough pixel data to satisfy high-density displays while still looking great on standard screens.
## Device Scale Settings
The HCTI API uses the `device_scale` parameter to control image resolution:
| Setting | Resolution | Use Case | File Size |
|---------|------------|----------|-----------|
| `1` | Standard (1x) | Legacy screens, thumbnails | Smallest |
| `2` | High (2x) | **Recommended for web** | Medium |
| `3` | Maximum (3x) | Print, premium displays | Largest |
### Default Behavior
- **HTML images**: `device_scale: 2` (high resolution by default)
- **URL screenshots**: `device_scale: 1` (standard resolution)
## Common Causes of Blurry Images
### 1. Insufficient Source Image Resolution
**Problem**: Your source images are too small for high-DPI rendering.
**Example**: Using a `200×200px` image that needs to display at `200×200px` on a 2x display.
**Solution**: Use source images at 2x your display size:
```html
```
### 2. Incorrect Device Scale for URLs
**Problem**: URL screenshots default to `device_scale: 1`.
**Solution**: Explicitly set `device_scale: 2` for URL images:
```json
{
"url": "https://example.com",
"device_scale": 2
}
```
### 3. Mixed Resolution Assets
**Problem**: Some images in your HTML are high-resolution while others are not.
**Solution**: Ensure ALL images follow the 2x rule:
```html
```
## Step-by-Step Debugging
### Step 1: Check Your Device Scale
For HTML images, verify your API request:
```json
{
"html": "Your content
",
"device_scale": 2 // Ensure this is set to 2
}
```
For URL images, always specify device scale:
```json
{
"url": "https://your-site.com",
"device_scale": 2 // Add this for sharp screenshots
}
```
### Step 2: Audit Your Source Images
Calculate if your images meet the 2x requirement:
1. **Intended display size**: How big will the image appear? (e.g., 300px wide)
2. **Required source size**: Multiply by device scale (300px × 2 = 600px wide)
3. **Actual source size**: Check your image file dimensions
**Quick audit checklist:**
- [ ] All images are 2x their CSS display size
- [ ] External images from CDNs have high-res versions
- [ ] Icons and logos have sufficient resolution
- [ ] Background images are appropriately sized
### Step 3: Test on Different Displays
View your generated image on:
- Standard resolution monitor
- High-DPI laptop screen (MacBook, high-end Windows laptops)
- Mobile device (iPhone, Android phone)
- Tablet (iPad, Android tablet)
The image should look equally sharp on all devices.
## Real-World Examples
### Example 1: Social Media Card
**Bad approach:**
```html
```
**Good approach:**
```html
```
### Example 2: Company Logo
**Bad approach:**
```css
.logo {
width: 200px;
height: 60px;
background-image: url('logo-200x60.png');
}
```
**Good approach:**
```css
.logo {
width: 200px;
height: 60px;
background-image: url('logo-400x120.png');
background-size: 200px 60px; /* Scale down to intended size */
}
```
## Advanced Techniques
### Responsive Images with srcset
For external images, use responsive image techniques:
```html
```
### CSS Media Queries for High-DPI
Target high-resolution displays specifically:
```css
@media only screen and (-webkit-min-device-pixel-ratio: 2),
only screen and (min-resolution: 192dpi) {
.hero-image {
background-image: url('hero-2x.jpg');
}
}
```
### Vector Graphics for Perfect Scaling
Use SVG for logos and icons that scale perfectly at any resolution:
```html
```
## Performance Considerations
### File Size Impact
Higher resolution means larger files:
- `device_scale: 1` → Base file size
- `device_scale: 2` → ~4x larger files
- `device_scale: 3` → ~9x larger files
### Optimization Strategies
1. **Use appropriate compression**: Balance quality vs. file size
2. **Choose the right format**:
- PNG for graphics with transparency
- JPG for photographs
- WebP for modern browsers (when supported)
3. **Consider bandwidth**: Higher resolution may impact load times
{% include hint.md title="Performance Tip" text="Use device_scale: 2 as the sweet spot for web usage. It provides excellent quality on all displays while keeping file sizes reasonable." %}
## Troubleshooting Checklist
When your image still looks blurry:
- [ ] **Device scale is set to 2** (for HTML) or explicitly specified (for URLs)
- [ ] **All source images are 2x their display size**
- [ ] **External CDN images have high-resolution versions available**
- [ ] **CSS background images use appropriately sized sources**
- [ ] **Vector graphics (SVG) are used where possible**
- [ ] **The generated image is being displayed at the correct size**
## Browser Testing
Test your images across different scenarios:
```html
Image Quality Test
```
## Need Help?
Still experiencing blurry images? We're here to help debug your specific case.
**Email us**: [support@htmlcsstoimage.com](mailto:support@htmlcsstoimage.com)
Include:
- Your API request (HTML/CSS or URL)
- Expected vs. actual results
- What devices/screens you're testing on
- Any specific requirements for your use case
We love solving tricky rendering problems and helping you achieve pixel-perfect results.
{% include code_footer.md version=2 %}