PCB trace width calculator
One ampere on 1 oz outer copper with a 10 °C rise needs a trace just under 12 mils wide. Enter the current, copper weight and heating you accept to get the IPC-2221 minimum for outer or inner layers. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Current
- 1
- Copper oz
- 1
- Temp rise c
- 10
- Layer
- External mil
- K constant
- 0.048
- Thickness mil
- 1.378
- Area mil2
- 16.2960013472
Printed-circuit-board traces are the copper paths that carry current between pads, vias, and connectors. If a trace is too narrow for the current it must carry, resistive heating raises the copper temperature above the value your laminate, soldermask, and nearby components can tolerate, and in extreme cases the foil can fuse like a fuse element. This PCB trace width calculator applies the IPC-2221 empirical current-versus-cross-section relationship: given current in amperes, copper thickness in ounces per square foot, and the temperature rise you are willing to allow, it returns the minimum conductor width in mils (thousandths of an inch), together with the matching millimetre value. External outer layers are the default because they cool better than buried inner layers; set the optional layer field to internal when the conductor sits between planes.
The IPC-2221 current formula and the three required inputs
IPC-2221 related current I in amperes to conductor cross-sectional area A in square mils through the empirical power law I equals k times temperature rise ΔT to the power 0.44 times A to the power 0.725. The constant k is 0.048 for external outer layers, which radiate and convect from the board surface, and 0.024 for internal inner layers, which sit between dielectric and therefore run hotter for the same current.
Rearranged for layout, the required area is A equals the quantity I divided by k times ΔT to the 0.44, all raised to one over 0.725. Width in mils is then that area divided by copper thickness in mils. Temperature rise is the allowance above ambient, not the absolute copper temperature: a ten-degree rise on a twenty-five-degree board is a different reliability story from a ten-degree rise on a seventy-degree enclosure, but the empirical current formula only sees ΔT.
This calculator does not apply IPC-2152 charts, ambient correction, adjacent-trace crowding, or pulsed-current RMS factors; it implements the classic closed-form IPC-2221 estimate that designers still search for as a pcb trace width calculator. Optional layer selects external or internal; omitted layer defaults to external.
When a quick trace width check pays off
Call the free in-browser PCB trace width calculator while you are placing power nets in a CAD session, checking a hobby four-layer stack, or teaching why inner-layer pours need more copper for the same current. A typical first check is one ampere on one-ounce outer copper with a ten-degree rise, which is the default example on this page; five amperes on two-ounce inner copper with a twenty-degree rise is a second common pattern for buried power.
Keep currents, copper weights, and rises inside ordinary PCB ranges: milliamp signal nets through tens of amperes, ounce-class foils, and rises of ten to thirty degrees. The formula remains defined for other positive finite values, but the empirical IPC-2221 fit was characterised around those design points. Do not treat the result as a fuse rating, a listing mark, or a substitute for the current IPC-2152 charts on high-reliability work.
What you can do with it
Power-net layout in CAD
Enter the rail current, copper ounces, and allowed temperature rise to get a minimum width in mils before drawing a power trace on an outer or inner layer.
FAQ
What happens if current is not positive?
Zero or negative current cannot size a PCB trace. Validation failures are not charged.
Why is copper thickness in ounces, not mils?
PCB foils are ordered as ounces per square foot.
When should I choose internal instead of external?
Use internal when the conductor is an inner layer between dielectric. External is the default for outer layers.
What does the PCB trace width calculator cost?
The browser tool runs free on your device.
Is the calculated width the final answer for my board?
Treat it as a first thermal estimate. It does not apply IPC-2152 charts, ambient correction, crowding from nearby traces or pulsed currents, so use your fab's minimum track if it is wider and check voltage drop on long runs.
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/elec/pcb-trace-width \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"current":1,"copper_oz":1,"temp_rise_c":10}'const res = await fetch("https://api.kit.forhosting.com/elec/pcb-trace-width", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"current": 1,
"copper_oz": 1,
"temp_rise_c": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/elec/pcb-trace-width",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"current": 1,
"copper_oz": 1,
"temp_rise_c": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/elec/pcb-trace-width", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"current":1,"copper_oz":1,"temp_rise_c":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"current":1,"copper_oz":1,"temp_rise_c":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/elec/pcb-trace-width", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"current": 1,
"copper_oz": 1,
"temp_rise_c": 10
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "elec.pcb_trace_width",
"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.
Limits
max_abs_value | 1000000 |
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, or non-finite current is rejected with invalid_input and is not billed; copper ounces and temperature rise must also be strictly positive so the empirical formula stays defined.
The IPC-2221 current formula and the three required inputs
One ounce per square foot of electrodeposited copper is 1.378 mils thick in the IPC-2221 tables, so thickness_mil equals copper_oz times 1.378 and width_mil equals A divided by thickness_mil. Send current, copper_oz, and temp_rise_c as finite numbers greater than zero. Aliases such as amps, thickness, and temperature_rise are accepted so spreadsheets and typed forms can reuse the same contract without renaming columns. Identical inputs always produce identical JSON because the path is a handful of powers and a division, with no network, no random seed, and no wall clock.
Reading width_mil, companion fields, and invalid current
Unknown layer strings are rejected rather than silently treated as external. This is a first-order design estimate: real boards also care about copper roughness, soldermask, nearby planes that heat-sink the trace, and manufacturer minimums that may force you wider than the thermal formula. If the computed width is below your fab’s minimum track, use the fab minimum. Pair the result with a voltage-drop check on long runs; a thermally adequate trace can still drop too many millivolts at the load. A successful response echoes the resolved current in amperes, copper_oz, temp_rise_c, and layer, plus k_constant, thickness_mil, area_mil2, width_mil, width_mm, a formula string, and method ipc_2221 so clients can branch on a stable tag. Use width_mil as the primary layout number: most CAD packages still size tracks in mils, and one mil is 0.0254 millimetres, which is also returned as width_mm for metric stacks. Missing current, a non-finite value, or a current that is not strictly positive fails with invalid_input and a message that names the field; those failures are not billed. The same rejection applies to copper_oz and temp_rise_c at or below zero, because a zero-thickness foil or a zero temperature rise would make the empirical formula diverge or divide by zero. Keep the JSON contract in tests so a later constant tweak cannot slip into production unnoticed.
Where a PCB trace width API earns its keep
Use the prepaid API when an EDA plugin, a BOM checker, a contract manufacturer’s DFM portal, or a classroom auto-grader needs a stable contract at $0.002 per successful item; validation failures never consume balance after the engine rejects the request. Authors shipping SDKs can map width_mil and width_mm directly into property panels next to the net’s current budget. That split — free interactive exploration and a priced, identical API — lets you move from a layout review to an automated pipeline without changing the mathematical result.
Integration use cases
DFM and manufacturing checklists
Contract manufacturers and BOM checkers call the API so a stack-up review flags traces that are thermally undersized for the declared current and foil weight.
Classroom and exam oracles
Instructors pin golden JSON for one ampere on one-ounce outer copper and intentional zero-current errors that must fail with invalid_input.
Technical questions
How do I calculate minimum PCB trace width?
Send JSON with current in amperes, copper_oz (ounces per square foot), and temp_rise_c in °C. Optional layer is external (default) or internal. The response includes width_mil and width_mm from the IPC-2221 formula.