Crop factor calculator
A 50 mm lens on a 1.5 crop body frames like 75 mm on full frame, and its f/1.8 compares as f/2.7 for depth of field. Enter focal length, crop factor and an optional aperture. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Focal length
- 50
- Crop factor
- 1.5
- Optional lens f-number N
- 1.8
- Equivalent focal length
- 75
- Equivalent aperture
- 2.7
- Focal length label
- 50mm
- Equivalent focal label
- 75mm
Crop factor is the simple ratio that translates a lens on a smaller sensor into the field of view it would give on a full-frame 35 mm camera. Multiply the marked focal length by the crop factor and you get the full-frame equivalent millimetres photographers quote when comparing APS-C, Micro Four Thirds, and medium-format bodies. Multiply the f-number by the same factor when you want the equivalent aperture language used for depth-of-field comparisons. This crop factor calculator accepts a positive focal length in millimetres, a positive crop factor, and an optional positive aperture, then returns the equivalent focal length always and the equivalent f-number when aperture is supplied.
How crop factor maps lenses to full-frame equivalents
Start from the physical idea that a full-frame sensor is about thirty-six by twenty-four millimetres with a diagonal near forty-three point three millimetres. A smaller sensor sees a tighter crop of the image circle, so the same lens produces a narrower field of view. The crop factor is defined as the full-frame diagonal divided by the actual sensor diagonal.
APS-C bodies are commonly about one point five times for Nikon, Sony, Fuji, and many others, about one point six times for Canon APS-C, Micro Four Thirds is two times, one-inch sensors sit near two point seven, and true full-frame is one. The arithmetic that answers the everyday question is multiplication: equivalent focal length equals marked focal length times crop factor. A fifty millimetre prime on a one point five crop body behaves, for field of view, like a seventy-five millimetre lens on full frame.
Non-positive focal length, crop factor, or aperture are rejected because a zero or negative scale factor is not a physical conversion and would break the closed-form product.
Where crop factor calculators show up in real work
Photography retailers and rental houses constantly answer which prime will match a full-frame look on a customer APS-C or Micro Four Thirds body; a single trusted oracle that returns equivalent millimetres and optional equivalent f-numbers speeds floor demos and website configurators. Online marketplaces and gear review sites need consistent full-frame language when listing used lenses across sensor formats so shoppers can compare fields of view without mental math errors.
Film schools and workshop curricula assign crop-factor drills when students move between classroom full-frame bodies and personal crop-sensor cameras, and teachers want answer keys that match browser widgets. Firmware authors, camera-simulation games, and light-planning apps encode the same multiplication when previewing how a lens kit behaves after a body swap. Content creators building YouTube explainers or blog gear guides need bulk tables of common primes times common crop factors without re-implementing validation in every spreadsheet.
If you later need exposure-triangle compensation for matching brightness, geometric f-number from pupil diameter, depth-of-field tables, or angle-of-view degrees, treat those as separate search intents and landings rather than overloading this crop factor calculator page.
What you can do with it
APS-C and MFT lens shopping
Convert a marked 35 mm or 50 mm prime to full-frame equivalent millimetres (and optional f-number) before you buy or rent for a crop-sensor body.
Retail and rental floor demos
Give customers instant full-frame language for any lens on APS-C, Canon 1.6×, or Micro Four Thirds without mental multiplication errors.
FAQ
What is crop factor?
Crop factor is the ratio of a full-frame 35 mm sensor diagonal to your camera’s sensor diagonal. Multiply marked focal length (and optionally f-number) by that factor to get full-frame equivalents.
What happens if a value is zero or negative?
Focal length, crop factor, and aperture must be finite and strictly positive; zero or negative scales are not physical conversions.
Does equivalent aperture change exposure?
No. Equivalent aperture here is comparison language for field of view and depth of field versus full frame. Metered exposure still uses the marked f-number on the lens.
What does it cost?
The browser tool is free and runs locally.
What is the full-frame equivalent of a 50mm lens on APS-C?
With a crop factor of 1.5 it is 75 mm. Multiply the marked focal length by the crop factor; add the aperture and f/1.8 is shown as f/2.7 in full-frame depth-of-field terms.
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/crop-factor \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"focal_length":50,"crop_factor":1.5}'const res = await fetch("https://api.kit.forhosting.com/hobby/crop-factor", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"focal_length": 50,
"crop_factor": 1.5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/hobby/crop-factor",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"focal_length": 50,
"crop_factor": 1.5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/hobby/crop-factor", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"focal_length":50,"crop_factor":1.5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"focal_length":50,"crop_factor":1.5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/hobby/crop-factor", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"focal_length": 50,
"crop_factor": 1.5
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "hobby.crop_factor",
"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 inputs fail with a clear invalid_input error instead of inventing nonsense equivalents.
How crop factor maps lenses to full-frame equivalents
When people also talk about equivalent aperture for depth of field, they multiply the f-number by the same crop factor: f slash one point eight on that APS-C body is often described as roughly f slash two point seven in full-frame depth-of-field language. 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
Optionally send aperture as a positive f-number such as one point eight for f slash one point eight. Classic checks include fifty millimetres at crop one point five yielding seventy-five millimetres equivalent, thirty-five millimetres at crop two yielding seventy millimetres on Micro Four Thirds, and eighty-five millimetres at f slash one point four on crop one point six for Canon APS-C portrait comparisons. Wire the free browser form for bag packing and retail floor demos, then call the identical contract from scripts when you need bulk generation of equivalence tables or catalog metadata. Send focal_length as a positive number of millimetres and crop_factor as a positive scale relative to full frame. Aliases include fl, focal, and mm for focal length; crop, cf, and sensor_crop for crop factor; and f_number, f_stop, and n for aperture. Missing required fields, non-numeric strings, NaN, Infinity, and any non-positive value fail with invalid_input and are not charged. On success the response echoes cleaned focal_length, crop_factor, and aperture (null when omitted), plus equivalent_focal_length always and equivalent_aperture when aperture was provided. Human-readable labels such as fifty millimetre and f slash one point eight accompany the numbers, along with formula text and method crop_factor so clients can assert the conversion 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 crop factor calculators show up in real work
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 review metadata
Bulk-produce equivalent focal length and aperture fields for marketplace listings, review databases, and regression fixtures across sensor formats.
Technical questions
Which fields are required?
focal_length (mm) and crop_factor are required and must be finite and positive. aperture is optional; when set it must also be a positive f-number.