Print size & DPI calculator
A 3000 × 2000 pixel photo at 300 DPI prints 10 inches wide, or 25.4 cm: enter the pixel size and either a DPI or the print size you want, in inches, centimetres or millimetres, and get the other side. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Image width in pixels
- 3,000
- Image height in pixels
- 2,000
- Dpi
- 300
- Dpi width
- 300 in
- Dpi height
- 300
- Calculation mode
- print_size
- Print width
- 10
Print size and DPI are the two sides of one simple relationship: physical inches equal pixels divided by dots per inch, and the DPI required for a frame equals pixels divided by those inches. Photographers, designers, and print-shop staff use that formula every day when a client asks whether a three-thousand-pixel-wide file will fill an eight-by-ten frame at photo quality, or how large a poster they can hang at one-hundred-fifty DPI. This calculator accepts positive width and height in pixels, then either a target DPI to return print size in inches, centimetres, and millimetres, or a target print width and height in those units to return the required DPI on each axis.
How pixels, DPI, and print size relate
Start from the definition that DPI means dots per inch on the printed page, often used interchangeably with PPI for raster images that will be sent to a printer. If an image is three thousand pixels wide and you print it at three hundred DPI, the physical width is three thousand divided by three hundred, which is ten inches. The same division applies to height.
Flip the formula when you know the frame: required DPI equals pixel count divided by the physical size in inches. A four-thousand-pixel-wide file forced into an eight-inch-wide mat needs five hundred DPI if every pixel is used without cropping; if the lab downsamples, effective quality falls. Units other than inches convert with the fixed factors two point five four centimetres per inch and twenty-five point four millimetres per inch, so the same arithmetic works for European paper sizes and shop tickets written in centimetres.
When both print width and print height are supplied and the aspect ratio does not match the image, the two axes imply different DPI values; the limiting resolution is the smaller of those two, because the tighter axis determines how sharp the whole print can be without resampling or letterboxing. Non-positive pixel dimensions are rejected because a zero or negative extent is not a physical file size and would break the division.
Where print size and DPI calculators show up in real work
Retail photo labs and online print stores constantly answer whether a phone export is large enough for a poster or only a wallet print; a single trusted oracle that returns inches at a chosen DPI and the DPI needed for a target frame speeds quotes and reduces remakes. Wedding and event photographers package albums and canvases in standard inch sizes and need to confirm that each edited file clears one-hundred-fifty or three-hundred DPI at the ordered edge before sending to the lab.
Graphic designers preparing magazine ads, packaging dielines, and large-format banners convert between pixel artboards and centimetre mechanicals without spreading inconsistent spreadsheet formulas across the team. Educators and camera-club workshops assign print-resolution drills so students learn why a two-megapixel file fails a gallery print even when it looks fine on a phone screen. If you later need image resize, crop, colour conversion, or PDF imposition for multi-up sheets, treat those as separate search intents and landings rather than overloading this print size and DPI calculator page.
What you can do with it
Lab and print-shop quotes
Convert a client's pixel dimensions at 150 or 300 DPI into inches and centimetres so counter staff can promise a frame size without mental math errors.
Poster and canvas checks
Given a target print width, compute the required DPI and reject files that fall below your minimum quality threshold before the order goes to press.
FAQ
What is the formula for print size from DPI?
Centimetres and millimetres use 2.54 cm and 25.4 mm per inch.
What happens if pixel dimensions are zero or negative?
Pixel width and height must be finite positive numbers; non-positive values are never turned into a fake print size.
What does it cost?
The browser tool is free and runs locally.
How big can I print a 3000 × 2000 pixel photo at 300 DPI?
10 inches wide, which is 25.4 cm, because 3000 divided by 300 is 10. The height comes from the 2000 pixels the same way, and 300 DPI or more counts as photo quality.
What if my frame has a different shape from my photo?
Enter both the print width and height and each side will need a different DPI. The smaller of the two is the one that limits how sharp the whole print can be without cropping or resampling.
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/hobby/print-dpi \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"width_px":3000,"height_px":2000}'const res = await fetch("https://api.kit.forhosting.com/hobby/print-dpi", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"width_px": 3000,
"height_px": 2000
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/hobby/print-dpi",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"width_px": 3000,
"height_px": 2000
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/hobby/print-dpi", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"width_px":3000,"height_px":2000}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"width_px":3000,"height_px":2000}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/hobby/print-dpi", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"width_px": 3000,
"height_px": 2000
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "hobby.print_dpi",
"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
Zero, negative, NaN, and Infinity pixel dimensions fail with a clear invalid_input error instead of inventing nonsense sizes.
How pixels, DPI, and print size relate
The entire pipeline uses no network, no randomness, and no wall-clock timestamps, so identical inputs always produce identical JSON.
What you send and what you get back
Classic checks include three thousand by two thousand pixels at three hundred DPI yielding ten by roughly six point six seven inches, and three thousand pixels across a ten-inch width needing three hundred DPI. Send width_px and height_px as positive finite numbers for the raster dimensions. For print-size mode also send dpi as a positive target resolution; the response returns print_width and print_height in the chosen unit plus the same sizes in inches, centimetres, and millimetres. For DPI mode omit dpi and instead send print_width and/or print_height in unit in, cm, or mm; the response returns dpi, dpi_width, and dpi_height along with the resolved physical sizes. Aliases include width and w_px for width_px, height and h_px for height_px, ppi for dpi, and physical_width for print_width. Missing mode, both modes at once, non-numeric strings, NaN, Infinity, unknown units, and any non-positive pixel, DPI, or print size fail with invalid_input and are not charged. On success the response also includes mode print_size or dpi, a coarse quality label such as photo_quality at three hundred DPI or above, formula text, and method print_dpi so clients can assert the path in tests. Pricing for successful API calls is the published base of $0.002 per item; validation failures do not consume prepaid balance.
Where print size and DPI calculators show up in real work
Content platforms and batch pipelines that generate product mockups need deterministic JSON for every SKU size so quality gates fail closed when DPI drops below a threshold. Because this capability is a pure parse engine, API pricing is the published base of $0.002 per successful item and failed validation does not consume balance.
Integration use cases
Catalog and fixture tables
Bulk-produce print size and DPI fields for product mockups, size charts, and regression fixtures across common photo and design resolutions.
Technical questions
How do I find the DPI needed for a target print size?
Provide width_px, height_px, and print_width and/or print_height (unit in, cm, or mm). The calculator returns dpi = pixels / print_inches on each known axis.
Can I send both DPI and a target print size?
No. Choose one mode: dpi to compute print size, or print_width/print_height to compute required DPI. Sending both fails with invalid_input.