Image ICC profile lookup
An ICC profile name can reveal whether an image was prepared for the web, professional print production, or a modern wide-gamut display.
Run — free
This lookup accepts the embedded profile name shown by an image editor, metadata inspector, or asset pipeline. It recognizes common spellings of sRGB, Adobe RGB, and Display P3, reports whether the name represents one of those standard profiles, and explains the profile’s typical use. Unknown names remain clearly marked as unrecognized instead of being guessed, making the result suitable for asset inventories and automated checks.
Read the profile name without guessing from pixels
Color values alone do not say how red, green, and blue should appear. An embedded ICC profile supplies the interpretation that a color-managed application needs, while the profile name gives people and automation a useful first clue about that interpretation. Enter the name exactly as your image editor, metadata tool, or ingestion service reports it. The lookup normalizes capitalization, spacing, punctuation, and familiar suffixes, so labels such as “sRGB IEC61966-2.1” can resolve to the standard sRGB family. It does not inspect image bytes or infer a profile from the apparent colors. That distinction matters because an untagged image may resemble sRGB without actually declaring sRGB, and a custom profile can have a misleading human-readable label. The response preserves the submitted name, states whether it matches one of the three supported standards, and supplies a canonical standard name only when a confident match exists. Use the result as a fast classification aid, not as a substitute for validating the complete ICC payload when exact color reproduction is critical.
Understand the three recognized profile families
sRGB is the conventional choice for web graphics, routine image exchange, and broad compatibility because browsers, consumer software, and many unmanaged workflows commonly assume it. Adobe RGB is associated with photography and print preparation, especially where a wider range of green and cyan colors can be retained through a color-managed workflow. Display P3 combines a DCI-P3-derived color gamut with a display-oriented white point and transfer behavior, making it common for wide-gamut screens, current mobile devices, and digital creative work. The lookup reports these as typical uses, not mandatory rules. A photographer may deliberately deliver an sRGB print file to a laboratory, and a designer may keep a Display P3 master before exporting an sRGB web derivative. Likewise, recognizing a name does not convert pixels between color spaces. Conversion requires a color-management engine, the source profile data, an output profile, and a rendering intent. This capability answers the narrower operational question: which supported standard does this embedded name indicate, and where is that standard most commonly encountered?
Use lookup results safely in an asset workflow
A practical pipeline can extract profile descriptions during upload, send each description to this lookup, and store the classification beside the asset record. Standard sRGB files can follow a general web path, Adobe RGB files can be flagged for a print-aware review, and Display P3 files can remain in a wide-gamut digital workflow or receive an additional compatibility export. When the response says the name is not standard, route the file for inspection rather than automatically assigning a color space. An unknown result may represent a legitimate calibrated monitor profile, a press condition, a camera vendor profile, a localized description, or simply a label outside the supported set. It does not mean the ICC data is invalid. For high-value production, verify the actual profile signature and color-space tags with dedicated ICC tooling, preserve the original embedded bytes, and test the intended output device. The lookup is deterministic and uses no network service, so repeated inputs produce stable classifications. That makes it useful for rules, reports, and audits where a guessed or changing answer would create avoidable risk.
What you can do with it
Triage uploaded images
Classify extracted profile names so web-ready assets and files needing color review follow different processing paths.
Audit a media library
Summarize which assets identify as sRGB, Adobe RGB, or Display P3 and isolate unknown labels for inspection.
Explain metadata to users
Turn a terse embedded profile name into a clear, typical use case without implying that a color conversion occurred.
FAQ
What does the lookup cost?
Each API request costs $0.002.
Does this tool read or upload my image?
No. It accepts only the profile name that you or another tool extracted from the image.
Which standard profiles are recognized?
It recognizes common names for sRGB, Adobe RGB, and Display P3.
Does an unknown result mean the profile is invalid?
No. It means the name did not match one of the three supported standards; it may still be a valid custom or device-specific ICC profile.
Does recognizing a profile convert the image colors?
No. The response classifies a name and describes a typical use; it does not alter pixels or perform color-space conversion.
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/image/icc-profile-lookup \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"profile_name":"Display P3"}'const res = await fetch("https://api.kit.forhosting.com/image/icc-profile-lookup", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"profile_name": "Display P3"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/icc-profile-lookup",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"profile_name": "Display P3"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/icc-profile-lookup", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"profile_name":"Display P3"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"profile_name":"Display P3"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/icc-profile-lookup", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"profile_name": "Display P3"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.icc_profile_lookup",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
max_mb | 15 |
max_megapixels | 12 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |