Required print DPI calculator
The required print DPI calculator connects a physical print plan to the digital image that must support it.
Run — free
Enter a desired width, height, and target DPI to find the minimum whole-pixel dimensions needed for the source file. Or enter the source image's pixel dimensions with the intended print size to calculate the resolution available along each axis. It supports inches, centimetres, and millimetres, applies transparent formulas, and rejects zero, negative, missing, or non-finite numeric values instead of returning a misleading result.
Calculate the source pixels a print needs
Start with the finished width and height of the print, select inches, centimetres, or millimetres, and provide the target DPI requested by your printer or production specification. The calculator converts the physical dimensions to inches because DPI means dots per inch, then multiplies each axis by the target resolution. Required dimensions are rounded upward to whole pixels. Rounding upward matters: a mathematical result of 2999.2 pixels cannot be represented by a fractional source pixel, and rounding down would leave that axis slightly below the requested resolution. The result therefore describes the minimum image canvas that fully satisfies the entered DPI on both axes. For example, a ten-by-eight-inch print at 300 DPI needs at least 3000 by 2400 pixels. This calculation does not invent detail or upscale an existing file. It tells you the acquisition, export, scan, render, or crop dimensions to aim for before sending work to print. When planning a new illustration or photograph, use the returned dimensions as a minimum rather than an ideal maximum, since later cropping and alignment can consume pixels around the edges.
Calculate DPI from an existing image
To evaluate a source file you already have, enter its width and height in pixels together with the physical print width and height. Leave the target DPI out. The calculator divides pixel width by print width in inches and repeats the calculation independently for height. It reports horizontal DPI, vertical DPI, and the limiting DPI, which is the lower of the two axis values. The lower value is useful because it identifies the direction with less pixel coverage at the requested physical size. Differences between the two values often reveal an aspect-ratio mismatch: the image and print rectangle do not share the same proportions, so a real production workflow must crop, distort, or leave borders. This tool reports the arithmetic without silently choosing one of those layout decisions. Use the axis results when assessing a crop, because removing pixels changes the effective DPI. Also remember that DPI here describes pixel density at the chosen size, not visual quality by itself. Focus, compression, noise, sharpening, viewing distance, paper, and the printer's process all affect the finished appearance even when two files produce the same numeric DPI.
Use units and results consistently
Physical dimensions may be supplied in inches, centimetres, or millimetres. The selected unit applies to both print dimensions, while DPI remains dots per inch by definition. Unit conversion occurs before multiplication or division, so a 25.4-centimetre width is treated exactly like a ten-inch width within normal floating-point precision. Keep both dimensions in the same selected unit and use the final trimmed print size, not the paper sheet size when borders or bleed extend beyond the visible artwork. If a design includes bleed, calculate the pixel requirement for the full exported area as a separate check; otherwise the bleed itself may fall below the target density. Every numeric field that is used must be finite and strictly greater than zero. A zero or negative size has no physical meaning, and accepting it could produce infinity, negative resolution, or a superficially plausible but unusable answer. The endpoint costs $0.002 per API request and performs only deterministic arithmetic: it does not upload, inspect, resize, or retain an image. Results are stable for the same input, making the capability suitable for quoting forms, preflight automation, export checklists, and repeatable print-production rules.
What you can do with it
Plan a photo export
Find the minimum pixel width and height needed for a photograph at a lab's requested DPI and final print size.
Preflight supplied artwork
Compare an existing image's horizontal and vertical DPI at the size specified by a print job.
Set a rendering canvas
Convert a poster or illustration brief into concrete whole-pixel canvas dimensions before production begins.
FAQ
How are required pixel dimensions rounded?
Each axis is rounded up to the next whole pixel so the result never falls below the requested DPI.
Why can width DPI and height DPI differ?
They differ when the pixel aspect ratio does not match the physical print aspect ratio. Cropping, borders, or distortion may be needed.
What is limiting DPI?
It is the lower of horizontal and vertical DPI, identifying the axis with the least pixel density at the requested size.
Does the calculator resize or inspect my image?
No. It uses only the numeric dimensions you submit and performs deterministic arithmetic without image upload or storage.
How much does an API calculation cost?
Each API request costs $0.002.
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/misc2/print-resolution-dpi-calc \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"print_width":10,"print_height":8,"dpi":300}'const res = await fetch("https://api.kit.forhosting.com/misc2/print-resolution-dpi-calc", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"print_width": 10,
"print_height": 8,
"dpi": 300
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/misc2/print-resolution-dpi-calc",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"print_width": 10,
"print_height": 8,
"dpi": 300
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/misc2/print-resolution-dpi-calc", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"print_width":10,"print_height":8,"dpi":300}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"print_width":10,"print_height":8,"dpi":300}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/misc2/print-resolution-dpi-calc", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"print_width": 10,
"print_height": 8,
"dpi": 300
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "misc2.print_resolution_dpi_calc",
"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. |