MOSFET threshold voltage
A flat-band voltage of -0.9 V, a body coefficient of 0.5 and a surface potential of 0.7 V, with the body tied to the source, give a threshold just over two tenths of a volt. Enter the four process values to get Vth. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Flat band voltage
- -0.9
- Body effect coefficient
- 0.5
- Surface potential
- 0.7
- Bulk bias
- 0
- Sqrt argument
- 0.7 V
- Body term
- 0.4183300133
- Threshold voltage
- 0.2183300133
The MOSFET threshold voltage is the gate-to-source voltage at which a strong inversion layer forms at the silicon surface and the transistor begins to carry a useful channel current. Device engineers, analog layout teams, and students obtain that voltage from four numbers already on the process card or in a bias table: the flat-band voltage, the body-effect coefficient, the surface potential at strong inversion, and the source-to-bulk bias. This calculator applies the long-channel identity that threshold voltage equals flat-band voltage plus surface potential plus the body coefficient times the square root of surface potential plus bulk bias, and it returns the result in volts.
What MOSFET threshold voltage is and which four numbers determine it
Threshold voltage is the gate bias at which the silicon surface under the gate oxide reaches strong inversion and a conducting channel appears between source and drain. In the long-channel charge-sheet model that number is not an independent fitting constant: it is assembled from the flat-band voltage V_FB, the surface potential at strong inversion φ_s (almost always written as twice the Fermi potential, 2φ_F), the body-effect coefficient γ, and the source-to-bulk reverse bias V_SB.
The identity is Vth equals V_FB plus φ_s plus γ times the square root of φ_s plus V_SB. When the body terminal is tied to the source, V_SB is zero and the formula collapses to the zero-bias threshold that process cards usually quote. A reverse body bias increases the radicand, so the square-root term grows and an NMOS device needs a more positive gate voltage to invert—the classic body effect.
Search intent clusters around phrases such as MOSFET threshold voltage calculator, Vth from VFB gamma and surface potential, body-effect threshold shift, and 2φ_F bulk-bias formula. People want a numeric voltage they can check against a SPICE .model card, a homework derivation, or a lab C-V extraction—not only a reminder that the equation exists. Units stay in volts for V_FB, φ_s, V_SB, and Vth; γ is in square-root volts.
Practical use, coherent units, pricing, and delivery channels
Use the browser MOSFET threshold voltage calculator when you want an immediate Vth after reading V_FB, γ, and 2φ_F from a process card, checking a homework body-effect problem, or sweeping bulk bias in a notebook without standing up a compact-model deck. Keep voltages in volts and γ in square-root volts so the radicand and the product stay dimensionally consistent; mixing millivolts in one field with volts in another still runs the arithmetic but the number is physically meaningless.
There is no language model, no external PDK service, and no randomness, so the capability is safe to pin in continuous-integration checks and reproducible lecture materials. Pair this tool with a flat-band or body-factor identity when you also need to derive V_FB or γ from process data, or keep it standalone when those four numbers are already known. Authors shipping SDKs can map the four input fields directly into form widgets, matching the bias table students already write by hand on paper and in lab notebooks.
What you can do with it
Process-card and SPICE model cross-checks
Analog engineers compare a compact-model threshold against the long-channel identity assembled from the same V_FB, gamma, surface potential, and bulk bias listed on the process card.
FAQ
Which formula does the MOSFET threshold voltage calculator use?
The long-channel identity Vth = V_FB + φ_s + γ√(φ_s + V_SB), where φ_s is the surface potential at strong inversion (usually 2φ_F) and V_SB is the source-to-bulk reverse bias. Short-channel, DIBL, and temperature models are not included.
What happens if a parameter is not a finite number?
Missing required fields, non-numeric text, NaN, and Infinity are all rejected before a threshold is returned, and those calls are not charged. A negative φ_s + V_SB is also rejected because the square root would not be real.
Is the MOSFET threshold voltage calculator free?
The browser tool runs free on your device.
How does a reverse body bias change the threshold voltage?
It increases the value under the square root, so the body term grows and the threshold rises. An NMOS device then needs a more positive gate voltage to invert, which is the classic body effect.
Does it include short-channel effects or temperature?
No. Short-channel roll-off, drain-induced barrier lowering, quantum confinement and temperature coefficients are left out. You get the ideal long-channel threshold from the four values you enter, with no oxide thickness or doping extraction.
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/phys/mosfet-threshold-voltage \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"flat_band_voltage":-0.9,"body_effect_coefficient":0.5,"surface_potential":0.7,"bulk_bias":0}'const res = await fetch("https://api.kit.forhosting.com/phys/mosfet-threshold-voltage", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"flat_band_voltage": -0.9,
"body_effect_coefficient": 0.5,
"surface_potential": 0.7,
"bulk_bias": 0
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/phys/mosfet-threshold-voltage",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"flat_band_voltage": -0.9,
"body_effect_coefficient": 0.5,
"surface_potential": 0.7,
"bulk_bias": 0
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/phys/mosfet-threshold-voltage", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"flat_band_voltage":-0.9,"body_effect_coefficient":0.5,"surface_potential":0.7,"bulk_bias":0}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"flat_band_voltage":-0.9,"body_effect_coefficient":0.5,"surface_potential":0.7,"bulk_bias":0}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/phys/mosfet-threshold-voltage", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"flat_band_voltage": -0.9,
"body_effect_coefficient": 0.5,
"surface_potential": 0.7,
"bulk_bias": 0
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "phys.mosfet_threshold_voltage",
"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 | 1000000000000 |
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
Any parameter that is missing or not a finite number fails with invalid_input before a voltage is returned.
What MOSFET threshold voltage is and which four numbers determine it
Delivering the four validated inputs together with sqrt_argument, body_term, threshold_voltage, unit, and formula as JSON makes the result easy to paste into notes, diff in automated tests, or reuse across languages without reimplementing the square root. Short-channel roll-off, DIBL, quantum confinement, and temperature coefficients are neighbouring questions with different landings; this endpoint answers only the long-channel identity from the four numbers you already have.
How this calculator validates input and applies Vth = V_FB + φ_s + γ√(φ_s + V_SB)
Numeric strings that parse to finite numbers are accepted so forms and CSV-style pipelines can pass values without an extra cast. The body term is then γ times the square root of the radicand, and the threshold is the sum of V_FB, φ_s, and that body term. There is no built-in oxide thickness, doping, or work-function extraction: this is the ideal long-channel identity of the four numbers you supply. Send a JSON body with required flat_band_voltage, body_effect_coefficient, surface_potential, and bulk_bias. Every parameter must be a finite number: missing fields, empty strings, non-numeric text, NaN, and Infinity all fail immediately with invalid_input before any threshold is returned, and failed validation is not charged. Aliases are accepted in the solver: vfb, v_fb, and flatband_voltage for the flat-band voltage; gamma, body_factor, and gamma_body for the body coefficient; phi_s, two_phi_f, and phi_surface for the surface potential; vsb, v_sb, source_bulk_voltage, and bulk_bias_voltage for the bulk bias. After validation the radicand φ_s plus V_SB is formed; if that sum is negative the body-effect square root would not be real, so the task fails with invalid_input rather than returning NaN. Results are rounded to twelve decimal places so the same input always yields the same JSON across JavaScript engines, and signed zeros are collapsed to zero.
Practical use, coherent units, pricing, and delivery channels
Each successful request is one billable item at $0.002; failed validation, including a non-finite parameter, does not consume balance. Results are fully deterministic: the same four inputs always yield the same threshold_voltage, body_term, and sqrt_argument. Wire the endpoint into analog interview drills, contest answer checkers, or parameter-extraction helpers where you already prefer explicit domain errors over opaque widgets that cannot explain why a bad input was refused.
Integration use cases
Homework and long-channel body-effect drills
Students and graders confirm Vth for given V_FB, γ, 2φ_F, and V_SB, including the zero-bias case, with a clear invalid_input rejection when any parameter is missing or non-finite.
Deterministic fixtures for device-physics tests
Pipelines that seed unit tests or lecture notebooks can call a pure Vth oracle instead of copying the square-root identity into each fixture file.
Technical questions
How do I compute MOSFET threshold voltage with this API?
Send a JSON body with finite flat_band_voltage, body_effect_coefficient, surface_potential, and bulk_bias. The response returns threshold_voltage in volts together with the body term, the radicand, the validated inputs, and the formula string.
What should I send for bulk bias when the body is tied to the source?
Send bulk_bias equal to 0. That is the zero-substrate-bias case Vth = V_FB + φ_s + γ√φ_s. The field is still required; omitting it is invalid_input, not an implicit zero.