The BC548 is a 30 V, 100 mA NPN small-signal transistor in a TO-92 package. Its pins read C-B-E with the flat face toward you. It works well for switching LEDs, sensor signals and small relays, and for low-level audio gain, if you drive it fully into saturation and keep it under 30 V. The sections below cover the limiting specs, the resistor math, and which substitutes are actually safe.
Key Takeaways
- The 30 V VCEO rating separates the BC548 from the BC547 (45 V). A BC547 can replace a BC548, but a BC548 cannot always replace a BC547.
- For a gain-sensitive circuit, the gain suffix (A, B or C) tells you more than the part number. An unsuffixed BC548 can fall in any gain group from 110 to 800.
- Datasheet saturation voltages are specified at IC/IB = 20, not at the typical hFE. Size the base resistor for that forced gain, not for the hFE value printed on the package.
- The 2N3904 and most TO-92 2N2222-family parts use E-B-C pinout, which is the reverse of the BC548. A drop-in swap puts collector and emitter on the wrong pads.
- Near 100 mA from 3.3 V logic, the BC548 is usually the wrong part. The base current it needs can exceed what the GPIO pin is allowed to supply.
[Figure 1. BC548] https://medias.digi-electronics.com/blogs/513b352e-8448-4a93-93d8-3e74861cf1cb.png
What Is the BC548 Actually Good For?
The BC548 is a general-purpose NPN bipolar junction transistor for loads up to a few tens of milliamps and supplies below 30 V. Typical uses are LED drivers, sensor-triggered switches, small relay coils, and preamp or gain stages in audio and sensor front ends.
It belongs to the BC546 to BC550 family. All five parts share the same die structure and the same 100 mA collector rating. They differ in voltage rating and in noise specification. Once you see that, choosing between them gets easier, and most of the substitution questions answer themselves.
BC548 Pinout: C-B-E, and Why It Matters When You Substitute
Hold the BC548 with the flat face toward you and the leads pointing down. From left to right, the pins are Collector, Base, Emitter.
[Figure 2. BC548 Pinout] https://medias.digi-electronics.com/blogs/62121625-a273-40cb-9f48-a8f00dc72a3a.png
| Pin | Name | Function |
|---|---|---|
| 1 | Collector (C) | Load current enters here. In a low-side switch, it connects to the bottom of the load. |
| 2 | Base (B) | Control input. A small base current sets the much larger collector current. |
| 3 | Emitter (E) | Current leaves here. In most NPN switch circuits, it goes straight to ground. |
C-B-E is the European BC-series convention. The 2N3904 in TO-92 is E-B-C, and so are most TO-92 parts in the 2N2222 family (for example, the PN2222A). If you drop either one into a BC548 footprint, collector and emitter end up swapped.
From a practical standpoint, a swapped transistor is harder to diagnose than a dead one. It still conducts in inverse mode, with very low gain, so the circuit half-works. The LED is dim or the relay chatters, and nothing looks wrong. The reversed emitter-base junction is also rated for only 5 to 6 V. On a 12 V load supply, that junction can break down. When a transistor that should drop straight in misbehaves, I check the pinout before anything else.

The original BC548 datasheets also note that some manufacturers use other lead arrangements. Check the datasheet for the exact part you bought, especially when the parts come from an unbranded source.
How the BC548 Works
A small current into the base, relative to the emitter, controls a larger current from collector to emitter. With the base held at or near emitter potential, the transistor is off. Once the base-emitter junction is forward biased (about 0.6 to 0.7 V at small currents), collector current flows through the load.
The design choice is which region you operate in. A switch sits in cut-off or saturation. An amplifier sits in the active region between them. Most BC548 problems I see come from a circuit meant to be a switch that ends up stuck in the active region.
BC548 Specs That Actually Limit Your Design
The ratings that constrain real designs are VCEO (30 V), continuous collector current (100 mA), and power dissipation, which falls as ambient temperature rises.
| Parameter | Value | Notes |
|---|---|---|
| Type / package | NPN, TO-92 | SOT-23 counterpart: BC848 |
| VCEO | 30 V | BC547 is 45 V, BC546 is 65 V |
| VCBO | 30 V | |
| VEBO | 5 V to 6 V | 5 V in the Fairchild sheet, 6 V in the onsemi sheet |
| IC continuous | 100 mA | Absolute maximum, not a design target |
| PD at TA = 25 °C | 500 mW to 625 mW | Vendor dependent. onsemi: 625 mW, derate 5.0 mW/°C |
| RθJA | 200 °C/W | onsemi |
| hFE (IC = 2 mA, VCE = 5 V) | A: 110 to 220, B: 200 to 450, C: 420 to 800 | Gain group set by the suffix |
| VCE(sat) max | 0.25 V at 10 mA / 0.5 mA; 0.6 V at 100 mA / 5 mA | Specified at IC/IB = 20 |
| fT | about 300 MHz typical | At IC = 10 mA, VCE = 5 V |
| Junction temperature | -55 °C to +150 °C |
Sources: onsemi BC546/BC547/BC548 datasheet and Fairchild (now onsemi) BC546 to BC550 datasheet, both accessed 2026.
Most spec-table articles stop at '625 mW', but that figure assumes 25 °C ambient air. Using onsemi's 5.0 mW/°C derating, the limit drops to about 450 mW at 60 °C inside a closed enclosure. In switching use this rarely matters. A saturated BC548 at 50 mA drops a few hundred millivolts and dissipates tens of milliwatts. It matters for linear stages and for switches with weak base drive. A transistor stuck at VCE = 3 V while passing 50 mA dissipates 150 mW, and you can feel it get warm.
Gain Groups: Why the Suffix Matters More Than '548'
A BC548B and a BC548C can differ in gain by roughly a factor of two. In a fixed-bias amplifier, that is enough to move the operating point from mid-rail to near saturation.
Based on what I've seen, parts sold simply as 'BC548' on hobby marketplaces seldom state the gain group, and two bags from different batches may not match. Switching circuits don't care, because you design for forced gain anyway. Amplifier stages with fixed base bias do care. If you can't control the suffix, use emitter degeneration so the gain depends on resistor ratios rather than on hFE.
Not every vendor sells every gain group. onsemi, for example, lists the BC548 in B and C grades. Check this before you specify a particular suffix on a bill of materials.
Using the BC548 as a Switch
To use the BC548 as a switch, drive enough base current to hold it in saturation at the actual load current, and keep a defined OFF state on the base.
[Figure 9. ON state (Closed switch)] https://medias.digi-electronics.com/blogs/22183a0b-85ce-4da8-b324-07fc3b1e776b.png
[Figure 10. OFF state (Open switch)] https://medias.digi-electronics.com/blogs/4e75a64a-003e-4f04-b55e-5fad4266f151.png
Sizing the base resistor
Use the gain at which the datasheet guarantees saturation, IC/IB = 20, rather than the typical hFE. Then:
RB = (Vdrive - VBE(sat)) / IB
Use about 0.7 V for VBE(sat) at a few milliamps. Near 100 mA, the datasheet values are closer to 0.8 to 0.9 V.
Worked examples for a 50 mA load, with IB = 50 mA / 20 = 2.5 mA:
- 5 V drive: (5 - 0.7) / 2.5 mA = 1.7 kΩ. Use 1.5 kΩ.
- 3.3 V drive: (3.3 - 0.7) / 2.5 mA = 1.04 kΩ. Use 1 kΩ.
The common IC/10 rule is more conservative still, and that has a cost. At 80 mA it asks for 8 mA from the drive pin. The ATmega328P on an Arduino Uno can supply that (its absolute maximum is 40 mA per I/O pin, Microchip ATmega328P datasheet). The RP2040 GPIO defaults to 4 mA drive strength (Raspberry Pi RP2040 datasheet), so you would have to raise the drive setting or choose a different switch. Check the pin's current limit before you finalize RB.
The base pull-down most tutorials skip
Put a resistor of 10 kΩ to 100 kΩ from base to emitter. During MCU reset and boot, GPIO pins are often high-impedance inputs. A floating base can pick up enough noise or leakage to turn the load partly on. From what I've seen, this shows up as a relay clicking at power-up. The pull-down takes a small share of the base current (about 70 µA for 10 kΩ at 0.7 V), which is negligible in the examples above.
Relay drivers and the flyback diode
Fit a flyback diode across every relay coil, with the cathode to the positive supply. When the transistor turns off, the coil's stored energy otherwise produces a voltage spike at the collector, and with a 30 V VCEO the BC548 has little margin for it.

Check the coil current before choosing the BC548 for a relay. Measure the coil resistance and divide the supply voltage by it. A 12 V coil of 400 Ω draws 30 mA, which suits a BC548 well. A 5 V coil of 70 Ω draws about 71 mA, already 70% of the absolute maximum, and needs about 3.5 mA of base drive at forced gain 20.
The flyback diode has its own drawback. A plain diode slows relay release, because the coil current decays slowly through it. If release time matters, add a Zener or a resistor in series with the diode to speed it up, and confirm that the higher clamp voltage stays well below 30 V.
PWM
The BC548 handles PWM dimming of LEDs and small loads at typical frequencies of a few hundred hertz to a few kilohertz. In my judgment, switching speed is not the limit there. At much higher frequencies, heavy base overdrive lengthens storage time and slows turn-off. If you see that, reduce the overdrive or switch to a MOSFET. For a motor or any other inductive load, a clamp diode is mandatory.
Using the BC548 as an Amplifier
The BC548 amplifies when biased in the active region. Common-emitter stages give voltage gain, emitter followers give current gain at roughly unity voltage gain, and common-base stages are used where low input impedance or wide bandwidth is needed.
DC current gain is defined as hFE = IC / IB. The spread across gain groups is the reason not to design a stage around that number. A common-emitter stage with an emitter resistor and a voltage-divider bias gives gain of roughly RC/RE, which holds across parts from different batches.
Noise is the real reason to choose a sibling part. In the Fairchild family datasheet, the BC546, BC547 and BC548 have a maximum noise figure of 10 dB. The BC549 and BC550 are specified at 4 dB maximum (VCE = 5 V, IC = 200 µA, f = 1 kHz, RS = 2 kΩ). Use a BC549 (30 V) or BC550 (45 V) for a microphone preamp or a high-gain sensor stage. For a gain stage behind an op-amp or a line-level buffer, the BC548 is adequate.
BC548 vs BC547 and Other Substitutes
A BC547 can always replace a BC548, because it shares the same 100 mA rating, the same pinout and a higher 45 V rating. The reverse holds only when the circuit never exceeds 30 V across collector and emitter, including inductive spikes.
[Figure 11. BC548 vs BC547 Differences] https://medias.digi-electronics.com/blogs/2fc95899-63f9-4a47-8e99-53755faefee6.png
| Part | Polarity | VCEO | IC max | TO-92 pinout | Swap notes |
|---|---|---|---|---|---|
| BC548 | NPN | 30 V | 100 mA | C-B-E | Reference part |
| BC547 | NPN | 45 V | 100 mA | C-B-E | Safe upgrade for a BC548 |
| BC546 | NPN | 65 V | 100 mA | C-B-E | Safe upgrade, more voltage margin |
| BC549 | NPN | 30 V | 100 mA | C-B-E | Low-noise version of the BC548 |
| BC550 | NPN | 45 V | 100 mA | C-B-E | Low noise plus 45 V |
| BC558 | PNP | -30 V | -100 mA | C-B-E | Complement for push-pull and high-side switching. Not a substitute. |
| 2N3904 | NPN | 40 V | 200 mA | E-B-C | Electrically fine, but the pinout is reversed. Rotate or re-route. |
| 2N2222 family | NPN | 40 V (2N2222A) | 600 mA (PN2222A) | Usually E-B-C (check vendor) | Better choice above 100 mA. Check the pinout. |
| BC848 | NPN | 30 V | 100 mA | SOT-23 | Surface-mount counterpart for production boards |
Sources: onsemi and Fairchild datasheets for each part, Nexperia BC846/BC847/BC848 datasheet, accessed 2026.
For production boards, the BC848 deserves more attention than it usually gets. Through-hole TO-92 parts are convenient for prototyping. A board going to pick-and-place assembly usually gets the SOT-23 version, and the BC848's ratings carry over directly.
When to Use the BC548 and When Not To
| Choose the BC548 when | Choose something else when |
|---|---|
| Load current is under about 50 mA and the supply is under about 24 V | The load is near or above 100 mA. Use a 2N2222-family part or a logic-level MOSFET. |
| You are switching LEDs, signal lines, optocouplers or high-resistance relay coils | Collector voltage, including inductive spikes, can approach 30 V. Use a BC547 or BC546. |
| You need a general gain stage that does not have to be low-noise | The stage handles microphone or sensor signals in the microvolt range. Use a BC549 or BC550. |
| The drive is 5 V logic with plenty of pin current | The drive is 3.3 V logic with a few milliamps available and the load is heavy. A MOSFET with a gate threshold specified at your logic level takes no steady drive current. |
| You are building a through-hole prototype or repair | You are designing a board for pick-and-place. Use the BC848. |
The '24 V' and '50 mA' thresholds in the left column are my judgment, not datasheet limits. They leave room for supply tolerance, spikes and enclosure temperature.
Frequently Asked Questions
What is the correct BC548 pinout with the flat side facing you?
With the flat face toward you and the leads down, the order is C-B-E from left to right. Check the datasheet for the exact part you bought, because some vendors differ and common substitutes such as the 2N3904 are E-B-C.
Can I drive a BC548 directly from an Arduino or other microcontroller pin?
Yes, through a base resistor, and preferably with a 10 kΩ to 100 kΩ base pull-down. Size RB for IC/IB = 20 and confirm that the resulting base current is within the pin's limit. That limit is generous on an ATmega328P and much tighter at the default drive setting of an RP2040.
How do I choose the base resistor value?
Calculate IB = IC / 20, then RB = (Vdrive - 0.7 V) / IB, and round down to the nearest standard value. For a 50 mA load, that comes to about 1.5 kΩ from 5 V or 1 kΩ from 3.3 V.
Why does my BC548 get hot?
The usual cause is insufficient base drive, which leaves the transistor in the active region with several volts across it. Dissipation is VCE × IC, so 3 V at 50 mA is 150 mW. Other causes are a load near 100 mA, high ambient temperature (the rating falls about 5 mW per °C above 25 °C on the onsemi part), or a missing flyback diode on an inductive load.
Is the BC548 suitable for PWM LED dimming or motor speed control?
It suits LED dimming and very small motors well within its current rating, at typical PWM frequencies. For motors, add a flyback diode and check stall current, not running current. Stall current often exceeds 100 mA, which is the point to move to a MOSFET.
Final Judgment
The BC548 remains a sound choice for signal-level switching and general gain stages below 30 V. Most failures come from three mistakes: using the typical hFE in place of forced gain when sizing the base resistor, assuming every TO-92 NPN shares its pinout, and running relay coils without a flyback diode. Fix those three, and the remaining question is the drive current available from your logic. As more designs move to 3.3 V MCUs with limited GPIO drive, I expect the BC548's role in new designs to narrow, while it remains common in repair work and in 5 V legacy circuits.