Decode tire size notation
Understand the code on your tire sidewall: 225/45R17 means a 225 mm section width, a sidewall 45% as tall as that width, radial construction and a 17-inch rim. Malformed codes are flagged, not guessed. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Text
- 225/45R17
- Normalized
- 225/45R17
- Section width mm
- 225
- Aspect ratio percent
- 45
- Construction code
- R
Tire sidewalls compress several important dimensions into a short code that is easy to copy but not always easy to understand. This decoder turns a standard notation such as 225/45R17 into clearly labeled values for section width, aspect ratio, construction method, and rim diameter. It also normalizes letter case and rejects incomplete or malformed codes, giving drivers, retailers, mechanics, and software systems a dependable interpretation without guessing what an unusual string was meant to say.
Read each part of a tire size in order
A standard code such as 225/45R17 contains four connected facts. The first number is the nominal section width in millimeters, measured across the widest part of an appropriately mounted tire rather than across its tread alone. The number after the slash is the aspect ratio: the sidewall height expressed as a percentage of that section width.
It is not a height in millimeters. The following letter identifies construction. R means radial, D means diagonal, and B means bias-belted.
The final number is the wheel or rim diameter in inches. This mixed use of metric width and imperial rim diameter is normal industry notation, not a conversion error. The decoder separates these fields and returns explicit unit-bearing names so a value cannot be mistaken for a different measurement.
It also returns a normalized notation, which is useful when an operator entered a supported construction letter in lowercase or surrounded an otherwise valid code with harmless whitespace. No estimated dimensions are added to the decoded result.
Understand what the decoded values do and do not guarantee
The decoded section width is nominal, so an actual mounted tire may measure somewhat differently because of its manufacturer, product design, approved rim-width range, inflation, load, and measuring conditions. The aspect ratio describes the relationship between nominal sidewall height and nominal section width. For a 225/45 tire, the nominal sidewall height is 45 percent of 225 millimeters, but this capability deliberately reports the encoded ratio instead of presenting a derived measurement as a certified physical dimension.
The construction field explains the internal arrangement named by the notation. Radial construction is overwhelmingly common on modern passenger vehicles, while diagonal and bias-belted codes remain meaningful for some specialty or older applications. Rim diameter tells you the diameter category of the wheel seat, but matching that number alone does not establish compatibility.
Load index, speed rating, service type, overall diameter, width clearance, wheel width, and vehicle requirements can all matter. Use the result to understand the code, then consult the vehicle and tire manufacturer before selecting or fitting a tire.
Validate clean notation before storing or comparing it
A parser is valuable because tire codes often arrive through forms, inventory feeds, support messages, or copied listings. Small mistakes can silently corrupt comparisons when a system treats the whole code as unverified text. This decoder requires the compact width/aspect-construction-rim structure: three width digits, a slash, two aspect-ratio digits, one supported construction letter, and two rim-diameter digits.
It trims whitespace around the complete value and accepts lowercase R, D, or B, but it does not ignore missing separators, embedded spaces, decimal numbers, extra service prefixes, load indexes, speed symbols, or arbitrary trailing text. Those additions can carry separate meanings and should be modeled separately rather than discarded. A malformed value produces an input error instead of a partial result.
That fail-closed behavior makes the capability suitable for validation at an ingestion boundary. Store the normalized code beside the separated values, retain any additional tire markings in dedicated fields, and route rejected records for correction.
What you can do with it
Explain a sidewall code
Turn a copied tire marking into labeled measurements that a driver can understand before consulting fitment guidance.
Validate inventory input
Reject malformed size strings and store normalized notation with separate searchable fields in a tire catalog.
Structure marketplace listings
Decode a seller-supplied standard size into consistent attributes for filters, comparisons, and product details.
FAQ
What does 225/45R17 mean?
It indicates a nominal 225 mm section width, a 45 percent aspect ratio, radial construction, and a 17-inch rim diameter.
Does the aspect ratio give sidewall height in millimeters?
No. It is a percentage of nominal section width, not a direct millimeter measurement.
Which construction letters are supported?
R for radial, D for diagonal, and B for bias-belted construction are supported in either letter case.
Can I include a load index or speed rating?
No. Supply only the core size notation. Extra service descriptions and rating symbols cause a malformed-input error.
Does a matching decoded size prove a tire fits my vehicle?
No. Fitment also depends on manufacturer requirements, wheel width, clearance, load, speed rating, and other specifications.
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/misc2/tire-size-decode \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"225/45R17"}'const res = await fetch("https://api.kit.forhosting.com/misc2/tire-size-decode", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "225/45R17"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/misc2/tire-size-decode",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "225/45R17"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/misc2/tire-size-decode", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"225/45R17"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"225/45R17"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/misc2/tire-size-decode", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"text": "225/45R17"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "misc2.tire_size_decode",
"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
Validate clean notation before storing or comparing it
Browser execution is available for quick checks, while automated API calls cost $0.002 per item.
Technical questions
What does the API cost?
Each decoded item costs $0.002; the browser tool can be used for an immediate manual check.