What does the ICO to JPG Converter do?
The ICO to JPG Converter converts Windows Icon (.ico) and Cursor (.cur) files into lightweight, web-compatible Joint Photographic Experts Group (.jpg / .jpeg) photos with customizable solid background colors, quality settings, and Retina resolution scaling.
ICO files frequently contain multiple embedded icon frames (such as 16x16, 32x32, 48x48, and 256x256) designed for Windows desktop shells. Converting ICO to JPG automatically extracts the crispest high-resolution frame, flattens alpha transparency onto a solid background, and produces a standard JPEG image suitable for sharing and web display.
Core Concepts
- ICONDIR & ICONDIRENTRY Parsing: Inspects multi-image directory headers to identify intrinsic widths, heights, bit depths, and icon frame counts.
- Maximum Resolution Frame Extraction: Automatically extracts the highest available sub-icon resolution (up to 256x256) embedded inside the
.icocontainer. - Customizable Solid Background Replacement: Smoothly composites 32-bit alpha transparency channels onto your chosen solid background color (White, Black, Off-White, Dark Navy) to prevent dark halo fringes.
- Variable JPEG Quality Compression: Adjust compression between 60% and 100% to optimize between bandwidth and image sharpness.
How to use the tool?
- Upload ICO File or Paste Base64: Drag and drop a
.icoor.curfile into the drop zone, or paste a Base64 ICO Data URI string into the editor. - Select Background Fill & Quality: Choose your background fill color (
#ffffff,#000000) and JPEG quality preset (92%,100%,80%). - Optional Dimension Overrides: Set custom pixel
WidthorHeightoverrides if resizing is needed. - Convert to JPG: Click Convert to JPG to execute rasterization.
- Download or Copy: Click Download to save your
.jpgfile or Copy the Base64 Data URI.
Related Developer Utilities
- ICO to PNG Converter — Convert Windows Icon (.ico) files into lossless PNG images.
- PNG to JPG Converter — Convert PNG images to compressed JPEG format.
- BMP to JPG Converter — Convert uncompressed Windows BMP graphics to JPEG photos.
- GIF to JPG Converter — Convert CompuServe GIF graphics into JPEG photos.
REST API Integration
blueutils.com provides a free REST API endpoint (POST https://blueutils.com/api/image/ico-to-jpg) for programmatic validation, ICO header parsing, and JPEG Data URI formatting.
API Request Parameters
| Name | Type | Description | Example |
|---|---|---|---|
rawText |
String | Base64 ICO Data URI or raw Base64 payload. | "data:image/x-icon;base64,AAABAA..." |
options.scale |
Number | Multiplier scale factor (1, 2, 3, 4). Default is 1. |
2 |
options.quality |
Number | JPEG quality factor from 0.1 to 1.0. Default is 0.92. |
0.92 |
options.background |
String | Hex or CSS background fill color. Default is "#ffffff". |
"#ffffff" |
options.width |
Number | Optional target width in pixels. | 512 |
options.height |
Number | Optional target height in pixels. | 512 |
API Request Payload Examples
cURL
curl -X POST https://blueutils.com/api/image/ico-to-jpg \
-H "Content-Type: application/json" \
-d '{
"rawText": "data:image/x-icon;base64,AAABAAEAAQEAAAEAIAAwAAAAFgAAACgAAAABAAAAAgAAAAEAIAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAD/AAD//wAA",
"options": {
"scale": 1,
"quality": 0.92,
"background": "#ffffff"
}
}'Python
import requests
url = "https://blueutils.com/api/image/ico-to-jpg"
payload = {
"rawText": "data:image/x-icon;base64,AAABAAEAAQEAAAEAIAAwAAAAFgAAACgAAAABAAAAAgAAAAEAIAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAD/AAD//wAA",
"options": {
"scale": 1,
"quality": 0.92,
"background": "#ffffff"
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.json())Java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
String jsonPayload = """
{
"rawText": "data:image/x-icon;base64,AAABAAEAAQEAAAEAIAAwAAAAFgAAACgAAAABAAAAAgAAAAEAIAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAD/AAD//wAA",
"options": {
"scale": 1,
"quality": 0.92,
"background": "#ffffff"
}
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://blueutils.com/api/image/ico-to-jpg"))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(jsonPayload))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}API Response Parameters
| Name | Type | Description | Example |
|---|---|---|---|
isValid |
Boolean | Indicates whether the ICO was parsed successfully. | true |
mimeType |
String | Target output MIME type (image/jpeg). |
"image/jpeg" |
originalFormat |
String | Detected input MIME type (image/x-icon). |
"image/x-icon" |
dataUri |
String | Base64 JPEG Data URI string. | "data:image/jpeg;base64,..." |
metadata.originalWidth |
Number | Original width in pixels extracted from highest sub-icon entry. | 256 |
metadata.originalHeight |
Number | Original height in pixels extracted from highest sub-icon entry. | 256 |
metadata.targetWidth |
Number | Scaled target pixel width. | 256 |
metadata.targetHeight |
Number | Scaled target pixel height. | 256 |
metadata.iconCount |
Number | Total number of sub-icon frames inside the ICO file. | 1 |
metadata.bitDepth |
Number | Color bit depth of the selected icon frame (32, 24, 8). |
32 |
metadata.quality |
Number | Applied JPEG compression quality factor. | 0.92 |
metadata.background |
String | Applied solid background color. | "#ffffff" |
snippets.html |
String | Ready-to-use HTML <img> tag. |
"<img src=\"...\" />" |
snippets.css |
String | Ready-to-use CSS background-image declaration. |
"background-image: url(\"...\");" |
API Response Payload Examples
Success Response (HTTP 200 OK)
{
"isValid": true,
"mimeType": "image/jpeg",
"originalFormat": "image/x-icon",
"dataUri": "data:image/jpeg;base64,AAABAA...",
"base64": "AAABAA...",
"metadata": {
"originalWidth": 256,
"originalHeight": 256,
"targetWidth": 256,
"targetHeight": 256,
"scale": 1,
"quality": 0.92,
"background": "#ffffff",
"iconCount": 1,
"bitDepth": 32,
"type": "ICO (Icon)",
"aspectRatio": 1,
"originalSizeBytes": 70,
"formattedSize": "70 B"
},
"snippets": {
"html": "<img src=\"data:image/jpeg;base64,...\" width=\"256\" height=\"256\" alt=\"Converted JPEG Graphic\" />",
"css": "background-image: url(\"data:image/jpeg;base64,...\");",
"markdown": ""
}
}Validation Failure Response (HTTP 400 Bad Request)
{
"isValid": false,
"error": "Invalid format: Expected a valid Windows Icon (.ico) or Cursor (.cur) file."
}Rate Limit Exceeded Response (HTTP 429 Too Many Requests)
{
"error": "API rate limit exceeded. Please wait or contact support@blueutils.com."
}Why use an API to convert ICO to JPG?
Automating ICO to JPG conversion via API in build workflows and asset pipelines offers major benefits:
- Favicon & App Icon Previews: Render Windows and desktop favicon assets into JPEG thumbnails for marketing websites and dashboards.
- Universal Mobile & Social Compatibility: Allow users to share icon files on social platforms that reject
.icoformats. - Optimized Token Efficiency for AI Agents: Extracts clean image dimensions and frame count metadata before sending image data to multimodal vision agents.
Native Usage
How to convert ICO to JPG locally using command-line tools:
Windows (CMD / PowerShell)
# PowerShell: Convert ICO largest frame to JPG with white background using ImageMagick
magick "favicon.ico[0]" -background white -flatten -quality 92 "favicon.jpg"Linux / Unix (Bash / Shell)
# Bash: Convert ICO to JPG using ImageMagick
convert "favicon.ico[0]" -background white -flatten -quality 92 favicon.jpg
# Or using icotool and ImageMagick:
icotool -x -o icon.png favicon.ico && convert icon.png -quality 92 favicon.jpgPython
# Python using Pillow
from PIL import Image
# Open ICO and convert to RGB with background fill
ico_image = Image.open('favicon.ico')
if ico_image.mode in ('RGBA', 'LA') or (ico_image.mode == 'P' and 'transparency' in ico_image.info):
alpha = ico_image.convert('RGBA')
bg = Image.new('RGB', alpha.size, (255, 255, 255))
bg.paste(alpha, mask=alpha.split()[3])
bg.save('favicon.jpg', 'JPEG', quality=92)
else:
ico_image.convert('RGB').save('favicon.jpg', 'JPEG', quality=92)
print("Converted favicon.ico to favicon.jpg successfully")Java
// Java native ImageIO conversion
import java.io.File;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.awt.Color;
import java.awt.Graphics2D;
public class IcoToJpg {
public static void main(String[] args) throws Exception {
BufferedImage icoImage = ImageIO.read(new File("favicon.ico"));
BufferedImage jpgImage = new BufferedImage(icoImage.getWidth(), icoImage.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g = jpgImage.createGraphics();
g.setColor(Color.WHITE);
g.fillRect(0, 0, icoImage.getWidth(), icoImage.getHeight());
g.drawImage(icoImage, 0, 0, null);
g.dispose();
ImageIO.write(jpgImage, "jpg", new File("favicon.jpg"));
System.out.println("Converted favicon.ico to favicon.jpg successfully");
}
}