Film speed converter
Read any film speed on the scale you need: ISO 100 film is 21 DIN, still 100 in ASA and Sv 5 in APEX terms, with GOST covered too. Handy for film boxes, darkroom manuals and vintage camera dials. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Value
- 100
- Source film-speed scale
- iso
- Target film-speed scale
- din
- Result
- 21
- From label
- ISO arithmetic
- To label
- DIN degrees
- Iso arithmetic
- 100
A film speed converter turns a sensitivity written on one photographic scale into another without hunting charts, spreadsheet formulas, or aging box lids.
Supported scales and how the conversion is computed
Arithmetic ISO and ASA are identity mappings. DIN and ISO logarithmic degrees use the exact conventional relation DIN equals ten times the base-ten logarithm of S plus one, so one hundred ISO becomes twenty-one DIN and four hundred ISO becomes twenty-seven DIN. Legacy GOST uses the fixed factor zero point nine times S.
APEX Sv uses S equals three point one two five times two to the power of Sv, so Sv five maps to ISO one hundred. Because the intermediate is always ISO arithmetic, converting A to B and B to A is consistent up to the published rounding of twelve decimal places, and there is no pairwise matrix that can drift out of sync. Exposure value from aperture and shutter, film-stock recommendations, and push-process advice are intentionally out of scope so photographers get predictable scale-only results under one clear convention.
For film boxes, light meters and darkrooms
Use the free in-browser film speed converter when you need a quick ISO-to-DIN, ASA-to-GOST, or APEX-Sv-to-ISO check while reading a film box, darkroom manual, light-meter handbook, or vintage camera scale. Open the page, enter the number and scales, and copy the result without installing a spreadsheet, a unit library, or a desktop calculator pack. Source inputs follow the same retention rules as other KIT parse items, and results are safe to cache because the algorithm is fully deterministic.
Authors shipping mobile apps or chatbots can map the result and formula fields directly into cards that show both the number and the conversion path photographers expect on paper.
What you can do with it
Film boxes and darkroom logs
Convert ISO box ratings to DIN degrees or GOST numbers when manuals, meters, and imported film stock use different printed scales.
Light meters and APEX education
Map APEX speed value Sv to ISO arithmetic (and back) when teaching additive exposure systems or checking meter scales.
FAQ
Which film-speed scales does this converter support?
ISO arithmetic, ASA, DIN degrees, ISO logarithmic degrees, legacy GOST, and APEX speed value (Sv).
Are ISO and ASA the same number?
Yes for modern arithmetic speeds. This converter treats ISO arithmetic and ASA as identical numerical scales; converting either way is an identity mapping.
What happens if I send an unknown unit?
The message names the field and lists supported units. Validation failures are not charged.
Is the film speed converter free?
The browser tool runs free on your device.
How do I convert ISO to DIN?
Take the base-ten logarithm of the ISO number, multiply it by 10 and add 1. That is why ISO 100 becomes 21 DIN and ISO 400 becomes twenty-seven DIN. The converter applies the exact formula instead of a rough chart.
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/film-speed \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":100,"from":"iso","to":"din"}'const res = await fetch("https://api.kit.forhosting.com/conv/film-speed", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": 100,
"from": "iso",
"to": "din"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/conv/film-speed",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": 100,
"from": "iso",
"to": "din"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/conv/film-speed", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":100,"from":"iso","to":"din"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":100,"from":"iso","to":"din"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/conv/film-speed", 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": 100,
"from": "iso",
"to": "din"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "conv.film_speed",
"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
The browser tool runs free on your device; the prepaid API charges $0.002 per successful item when pipelines need the same contract from servers and automation.
Supported scales and how the conversion is computed
The converter accepts six film-speed families under stable canonical codes: iso for ISO arithmetic sensitivity as defined in the modern ISO five eight zero zero family, asa for ASA arithmetic speed which is treated as numerically identical to modern ISO, din for DIN logarithmic degrees, iso_log for ISO logarithmic degrees which share the same degree formula as DIN, gost for the legacy Soviet GOST arithmetic table with the classic bridge GOST ninety corresponding to ISO one hundred, and sv for the APEX additive speed value used in exposure systems. Friendly aliases such as apex, ISO logarithmic, DIN degrees, and GOST speed are normalized case-insensitively so forms and APIs can pass either short codes or full names, including optional degree marks. Every request converts the input into ISO arithmetic sensitivity S, then from S into the target scale.
Request shape, response fields, and unknown-unit errors
The error message names the bad field and lists the supported set so clients can correct forms without guessing. Zero and negative speeds are rejected because logarithmic film-speed formulas are undefined or meaningless for non-positive sensitivity. Send a JSON body with three required fields: value as a finite positive number, from as the source scale string, and to as the target scale string. Aliases amount, quantity, and speed are accepted for value; unit_from and source for from; unit_to and target for to. On success the response echoes the canonical from and to codes, human-readable from_label and to_label strings, the converted result, the intermediate iso_arithmetic sensitivity, a short formula line suitable for UI display, the method tag film_speed_iso_bridge, and the fixed list of units_supported. Missing value, non-finite numbers such as NaN or Infinity, non-positive values, missing unit fields, and any token that does not map to a supported scale fail with invalid_input and are not charged after the engine rejects the request. Identical inputs always yield identical JSON because the path is pure arithmetic with no randomness, no remote lookup, and no dependence on the wall clock, which makes the endpoint safe to pin in continuous-integration goldens and SDK contract tests. Extreme magnitude pairs remain well-defined as long as IEEE double precision can represent the intermediate ISO product and the logarithm path.
Browser use, API pricing, and photography workflows
Switch to the prepaid API when a darkroom log app, film inventory system, exposure companion, e-commerce listing tool, or photography education pipeline must convert film speeds at scale under a stable KIT contract at $0.002 per successful item; validation failures that raise invalid_input do not consume balance after rejection. Pair this endpoint with an exposure-value calculator when a product pipeline needs both scale conversion and EV arithmetic, or call it alone when search traffic is specifically for film speed conversion—ISO, ASA, DIN, GOST, and APEX—rather than a general photography toolkit.
Integration use cases
Apps and automated pipelines
Call a prepaid, deterministic film-speed API from inventory and education tools with clear invalid_input on unknown units.
Technical questions
How do I convert ISO 100 to DIN?
Send JSON with value: 100, from: "iso", to: "din". The result is 21 (DIN 21°), plus an iso_arithmetic intermediate and a readable formula.