DPI / PPI resolution converter
10 dots per millimetre equal 254 dpi, because an inch is exactly 25.4 mm. Convert resolution between dpi, ppi, dpcm, ppcm, dpmm and ppmm for print tickets, screen specs and imaging datasheets, keeping the dpi or ppi label you chose. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Value
- 96
- From
- Dpi
- To
- Dpcm
- Result
- 37.7952755906 dpcm
- Converted
- 37.7952755906
- Value dpi
- 96
- Factor
- 0.3937007874
A DPI and PPI resolution converter turns one display or print density reading into another unit without spreadsheet formulas or mental inch-to-metric tables. Enter a positive resolution value plus a source unit and a target unit among dots per inch, pixels per inch, dots or pixels per centimetre, and dots or pixels per millimetre; the tool returns the converted magnitude, the intermediate in dpi, the exact unit factor applied, and step-by-step substitution lines you can paste into a design brief or print ticket. Designers matching CSS devicePixelRatio notes to print specs, prepress operators converting press dpi into metric shop sheets, mobile developers reconciling Android px density with iOS points documentation, and students learning exact inch definitions all need the same deterministic path.
Which resolution units are supported and how conversion works
This capability converts among six everyday resolution density units that dominate screen specs, print jobs, CSS discussions, and imaging hardware datasheets. Dots per inch (dpi) are the internal hub and the classic print measure of how many addressable dots fall in one international inch. Pixels per inch (ppi) use the same numeric scale for display density; this converter preserves the dpi versus ppi label you send so reports stay readable, while applying identical conversion factors because both count samples per inch.
Dots per centimetre (dpcm) and pixels per centimetre (ppcm) follow the exact relation of one inch equals two point five four centimetres, so one dpcm equals two point five four dpi. Dots per millimetre (dpmm) and pixels per millimetre (ppmm) use one inch equals twenty-five point four millimetres, so one dpmm equals twenty-five point four dpi. Conversion multiplies the input by how many dpi equal one source unit, then divides by how many dpi equal one target unit.
Same-unit requests succeed and return the input magnitude with a short message that no change of unit was required.
Practical tips, limits, and when to use this landing
Prefer sending bare numbers for value when you control the client; string numbers are accepted only when they match a strict finite numeric pattern without currency symbols or thousand separators. Round-trip checks are straightforward: convert A to B and B back to A and confirm you recover the original within the published twelve-decimal rounding.
Classic teaching examples include ninety-six dpi to about thirty-seven point eight dpcm for screen defaults, three hundred dpi to about eleven point eight one ppmm for photo print shops, and ten dpmm back to two hundred fifty-four dpi for metric press sheets. Stay inside the absolute range so intermediate dpi values cannot overflow.
This landing targets people searching for a dpi converter, ppi to dpcm, dots per inch to millimetre, or pixels per centimetre online; it is not a print-size calculator that turns pixel width into inches, not a typography point-to-pixel tool at ninety-six dpi CSS, and not a monitor PPI estimator from diagonal size.
What you can do with it
Prepress and print ticket conversion
Convert press dpi into dpcm or dpmm for metric shop sheets and ticket systems without hand-multiplying by 2.54 or 25.4.
Screen density and CSS notes
Developers reconcile ppi device notes with metric density tables when documenting responsive layouts or comparing Android and desktop pixel densities.
Imaging datasheet comparison
Engineers convert scanner and camera resolution specs between dpi, ppcm, and ppmm when comparing vendor sheets written in mixed regional units.
FAQ
Are DPI and PPI treated as the same number?
Yes for conversion factors: both count samples per inch. The response keeps your chosen labels (dpi versus ppi) so print and display vocabulary stay clear.
Is the resolution converter free?
The browser tool is free and runs locally.
How many dpi is one dot per centimetre?
One dot per centimetre is 2.54 dpi, because an inch is exactly 2.54 cm. Multiply a dpcm value by 2.54 to get dpi, or divide a dpi value by 2.54 to go the other way.
Can I enter zero or a negative resolution?
No. A resolution counts dots or pixels in a length, so it is never zero or below. Such values are rejected instead of being turned into a misleading result.
Which resolution units can I convert between?
Six: dots per inch, pixels per inch, dots and pixels per centimetre, and dots and pixels per millimetre. Every conversion passes through dots per inch, so a round trip brings back your starting value.
Related tools
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/conv/dpi-ppi \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":96,"from":"dpi","to":"dpcm"}'const res = await fetch("https://api.kit.forhosting.com/conv/dpi-ppi", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": 96,
"from": "dpi",
"to": "dpcm"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/conv/dpi-ppi",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": 96,
"from": "dpi",
"to": "dpcm"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/conv/dpi-ppi", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":96,"from":"dpi","to":"dpcm"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":96,"from":"dpi","to":"dpcm"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/conv/dpi-ppi", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"value": 96,
"from": "dpi",
"to": "dpcm"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "conv.dpi_ppi",
"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.
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. |
Technical notes
Unknown unit names fail with a clear invalid_input error instead of silent wrong factors.
Which resolution units are supported and how conversion works
Common aliases are accepted case-insensitively: dots per inch and d.p.i for dpi; pixels per inch, px/in, and px per inch for ppi; dots/cm and dots per centimetre for dpcm; pixels/cm and px/cm for ppcm; dots/mm, dots per mm, and the short form dpm for dpmm; and pixels/mm, px/mm, and ppm for ppmm in this converter. If the name is not on that list the solver rejects the request with invalid_input naming the bad field and listing supported units, so clients never guess whether a typo produced a wrong number. Zero and negative values are rejected because resolution density is not a signed quantity; absolute magnitude must stay within the published one-trillion limit so intermediate products remain finite in IEEE double precision on the Worker and in the browser.
How to call the API and read the response
Value must be a finite positive number or a strict numeric string within absolute limits of one trillion. Wire this into design tools, prepress checklists, mobile density helpers, or batch jobs that already hold a resolution reading and only need a second unit for display, print tickets, or regulatory comparison without shipping floating conversion tables in every app binary. Send a JSON body with three required fields: value (aliases resolution, amount, and n), from (aliases from_unit, unit_from, and source), and to (aliases to_unit, unit_to, and target). From and to must resolve to supported unit names after alias normalization. On success the response echoes the rounded input value, canonical from and to labels, result and converted set to the same rounded target magnitude, value_dpi as the intermediate in dots per inch, unit as the target label, factor as the from-to multiplier, formula as the short equation string, message as an English summary, steps as ordered substitution lines, and supported_units as the six canonical identifiers. Failed validation—missing fields, non-finite numbers, non-positive values, values outside absolute limits, or an unknown unit name—returns invalid_input and is never charged. Pricing is a flat $0.002 per successful request with unit item.
Practical tips, limits, and when to use this landing
Normalize display labels on your side if you need locale-specific spellings—this API always returns the short canonical tokens dpi, ppi, dpcm, ppcm, dpmm, and ppmm so automated tests stay stable. Prefer this capability when both endpoints are among the six supported density units and you need deterministic factors and step strings; if you need physical print dimensions from pixel counts, use a print size and DPI calculator instead. Failed tasks that return invalid_input do not consume prepaid balance, which keeps exploratory scripts cheap when clients deliberately probe unknown unit names.
Technical questions
Which resolution units can I convert?
dpi, ppi, dpcm, ppcm, dpmm, and ppmm, including common aliases such as dots per inch, px/cm, dots/mm, and dpm for dots per millimetre.
What happens if I send an unknown unit name?
The API returns invalid_input, names the bad field, and lists the supported units. The failed task is not charged.
Are results deterministic across browser and API?
Yes. Handler and shared lib.js use fixed exact inch factors (2.54 cm, 25.4 mm) and twelve-decimal rounding, so golden examples match production.