What does the TIFF to PNG Converter do?
The TIFF to PNG Converter transforms uncompressed, high-bit-depth Tagged Image File Format (TIFF and TIF) raster graphics into universal, lossless Portable Network Graphics (PNG) format with custom scaling and dimension overrides.
TIFF is standard across professional print publishing, document archival, medical imaging (radiography, CAT scans), and geographic information systems (GIS / GeoTIFF). However, desktop TIFF files are heavy, difficult to share, and unsupported by standard web browsers. Converting TIFF into PNG delivers lossless fidelity, web compatibility, and reduced payload sizes.
Core Concepts
- IFD & Header Parsing: Inspects little-endian (
II) and big-endian (MM) TIFF Image File Directories (IFD) to extract intrinsic width, height, compression mode, and bit depth. - Universal Web Compatibility: Transforms unviewable TIFF bitmaps into universally renderable PNG containers for browsers and mobile applications.
- Resolution Scaling (@2x / @3x / @4x): Upscales or downsizes dense scan matrices into crisp PNG raster outputs.
- Data URI & Code Snippet Generation: Generates copy-ready Base64 Data URIs, HTML tags, and CSS background rules.
How to use the tool?
- Upload TIFF File or Paste Base64: Drag and drop a
.tiffor.tiffile into the dedicated drop zone, or paste a Base64 TIFF string into the editor. - Select Resolution Scale: Choose
1x (Original Size),2x (@2x Retina HD),3x (@3x Ultra), or4x (@4x Print Quality). - Optional Custom Dimensions: Enter custom pixel
WidthorHeightoverrides if resizing is needed. - Convert to PNG: Click Convert to PNG to execute conversion.
- Download or Copy: Click Download to save your
.pngfile or Copy the Base64 Data URI.
Related Developer Utilities
- WebP to PNG Converter — Convert modern WebP graphics to PNG.
- JPG to PNG Converter — Convert JPG photos to lossless PNG images.
- SVG to PNG Converter — Rasterize Scalable Vector Graphics into crisp PNG assets.
- Base64 to Image Decoder — Decode Base64 strings to downloadable images.
REST API Integration
blueutils.com provides a free REST API endpoint (POST https://blueutils.com/api/image/tiff-to-png) for programmatic validation, IFD dimension parsing, and PNG Data URI formatting.
API Request Parameters
| Name | Type | Description | Example |
|---|---|---|---|
rawText |
String | Raw Base64 string or Data URI of the TIFF image. | "data:image/tiff;base64,SUkqAAgAAA..." |
options.scale |
Number | Multiplier scale factor (1, 2, 3, 4). Default is 1. |
2 |
options.width |
Number | Optional target width in pixels. | 1200 |
options.height |
Number | Optional target height in pixels. | 800 |
API Request Payload Examples
cURL
curl -X POST https://blueutils.com/api/image/tiff-to-png \
-H "Content-Type: application/json" \
-d '{
"rawText": "data:image/tiff;base64,SUkqAAgAAAASAP4ABAABAAAAAAAAAAABBAABAAAAAgAAAAEBBAABAAAAAgAAAAIBAwADAAAAwgAAAAMBAwABAAAACAAAAAYBAwABAAAAAgAAABEBBAABAAAA4AAAAAAAAAA=",
"options": {
"scale": 1
}
}'Python
import requests
url = "https://blueutils.com/api/image/tiff-to-png"
payload = {
"rawText": "data:image/tiff;base64,SUkqAAgAAAASAP4ABAABAAAAAAAAAAABBAABAAAAAgAAAAEBBAABAAAAAgAAAAIBAwADAAAAwgAAAAMBAwABAAAACAAAAAYBAwABAAAAAgAAABEBBAABAAAA4AAAAAAAAAA=",
"options": {
"scale": 1
}
}
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/tiff;base64,SUkqAAgAAAASAP4ABAABAAAAAAAAAAABBAABAAAAAgAAAAEBBAABAAAAAgAAAAIBAwADAAAAwgAAAAMBAwABAAAACAAAAAYBAwABAAAAAgAAABEBBAABAAAA4AAAAAAAAAA=",
"options": {
"scale": 1
}
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://blueutils.com/api/image/tiff-to-png"))
.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 TIFF was parsed successfully. | true |
mimeType |
String | Target output MIME type (image/png). |
"image/png" |
originalFormat |
String | Detected input MIME type (image/tiff). |
"image/tiff" |
dataUri |
String | Base64 PNG Data URI string. | "data:image/png;base64,..." |
metadata.originalWidth |
Number | Original width in pixels extracted from IFD Tag 256. | 800 |
metadata.originalHeight |
Number | Original height in pixels extracted from IFD Tag 257. | 600 |
metadata.targetWidth |
Number | Scaled target pixel width. | 800 |
metadata.targetHeight |
Number | Scaled target pixel height. | 600 |
metadata.scale |
Number | Scale factor applied. | 1 |
metadata.endianness |
String | Detected TIFF byte order (Little Endian (Intel) or Big Endian (Motorola)). |
"Little Endian (Intel)" |
metadata.compression |
String | Detected TIFF compression algorithm. | "Uncompressed" |
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/png",
"originalFormat": "image/tiff",
"dataUri": "data:image/png;base64,SUkqAAgAAA...",
"base64": "SUkqAAgAAA...",
"metadata": {
"originalWidth": 800,
"originalHeight": 600,
"targetWidth": 800,
"targetHeight": 600,
"scale": 1,
"endianness": "Little Endian (Intel)",
"compression": "Uncompressed",
"aspectRatio": 1.3333,
"originalSizeBytes": 1440000,
"formattedSize": "1.4 MB"
},
"snippets": {
"html": "<img src=\"data:image/png;base64,...\" width=\"800\" height=\"600\" alt=\"Converted PNG Image\" />",
"css": "background-image: url(\"data:image/png;base64,...\");",
"markdown": ""
}
}Validation Failure Response (HTTP 400 Bad Request)
{
"isValid": false,
"error": "Invalid format: Expected a valid TIFF image (II/MM magic bytes or data:image/tiff)."
}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 TIFF to PNG?
Automating TIFF conversion via API in build workflows and upload pipelines offers major benefits:
- Archival Document Web Publishing: Automatically convert scanned legal and medical TIFF documents into web-friendly PNG images for in-browser viewing.
- Optimized Token Efficiency for AI Agents: Extracts clean image dimensions and endianness metadata before sending image data to multimodal vision agents.
- Deterministic Pipeline Integration: Enables automated CI/CD release scripts to validate heavy TIFF assets and generate lightweight PNG web fallbacks.
Native Usage
How to convert TIFF to PNG locally using command-line tools:
Windows (CMD / PowerShell)
# PowerShell: Convert TIFF to PNG using ImageMagick
magick "input.tiff" "output.png"Linux / Unix (Bash / Shell)
# Bash: Convert TIFF to PNG using ImageMagick
convert input.tiff output.png
# Or using tiff2png:
tiff2png -png -dest . input.tiffPython
# Python using Pillow (PIL)
from PIL import Image
image = Image.open('input.tiff')
image.save('output.png', 'PNG')
print("Converted input.tiff to output.png successfully")Java
// Java using ImageIO (standard library)
import java.io.File;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
public class TiffToPng {
public static void main(String[] args) throws Exception {
BufferedImage inputImage = ImageIO.read(new File("input.tiff"));
ImageIO.write(inputImage, "png", new File("output.png"));
System.out.println("Converted input.tiff to output.png successfully");
}
}