BJTs are current-controlled. MOSFETs are voltage-controlled. That single difference cascades into every design decision: drive circuitry, switching speed, power dissipation, thermal behavior, and cost. This guide covers the full comparison, the physics behind each trade-off, and the practical mistakes that kill both devices.
For low-side switching under 100mA from 5V logic, a BJT with a base resistor is simplest. For high-speed switching, low on-resistance, or 3.3V drive, a MOSFET wins. If the gate connects to an external connector, a BJT base survives what destroys a MOSFET gate oxide.
| Parameter | BJT (e.g. 2N3904 / S8050) | MOSFET (e.g. 2N7002 / AO3400) |
|---|---|---|
| Control Mechanism | Current-controlled (base current) | Voltage-controlled (gate voltage) |
| Input Impedance | Low (kΩ range) | Very high (MΩ, capacitive) |
| Drive Requirement | Continuous base current (IC/β) | Zero DC current (charge gate once) |
| On-State Voltage Drop | VCE(sat) ~ 0.2V (fixed) | VDS = ID × RDS(on) (mV to V) |
| Switching Speed | Moderate (storage time limits turn-off) | Fast (gate charge limited, ns range) |
| ESD Sensitivity | Robust (base-emitter junction is a diode) | Fragile (gate oxide <100nm thick) |
| Temperature Coefficient | Negative - hotter = more current (thermal runaway risk) | Positive - hotter = higher RDS(on) (self-limiting) |
| Parallel Operation | Needs emitter ballast resistors | Naturally shares current (positive tempco) |
| External Parts (min) | Base resistor mandatory | Gate resistor optional; pull-down recommended |
| Linear Region Use | Predictable (IC vs VBE is exponential but well-characterized) | Poor (VGS(th) varies widely between units) |
| Gate/Base Threshold | VBE ≈ 0.7V (silicon) | VGS(th) = 0.5V–4V (varies widely) |
| Typical Gain | β = 100–300 (hFE) | gm = 1–20 S (transconductance) |
| Cost (SOT-23, volume) | $0.01–$0.03 | $0.02–$0.08 |
| Common Packages | SOT-23, TO-92, SOT-89 | SOT-23, TO-252, SOIC-8, DFN |
A BJT needs continuous base current: IB = IC/β. At 100mA with β=100, the GPIO sources 1mA continuously. A MOSFET's gate is a capacitor - you charge it once and it stays on with zero DC current.
The practical consequence: battery-powered designs that spend most of their time in a static state (LED on, relay held) favor MOSFETs. The BJT's continuous base current drains the battery. At 1mA for 1000 hours, that's 1Ah wasted - the MOSFET wastes zero.
A saturated BJT drops VCE(sat) ≈ 0.2V. At 100mA: 20mW. A MOSFET's conduction loss is I2×RDS(on). A 2N7002 at 7.5Ω drops 0.75V (75mW). An AO3400A at 26mΩ drops 2.6mV (0.26mW).
The BJT's VCE(sat) is predictable but fixed. The MOSFET's conduction loss depends entirely on which part you pick - choose a low RDS(on) MOSFET and it beats any BJT. Choose a high RDS(on) one and the BJT wins.
A BJT turning off must sweep stored charge from the base. Storage time (ts) can be hundreds of nanoseconds. A MOSFET turns off when gate capacitance discharges, typically tens of nanoseconds.
At 50kHz PWM, both work. At 500kHz, the BJT's storage time means it's still conducting when it should be off - shoot-through and overheating follow. Above 100kHz, default to MOSFET.
A 2kV ESD event destroys a MOSFET gate. The same zap on a BJT forward-biases the base-emitter junction momentarily - the BJT survives. For external-facing I/O, connectors, test points, or automotive environments, BJTs with a base resistor are far harder to kill. Inside a sealed PCB, MOSFETs are fine.
BJTs have a negative temperature coefficient: as they heat up, VBE drops (~2mV/°C) and collector current increases. More current → more heat → more current. This positive feedback loop is thermal runaway.
A BJT in a parallel pair that starts at 55% load share will hog more and more current as it heats, while the other device cools and conducts less. The end state: one BJT carries everything and self-destructs.
MOSFETs have a positive temperature coefficient (when fully enhanced): as they heat up, RDS(on) increases. More heat → higher resistance → less current share → self-balancing. This is why you can parallel MOSFETs without ballast resistors, and why they don't suffer catastrophic thermal runaway in switching applications.
Critical caveat: the positive tempco only applies in the fully enhanced (ohmic) region. In the linear/saturation region, MOSFETs exhibit a negative tempco just like BJTs. A MOSFET used as a linear amplifier or operated with insufficient gate voltage is just as vulnerable to thermal runaway as any BJT.
Parallel BJTs require emitter degeneration resistors to force current sharing. Without them, the hottest BJT hogs current and runs away. Parallel MOSFETs share current naturally through their positive tempco - no external ballasting needed. The trade-off: paralleling MOSFETs increases total gate capacitance, slowing switching speed for a given gate driver.
BJTs have a well-characterized, predictable relationship between IC and VBE (exponential, governed by the Ebers-Moll model). This makes them suitable for linear amplifiers, current sources, and analog circuits. The 2N3904's hFE and VBE curves are documented and repeatable unit-to-unit.
MOSFETs in the linear region have wide part-to-part variation in VGS(th). Two AO3400As from the same reel can differ by 0.5V in threshold. This makes them poor choices for precision linear circuits without feedback.
For switching, this variation doesn't matter - you drive the gate well past the threshold. For amplification, BJTs are the default unless your feedback loop swallows the VGS(th) spread.
Left: The BJT switch needs a base resistor (mandatory). Right: The MOSFET switch has an optional gate resistor and a recommended pull-down to keep the gate from floating during MCU reset. Both are low-side configurations - the switch sits between load and ground.
Voltage drop @ 100mA, lower is cooler
A modern low-RDS(on) MOSFET beats any BJT. A high-RDS(on) MOSFET loses. The part number matters more than the device type.
Four forks: frequency rules out BJTs above 100kHz. External connections rule out MOSFET gates. Battery power favors zero-DC-current MOSFETs. 3.3V logic requires low-threshold MOSFETs. If none of these apply, both work - pick on cost.
Without a base resistor, the GPIO sources uncontrolled current into the base-emitter junction. A 3.3V GPIO on a bare BJT base pulls VBE to ~0.9V. The GPIO's internal resistance limits current to ~40mA - far more than needed. At 5V from a high-drive pin, the BJT can be destroyed instantly.
Always calculate RB = (VGPIO − 0.7) / IB, where IB = IC / βmin. For a 100mA load with βmin=100: RB = (3.3−0.7)/0.001 = 2.6kΩ. Use 2.2kΩ or 1kΩ for margin.
A MOSFET with VGS(th) = 3V will barely turn on at 3.3V gate drive. At VGS = VGS(th), the MOSFET conducts microamps - it's in the linear region, not fully enhanced. Result: high RDS(on), massive heating, potential thermal runaway.
For 3.3V logic, use a logic-level MOSFET with VGS(th) specified at 2.5V max or lower. Parts like BSS138, AO3400A, and SI2302DS are designed for this. Check RDS(on) at your gate drive voltage - if only 10V and 4.5V are specified, the part isn't a 3.3V logic-level MOSFET.
When the MCU is in reset or the GPIO is unconfigured, the pin is high-impedance. A floating MOSFET gate picks up noise through stray capacitance and can partially turn on, putting the device in the high-dissipation linear region. A floating BJT base does the same through leakage currents.
Fix: add a pull-down resistor (47kΩ–100kΩ) from gate/base to ground. This holds the switch firmly off until the MCU takes control of the pin.
When load and logic supplies are separate, their grounds must be connected. The gate voltage is referenced to the source pin. If source ground and GPIO ground differ, VGS is undefined. Capacitive coupling through CGD can partially turn on the MOSFET. Tie grounds at a single point near the switch.
Relays, solenoids, motors, and transformers store magnetic energy. When the switch turns off, the collapsing field generates V = L × dI/dt - potentially hundreds of volts, exceeding VDSS or VCEO. Both MOSFETs and BJTs are destroyed by this spike. MOSFET body diodes are not designed as flyback clamps.
Always add a flyback diode across the inductive load, cathode to positive supply. 1N4148 for small relays; 1N4007 for larger coils. This gives the stored magnetic energy a safe recirculation path that doesn't go through the switch.
A: Not without changes. A BJT circuit has a base resistor; a MOSFET may not need one. VBE is ~0.7V; VGS(th) sets MOSFET turn-on. Pinouts differ: 2N3904 SOT-23 is B-E-C; 2N7002 is G-S-D. Verify all three before swapping.
A: Check RDS(on). A 2N7002 at 7.5Ω drops 0.75V (75mW) at 100mA. A 2N3904 drops 0.2V (20mW). Fix: use a MOSFET with lower RDS(on) like the AO3400A (26mΩ).
A: At low speed with direct GPIO drive, no. The GPIO's output resistance limits gate inrush. At high PWM or with gate driver ICs, add 10–100Ω to damp ringing. Above 5cm gate trace, add a resistor to prevent parasitic oscillation.
A: They fail without flyback protection - same as BJTs. Both devices need a flyback diode across the inductive load. The MOSFET's body diode can sometimes serve this role in H-bridge topologies but is not a substitute for an explicit clamp in simple low-side switching.
A: BJT. A 2N3904 with a 1kΩ base resistor gives IB = (3.3−0.7)/1000 = 2.6mA, enough at β=100. Add a flyback diode. Total BOM: $0.03. A MOSFET would need gate protection since relay coil kickback couples through CGD.
A: Not without emitter ballast resistors. Without them, the hotter BJT hogs more current (negative tempco), runs hotter, hogs even more, and fails. Add 0.1Ω–1Ω resistors in series with each emitter. For MOSFETs, parallel directly - the positive tempco self-balances.
A: The gate threshold voltage. Standard MOSFETs typically specify RDS(on) at VGS = 10V and may need 4–5V to fully enhance. Logic-level MOSFETs are designed to fully enhance at 3.3V or 5V, with RDS(on) specified at VGS = 4.5V or 2.5V. If the datasheet RDS(on) table doesn't have a row at your GPIO voltage, assume the part isn't suitable.
A: High voltage (>300V) and high current (>10A) switching at moderate frequencies (<20kHz). IGBTs combine a MOSFET gate (voltage-controlled) with a BJT output (low VCE(sat) at high voltage). They dominate motor drives, induction heating, and inverters. Below 100V, MOSFETs win. In small-signal, BJTs and MOSFETs are the only game.





