Thread pitch converter
A 20 TPI bolt has a 1.27 mm pitch. Switch a screw thread between threads per inch and metric pitch, and see inch pitch, threads per centimetre and per millimetre in the same result, to match imperial taps with ISO bolts. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Value
- 20
- Unit of 'value': tpi
- Tpi
- Tpi
- 20
- Pitch mm
- 1.27
- Pitch in
- 0.05
- Tpc
- 7.874015748
Screw and bolt threads are specified two different ways in the shop: imperial drawings quote threads per inch (TPI), while metric ISO and DIN callouts give the crest-to-crest pitch in millimetres. Mixing those notations by hand is easy to get wrong because the bridge is a reciprocal scaled by the exact international inch of twenty-five point four millimetres, not a linear guess. Unknown unit tokens and non-positive magnitudes fail with a clear invalid input error so a mistyped unit never looks like a real fastener schedule.
TPI, metric pitch, and density units — what each notation means
Start from the form of pitch you already have on the drawing or fastener package. Threads per inch (TPI) count how many complete thread crests fit in one inch of axial length: a common quarter-inch UNC coarse bolt is twenty TPI, while a fine UNF of the same major diameter may be twenty-eight TPI. Metric callouts instead print the pitch distance in millimetres between adjacent crests—for example M8×1.25 means an eight-millimetre major diameter with a one point two five millimetre pitch—so the number is a length, not a count.
Pitch in inches is simply one over TPI and appears on some legacy US tooling sheets. Threads per centimetre and pitch in centimetres are SI-friendly density and spacing twins of the imperial pair, useful when a European BOM lists linear density without millimetres.
What you can do with it
Tap charts and fastener replacement
Convert a 20 TPI package label into millimetre pitch for metric stock, or turn an M6×1.0 callout into TPI when only imperial taps are on the bench.
Inventory and cross-region BOMs
Global BOMs that mix UNC/UNF TPI rows with ISO metric pitch rows normalize every line to a single density so substitutions and dual-sourcing stay comparable.
FAQ
How do I convert a 1.25 mm metric pitch to TPI?
The engine returns tpi equal to 25.4 / 1.25 (20.32) plus the full equivalent set.
Is the thread pitch converter free?
The browser tool runs free on your device.
Why is the inch fixed at 25.4 millimetres?
The international inch is defined as exactly 25.4 mm. Using that constant keeps TPI ↔ metric pitch conversions exact and identical across every client and CI run.
What is the pitch of a 20 TPI bolt in millimetres?
It is 1.27 mm. Divide 25.4 by the TPI: a quarter-inch UNC coarse bolt has 20 TPI, so its crests sit 1.27 mm apart, which is 0.05 inch.
What does M8×1.25 mean?
It is a metric callout: an 8 mm major diameter and 1.25 mm between adjacent crests. The second number is a length, not a count, so convert it before comparing it with a TPI figure.
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/thread-pitch \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":20}'const res = await fetch("https://api.kit.forhosting.com/conv/thread-pitch", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": 20
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/conv/thread-pitch",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": 20
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/conv/thread-pitch", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":20}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":20}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/conv/thread-pitch", 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": 20
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "conv.thread_pitch",
"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
This thread pitch converter takes one positive value in TPI, pitch millimetres, pitch inches, threads per centimetre, pitch centimetres, or threads per millimetre and returns the full set of equivalents with fixed decimal rounding for CI-friendly JSON.
TPI, metric pitch, and density units — what each notation means
Threads per millimetre is the reciprocal of pitch_mm and shows up in fine-lead screw and optical-thread math. Send the required field value as a finite positive number and set from to tpi, pitch_mm, pitch_in, tpc, pitch_cm, or threads_per_mm; if you omit from, TPI is assumed because that is the default trade density for this product. Case-insensitive aliases such as threads/in, mm, inch, threads/cm, and t/mm are accepted so free-form forms still resolve. Identical inputs always produce identical JSON because the path is pure reciprocal arithmetic with no network, no random seed, and no wall clock.
How the conversion works and how to read the response
All supported notations share one physical model: a uniform helical pitch with constant crest spacing along the screw axis. The engine normalizes every input to threads per inch using the exact international inch of twenty-five point four millimetres, then expands the full family of outputs. From TPI, pitch_in is one over TPI, pitch_mm is twenty-five point four over TPI, pitch_cm is two point five four over TPI, tpc is TPI divided by two point five four, and threads_per_mm is TPI divided by twenty-five point four. From a metric pitch_mm the engine recovers TPI as twenty-five point four divided by that pitch, then fills the rest. From pitch_in it uses the pure reciprocal; from tpc it multiplies by two point five four; from pitch_cm it divides two point five four by the spacing; from threads_per_mm it multiplies by twenty-five point four. On success the response echoes value and from, then tpi, pitch_mm, pitch_in, tpc, pitch_cm, threads_per_mm, the constant mm_per_inch of twenty-five point four, a formula string for audit logs, method always equal to thread_pitch_exact, and units_supported listing every canonical token. Missing value, non-finite numbers, zero or negative magnitudes, and unknown from tokens all fail with invalid_input and are not charged after the engine rejects the request.
API usage, pricing, shop workflows, and practical limits
Call the free in-browser thread pitch converter when you are reading a tap chart, matching a replacement bolt, or translating a metric pitch callout into TPI for a US stock drawer without opening a spreadsheet. Remember that TPI and metric pitch describe axial crest spacing only—they do not encode thread form, tolerance class, or major diameter—so leave room for standards tables when selecting taps and dies. Send a JSON body with the required finite positive value and optional from defaulting to tpi. Use the prepaid API when a fastener estimator, CNC post-processor, inventory sync, or CAD property panel needs a stable contract under KIT balance at $0.002 per successful item; validation failures never consume balance after the engine rejects the request. Pair this endpoint with length and diameter converters when the next step is major-diameter unit changes, or with general unit tools when drawings mix imperial and metric linear dimensions on the same BOM. Authors shipping SDKs can map tpi and pitch_mm into side-by-side tables that match how imperial and metric shops each talk about the same helix.
Integration use cases
CNC posts and CAM property panels
Post-processors and CAD tools call the prepaid API so every thread feature stores TPI, pitch_mm, and threads per centimetre without reimplementing 25.4 factors per language.
Technical questions
How do I convert 20 TPI to millimetre pitch?
Send JSON with value: 20 and from: "tpi" (or omit from). The response includes pitch_mm (1.27), pitch_in (0.05), tpc, and the other density fields.
What happens if the unit is unknown?
The request fails with invalid_input. Use tpi, pitch_mm, pitch_in, tpc, pitch_cm, or threads_per_mm (case-insensitive aliases such as threads/in and mm are accepted).