What does the TIFF to SVG Converter do?
The TIFF to SVG Converter transforms desktop Tagged Image File Format (.tiff, .tif) graphics into scalable, XML-compliant SVG vector files (.svg) and Base64 Data URIs (data:image/svg+xml;utf8,...). It parses Image File Directory (IFD) tags across Little-Endian (Intel) and Big-Endian (Motorola) TIFF binary headers to extract intrinsic dimensions and compression types, generating responsive <svg> vector containers with configurable viewBox coordinates, resolution scaling presets, custom dimension overrides, and optional background color fills.
Core Concepts
- TIFF Image Specification: Tagged Image File Format (TIFF) is a flexible bitmap container format widely used in desktop publishing, photography, medical imaging, and geospatial scanning. It stores metadata tags in an Image File Directory (IFD).
- SVG Vector Encapsulation: Scalable Vector Graphics (SVG) is an XML-based vector format. By embedding TIFF bitstreams inside lightweight, responsive SVG containers, developers can render heavy print and scan assets seamlessly in modern web browsers without specialized desktop viewer plugins.
- Resolution Scaling & Retina Export: Export graphics at 1x, 2x Retina, 3x, or 4x print quality multipliers, or enforce exact pixel width and height boundaries.
- Background Matte Composition: Preserve transparent alpha channels or composite the graphic over solid white, dark navy, or custom hex color fills.
How to use the tool?
- Upload or Paste Input: Drag & drop a
.tiffor.tiffile into the drop zone or paste a Base64-encoded Data URI string into the text editor. - Configure Resolution Scale & Dimensions: Select a scale preset (1x, 2x, 3x, 4x) or enter explicit width and height values in pixels.
- Select Background Fill: Choose transparent alpha or select a solid background color (white, dark navy, or custom hex code).
- Convert to SVG: Click Convert to SVG to process the image and render the vector preview.
- Download or Copy: Click Download to save the standalone
.svgvector document, or copy the SVG code for direct HTML, React, or CSS embedding.
Related Developer Utilities
- SVG to PNG Converter
- TIFF to PNG Converter
- TIFF to JPG Converter
- PNG to SVG Converter
- JPG to SVG Converter
REST API Integration
blueutils.com provides a free REST API endpoint (POST https://blueutils.com/api/image/tiff-to-svg) for programmatic image vector generation.
API Request Parameters
| Name | Type | Description | Example |
|---|---|---|---|
rawText |
String | TIFF Base64 payload or Data URI string. | "data:image/tiff;base64,SUkqAAgA..." |
options.scale |
Number | Optional resolution scaling multiplier (1 to 10). | 2 |
options.width |
Number | Optional explicit target width in pixels. | 800 |
options.height |
Number | Optional explicit target height in pixels. | 600 |
options.bgColor |
String | Optional background fill color (hex code or 'transparent'). |
"#ffffff" |
API Request Payload Examples
cURL
curl -X POST https://blueutils.com/api/image/tiff-to-svg \
-H "Content-Type: application/json" \
-d '{ "rawText": "data:image/tiff;base64,SUkqAAgA...", "options": { "scale": 1, "bgColor": "transparent" } }'Python
import requests
url = "https://blueutils.com/api/image/tiff-to-svg"
payload = {
"rawText": "data:image/tiff;base64,SUkqAAgA...",
"options": {"scale": 2, "bgColor": "transparent"}
}
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,SUkqAAgA...\", \"options\": {\"scale\": 1}}";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://blueutils.com/api/image/tiff-to-svg"))
.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 conversion succeeded. | true |
mimeType |
String | Output MIME type. | "image/svg+xml" |
originalFormat |
String | Detected source image MIME type. | "image/tiff" |
svg |
String | Generated SVG XML markup. | "<svg xmlns=..." |
dataUri |
String | Complete SVG Data URI. | "data:image/svg+xml;utf8,..." |
metadata.originalWidth |
Number | Extracted source image width in pixels. | 400 |
metadata.originalHeight |
Number | Extracted source image height in pixels. | 300 |
metadata.targetWidth |
Number | Computed output width in pixels. | 800 |
metadata.targetHeight |
Number | Computed output height in pixels. | 600 |
metadata.scale |
Number | Applied scaling factor. | 2 |
metadata.endianness |
String | Endianness byte order (Little Endian or Big Endian). |
"Little Endian (Intel)" |
metadata.compression |
String | Detected compression algorithm. | "Uncompressed" |
API Response Payload Examples
Success Response (HTTP 200 OK)
{
"isValid": true,
"mimeType": "image/svg+xml",
"originalFormat": "image/tiff",
"svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 400 300\" width=\"800\" height=\"600\"><image width=\"400\" height=\"300\" href=\"data:image/tiff;base64,...\"/></svg>",
"dataUri": "data:image/svg+xml;utf8,%3Csvg...",
"metadata": {
"originalWidth": 400,
"originalHeight": 300,
"targetWidth": 800,
"targetHeight": 600,
"scale": 2,
"bgColor": "transparent",
"endianness": "Little Endian (Intel)",
"compression": "Uncompressed",
"aspectRatio": 1.3333,
"originalSizeBytes": 2048,
"formattedSize": "2.0 KB"
}
}Validation Failure Response (HTTP 400 Bad Request)
{
"isValid": false,
"error": "TIFF image payload cannot be empty. Please upload a TIFF file or provide a Base64 string."
}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 SVG?
Integrating the TIFF to SVG API into CI/CD build steps, archiving pipelines, or automated agent workflows provides concrete advantages:
- Automated Vector Packaging: Programmatically wrap scanned documents, blueprints, and archival TIFF photos into responsive SVG files for browser consumption.
- Optimized Token Efficiency for AI Agents: Offload binary image parsing and XML construction to a fast, deterministic endpoint.
- Deterministic Accuracy Without Hallucinations: Ensures valid XML syntax, exact TIFF dimension extraction, and valid MIME headers without LLM hallucination risks.
Native Usage
Convert TIFF files into SVG vector wrappers locally using native operating system utilities and standard libraries:
Windows (PowerShell)
# Wrap TIFF into an SVG document using PowerShell
$tiffBytes = [System.IO.File]::ReadAllBytes("input.tiff")
$base64 = [System.Convert]::ToBase64String($tiffBytes)
$svg = @"
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1000 1000" width="1000" height="1000">
<image width="1000" height="1000" href="data:image/tiff;base64,$base64"/>
</svg>
"@
[System.IO.File]::WriteAllText("output.svg", $svg)
Write-Output "Converted input.tiff to output.svg successfully"Linux / Unix (Bash)
# Wrap TIFF into an SVG document using Bash and base64
BASE64_DATA=$(base64 -w 0 input.tiff)
cat <<EOF > output.svg
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1000 1000" width="1000" height="1000">
<image width="1000" height="1000" href="data:image/tiff;base64,${BASE64_DATA}"/>
</svg>
EOF
echo "Converted input.tiff to output.svg successfully"Python
# Standard library Python conversion
import base64
with open("input.tiff", "rb") as f:
b64_data = base64.b64encode(f.read()).decode("utf-8")
svg_content = f"""<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1000 1000" width="1000" height="1000">
<image width="1000" height="1000" href="data:image/tiff;base64,{b64_data}"/>
</svg>"""
with open("output.svg", "w", encoding="utf-8") as f:
f.write(svg_content)
print("Converted input.tiff to output.svg successfully")Java
// Standard library Java conversion
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Base64;
public class TiffToSvg {
public static void main(String[] args) throws Exception {
byte[] bytes = Files.readAllBytes(Paths.get("input.tiff"));
String b64 = Base64.getEncoder().encodeToString(bytes);
String svg = "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 1000 1000\" width=\"1000\" height=\"1000\">\n" +
" <image width=\"1000\" height=\"1000\" href=\"data:image/tiff;base64," + b64 + "\"/>\n" +
"</svg>";
Files.writeString(Paths.get("output.svg"), svg);
System.out.println("Converted input.tiff to output.svg successfully");
}
}