Best DC Motor Driver for Arduino and ESP32

Every GPIO pin on an Arduino Uno can source about 40mA. A typical DC gearmotor draws 200mA to 1A. Connect them directly and you’ll fry the microcontroller. A motor driver sits between the two: it takes the low-power control signal from your board and switches a separate, higher-current supply to the motor. That’s the entire job. The best DC motor driver for Arduino and ESP32 projects depends on how much current your motor needs, whether you’re running on battery or mains, and how much wiring you want to deal with.

This guide covers six standalone motor driver modules and two Arduino shields, arranged from beginner-friendly to specialist. There’s also a short section at the end explaining H-bridge basics, BJT vs MOSFET drivers, and when each chip makes sense, useful if you want to understand why the L298N runs hot and the TB6612FNG doesn’t.

Also on ComponentAdvisor: Best Breadboard and Jumper Wire Kit and Best Soldering Kits for Beginners


Quick Comparison Table

DriverChipMax CurrentVoltageInterfaceBest For
HiLetgo L298NL298N (BJT)2A/ch5–35V motor, 5V logicDirect GPIOBeginner default, most tutorials
ALLECIN L293DL293D (BJT)0.6A/ch4.5–36V motor, 5V logicDirect GPIOSmall motors, starter kits
Teyleten TB6612FNGTB6612FNG (MOSFET)1.2A/ch2.5–13.5V motor, 3.3/5V logicDirect GPIOEfficient dual motor control
KOOBOOK DRV8833DRV8833 (MOSFET)1.5A/ch2.7–10.8V motor, 3.3/5V logicDirect GPIOESP32, 3.3V, battery builds
HiLetgo L9110SL9110S (MOSFET)0.8A/ch2.5–12VDirect GPIOUltra-budget, tiny robots
HiLetgo BTS7960BTS7960 (MOSFET)43A6–27V motor, 3.3/5V logicDirect GPIOHigh-current, large motors
HiLetgo L293D ShieldL293D (BJT)0.6A/ch4.5–25VArduino shieldBudget plug-and-play
Arduino Motor Shield REV3L298P (BJT)2A/ch14–18VArduino shieldOfficial Arduino shield

1. Best Overall: HiLetgo L298N Motor Driver (4-Pack)

HiLetgo 4pcs L298N Motor Driver Controller Board

Best for: Anyone starting out with DC motor control. More tutorials, forum posts, and example code exist for this module than any other motor driver in hobby electronics.

HiLetgo L298N best DC motor driver for Arduino and ESP32

The L298N has been around since the 1980s and it’s still the first motor driver most beginners reach for. The module drives two DC motors independently, handles up to 2A per channel, and works with motor supply voltages from 5V to 35V. Logic runs at 5V, so it connects directly to Arduino without a level shifter. Wire up ENA, IN1, IN2 for motor A, connect your motor, power supply, and Arduino ground together, and you’re running motors in minutes.

The honest downside is efficiency. The L298N uses bipolar junction transistors with a voltage drop of roughly 2V across the H-bridge. If your motor supply is 6V, the motor only sees about 4V. At sustained loads it generates real heat, and the small heatsink on most modules is barely adequate above 1A. For a bench project or a robot running short bursts, it’s fine. For anything battery-powered running continuously, you’ll want the TB6612FNG instead.

Specifications:

  • Driver chip: L298N dual H-bridge (BJT)
  • Channels: 2 DC motors, or 1 bipolar stepper
  • Max current: 2A per channel continuous, 3A peak
  • Motor supply: 5–35V
  • Logic supply: 5V (Arduino direct)
  • Built-in 5V regulator (can power Arduino when motor supply is 7V+)
  • PWM frequency: up to 40kHz

Why it stands out:

  • Massive tutorial and library support, copies of example code everywhere
  • Built-in 5V regulator means one power supply can run everything
  • Screw terminals for easy motor and power connections
  • 4-pack gives you spares and backups

Things to keep in mind:

  • 2V voltage drop wastes power as heat, poor efficiency on battery
  • 5V logic only, not ideal for ESP32 (3.3V) without a level shifter
  • Heatsink is undersized for sustained loads above 1A
  • Bulky compared to MOSFET-based alternatives

👉 Buy HiLetgo L298N 4-Pack on Amazon

Verdict: The L298N is the right choice for a first motor project because finding help is never a problem. It’s not the most efficient or compact option, but it works reliably and the 4-pack price makes it easy to recommend.


2. Best for Small Motors: ALLECIN L293D Motor Driver

ALLECIN L293D DC Motor Driver Module

Best for: Small DC motors under 600mA, starter kit builds, and projects where you’re already working on a breadboard.

ALLECIN L293D motor driver module for Arduino

The L293D is an older chip than the L298N but shows up in a huge number of starter kits and beginner tutorials. It drives two DC motors at up to 600mA per channel, which covers most small hobby motors, BO motors used in robot chassis kits, and toy motors. Like the L298N it’s a BJT driver, so it has a similar voltage drop problem of around 1.6V across the bridge, but at the current levels it handles, the heat is manageable without a heatsink.

This module format works well on a breadboard alongside your other components. If you’re following a tutorial from a starter kit that mentions the L293D, this is the module to buy. For anything drawing more than 500mA sustained, step up to the L298N or TB6612FNG. The L293D genuinely struggles above its rated current, and unlike the L298N it doesn’t include onboard protection diodes on all variants, so motor back-EMF can be an issue on cheap clones.

The L293D module works best alongside a good breadboard setup. See our Best Breadboard and Jumper Wire Kit guide for what to pair it with.

Specifications:

  • Driver chip: L293D quad half H-bridge (BJT)
  • Channels: 2 DC motors
  • Max current: 0.6A per channel continuous, 1.2A peak
  • Motor supply: 4.5–36V
  • Logic supply: 5V
  • Built-in clamp diodes on most modules
  • Compact breadboard-friendly format

Why it stands out:

  • Very widely used, excellent beginner tutorial coverage
  • Compact size fits alongside other breadboard components
  • Works with almost any small hobby motor on the market
  • Low cost, good for learning before moving to more capable drivers

Things to keep in mind:

  • 0.6A per channel is a hard limit, small motors only
  • BJT design means voltage drop and heat at higher loads
  • Not suitable for motors drawing more than 500mA continuously
  • 5V logic only

👉 Buy ALLECIN L293D Motor Driver on Amazon

Verdict: A solid pick for starter kit projects and small robot builds using BO motors. If your motor draws more than half an amp, use the L298N or TB6612FNG instead.


3. Best Efficient Dual Driver: Teyleten Robot TB6612FNG (3-Pack)

Teyleten Robot TB6612FNG Dual DC Motor Driver Module

Best for: Two-wheel robots, smart car kits, and any build where battery life matters.

Teyleten Robot TB6612FNG dual DC motor driver module

The TB6612FNG is what you upgrade to after your first L298N project. Toshiba’s MOSFET-based design has a voltage drop of around 0.2V instead of 2V, meaning your motors get most of the battery voltage. Efficiency is over 90% vs 40–70% for the L298N. It drives two DC motors at 1.2A continuous (3.2A peak), handles motor voltages up to 13.5V, and works with both 3.3V and 5V logic, so it connects directly to ESP32 without any level shifting. There’s also a STBY pin for low-power standby mode, handy for battery-powered builds.

The module ships with headers unsoldered. You’ll need to solder the pins before use, which is a one-time 10-minute job but might catch beginners off guard. If you haven’t soldered before, check out the Beginner’s Guide to PCB Soldering on ArduinoYard first. The 3-pack price is competitive, and having extras is useful since the compact size makes it a go-to driver for many different projects.

Specifications:

  • Driver chip: TB6612FNG (MOSFET)
  • Channels: 2 DC motors, or 1 bipolar stepper
  • Max current: 1.2A per channel continuous, 3.2A peak
  • Motor supply: 2.5–13.5V
  • Logic supply: 2.7–5.5V (3.3V and 5V direct)
  • Standby mode for low-power operation
  • PWM input up to 100kHz

Why it stands out:

  • Much more efficient than L298N, runs cool without a heatsink
  • 3.3V logic compatible, direct connection to ESP32
  • Compact size, good for tight robot chassis builds
  • Standby pin reduces battery drain when motors are idle

Things to keep in mind:

  • Headers unsoldered, requires basic soldering
  • Motor voltage capped at 13.5V, not for high-voltage applications
  • No onboard regulator, logic and motor power need separate supplies

👉 Buy Teyleten TB6612FNG 3-Pack on Amazon

Verdict: The best all-round motor driver for two-wheel robot builds and battery-powered projects. If you’re using an ESP32, this or the DRV8833 should be your default choice over the L298N.


4. Best for ESP32 and 3.3V Builds: KOOBOOK DRV8833 (2-Pack)

KOOBOOK 2Pcs DRV8833 Dual DC Motor Driver Module

Best for: ESP32 projects, 3.3V microcontrollers, and small battery-powered robots where current draw is under 1.5A per motor.

KOOBOOK DRV8833 dual motor driver module for ESP32

Texas Instruments designed the DRV8833 specifically for low-voltage, battery-powered applications. The logic supply accepts 1.8V to 7V, so ESP32’s 3.3V GPIO pins connect directly with no level shifter or resistor divider needed. Motor voltage runs from 2.7V to 10.8V, which covers most small robot motors and gear motors running on 3.7V LiPo or 6V battery packs.

Unlike the TB6612FNG, the DRV8833 doesn’t have a dedicated PWM pin per motor. Speed control works by PWM-switching the input pins rather than a separate enable line. This means you need two PWM-capable pins per motor instead of one, but the ESP32 has far more PWM outputs than usable GPIO pins, so in practice it’s not a constraint. The module includes built-in overcurrent and thermal shutdown protection, which makes it fairly forgiving for beginners. It also has a nFAULT pin that pulls low if something goes wrong, useful if you want to monitor driver health in code.

For controlling motor speed via PWM on the ESP32, the ESP32 LEDC PWM guide on ArduinoYard covers exactly how to configure the PWM peripheral.

Specifications:

  • Driver chip: DRV8833 (MOSFET)
  • Channels: 2 DC motors
  • Max current: 1.5A per channel continuous
  • Motor supply: 2.7–10.8V
  • Logic supply: 1.8–7V (3.3V direct)
  • Built-in overcurrent and thermal protection
  • nFAULT fault indicator pin
  • Sleep mode pin for low-power operation

Why it stands out:

  • Best 3.3V compatibility of any driver in this list
  • Thermal and overcurrent protection built in
  • Compact size, very low standby current
  • Amazon’s Choice, strong ratings and reviews

Things to keep in mind:

  • Motor voltage max is 10.8V, not suitable for 12V motors
  • Requires two PWM pins per motor (fine for ESP32, tight on Uno)
  • No onboard 5V regulator

👉 Buy KOOBOOK DRV8833 2-Pack on Amazon

Verdict: The best pick for ESP32-based motor projects. The 3.3V logic compatibility and built-in fault protection make it noticeably better suited to ESP32 builds than the L298N.


5. Best Budget Option: HiLetgo L9110S (5-Pack)

HiLetgo 5pcs L9110S DC Motor Driver Module

Best for: Small BO motors, toy motors, fan control, and any build where the motor draws under 800mA.

HiLetgo L9110S motor driver module

The L9110S is a MOSFET-based driver that handles two DC motors at up to 800mA per channel. It’s smaller than the L298N, runs from 2.5V to 12V, and works with both 3.3V and 5V logic. For the small BO motors that come with most Arduino robot chassis kits, it’s enough. The module is barely bigger than a postage stamp, which is useful when you’re building something compact.

The current limit is the main constraint. At 800mA you’re fine for light robot builds but nothing heavier. There’s also no speed control enable pin: speed is controlled entirely through PWM on the input pins, similar to the DRV8833. The 5-pack price makes it one of the cheapest ways to get into motor control, and having extras is always useful when learning.

Specifications:

  • Driver chip: L9110S (MOSFET)
  • Channels: 2 DC motors
  • Max current: 0.8A per channel
  • Motor and logic supply: 2.5–12V
  • TTL/CMOS compatible (3.3V and 5V)
  • Tiny PCB footprint

Why it stands out:

  • Very cheap, 5-pack means spares and experimenting
  • Works with 3.3V and 5V logic directly
  • MOSFET-based so runs cooler than L293D at similar currents
  • Minimal wiring, straightforward to use

Things to keep in mind:

  • 800mA limit per channel is firm, not suitable for larger motors
  • No fault protection or standby pin
  • Less library and tutorial support than L298N or TB6612FNG

👉 Buy HiLetgo L9110S 5-Pack on Amazon

Verdict: A practical budget pick for small robot kits and learning projects. If your motors are the standard BO type from an Arduino chassis kit, the L9110S handles them fine and the 5-pack price is hard to argue with.


6. Best High-Current Driver: HiLetgo BTS7960 43A

HiLetgo BTS7960 43A High Power Motor Driver

Best for: High-torque motors, electric vehicle builds, larger robots, and anything requiring sustained current above 5A.

HiLetgo BTS7960 43A high current DC motor driver

The BTS7960 is a different product category from everything else on this list. Where the L298N tops out at 2A, the BTS7960 handles 43A peak and around 15–25A continuous with proper cooling. It uses two BTS7960 half-bridge chips from Infineon to form a full H-bridge, drives a single DC motor in both directions, and includes overcurrent and overtemperature protection built into the chip. Motor supply runs from 6V to 27V.

This is the driver for motorized vehicles, power wheelchair motor controllers, large conveyor systems, and heavy-duty winches. It’s not what you reach for to spin a small gear motor. The module connects directly to Arduino or ESP32 GPIO for direction and PWM control, and the enable pins (RPWM, LPWM) accept PWM signals for speed control. At high currents, add a heatsink and consider forced airflow.

Specifications:

  • Driver chip: 2x BTS7960 half-bridge (MOSFET)
  • Channels: 1 DC motor (full H-bridge)
  • Max current: 43A peak, ~15–25A continuous
  • Motor supply: 6–27V
  • Logic supply: 3.3V and 5V compatible
  • Built-in overcurrent and thermal shutdown
  • PWM frequency up to 25kHz

Why it stands out:

  • Handles currents no other module on this list can
  • Built-in overcurrent and thermal protection
  • Works with 3.3V and 5V logic directly
  • Solid construction, well-regarded in the RC and robotics community

Things to keep in mind:

  • Controls one motor only, need two modules for a two-wheel drive
  • Needs a heatsink at sustained high currents
  • Overkill for anything under 5A

👉 Buy HiLetgo BTS7960 43A Motor Driver on Amazon

Verdict: If your motor draws more than 2A continuously, the BTS7960 is the right tool. For standard hobby robot builds it’s more than you need, but for high-current applications nothing else on this list compares.


7. Best Budget Shield: HiLetgo L293D Motor Drive Shield

HiLetgo L293D DC Motor Drive Shield for Arduino

Best for: Arduino Uno and Mega builds where you want plug-and-play motor control without breadboard wiring.

HiLetgo L293D motor driver shield for Arduino

This is the Adafruit Motor Shield V1 design (open source), built around two L293D chips and a 74HC595 shift register. It stacks directly onto an Arduino Uno or Mega, drives up to four DC motors, and uses only three Arduino pins (digital 11, 12, 13) for control thanks to the shift register, freeing up the rest for sensors and other peripherals. The AFMotor library handles the control logic, so the code is clean and simple.

The 0.6A per channel limit is the same constraint as the standalone L293D module. For small hobby motors it’s sufficient. The shield format is a real time-saver on bench projects since there’s no breadboard wiring to get wrong. The 2-pack price makes it good value. One thing to watch: the headers occasionally ship slightly bent, which can cause a loose fit on the Arduino, so press them down firmly before powering up.

Specifications:

  • Driver chips: 2x L293D (BJT)
  • Channels: Up to 4 DC motors, or 2 stepper motors
  • Max current: 0.6A per channel continuous, 1.2A peak
  • Motor supply: 4.5–25V
  • Logic: 5V Arduino directly
  • Arduino pins used: 3 (via 74HC595 shift register)
  • Compatible: Arduino Uno, Mega, Duemilanove

Why it stands out:

  • No breadboard wiring, plugs directly onto Arduino
  • Drives up to 4 motors from one shield
  • Uses only 3 Arduino pins, leaves rest free
  • Good library support via AFMotor

Things to keep in mind:

  • 0.6A per channel limit, small motors only
  • BJT-based L293D, same efficiency issues as the standalone chip
  • Headers can ship slightly bent, check fit before use
  • Arduino-only, not usable with ESP32 in shield form

👉 Buy HiLetgo L293D Motor Shield on Amazon

Verdict: A convenient budget shield for simple Arduino robot builds with small motors. If your motors need more than 600mA per channel, step up to the Arduino Motor Shield REV3.


8. Best Premium Shield: Arduino Motor Shield REV3

Arduino Motor Shield REV3 [A000079]

Best for: Official Arduino builds requiring a reliable, well-documented shield with 2A per channel and up to four DC motors.

Arduino Motor Shield REV3 official Arduino motor driver

The official Arduino Motor Shield REV3 is built on the L298P dual H-bridge and designed to stack on any full-size Arduino board. It drives up to four DC motors at 1.2A continuous (2A with cooling), handles motor voltages from 14V to 18V, and includes thermal and overcurrent protection. It plugs directly into Arduino IDE, uses the standard Arduino motor shield library, and the documentation is about as reliable as it gets in the Arduino ecosystem.

Compared to the HiLetgo L293D shield, the REV3 handles three times the current per channel and is built to a higher standard. Compared to the Adafruit V2 (TB6612-based), it’s a BJT design so efficiency is lower, but at the price point and with the official Arduino library support, it’s the easiest premium shield to get working quickly. The motor voltage range (14–18V) is higher than most other shields, which suits builds running from a 12V SLA battery or 4S LiPo pack.

Specifications:

  • Driver chip: L298P dual H-bridge (BJT)
  • Channels: Up to 4 DC motors, or 2 stepper motors
  • Max current: 1.2A continuous, 2A peak per channel
  • Motor supply: 14–18V
  • Logic: 5V Arduino
  • Built-in thermal and overcurrent protection
  • Compatible: Arduino Uno, Mega, Leonardo, Due

Why it stands out:

  • Official Arduino product, best-in-class documentation and library support
  • 2A per channel handles larger motors than the L293D shield
  • Thermal and overcurrent shutdown built in
  • Drives up to 4 motors from one shield

Things to keep in mind:

  • Higher minimum motor voltage (14V) than most alternatives
  • BJT-based, less efficient than TB6612 or DRV8833-based shields
  • More expensive than the budget L293D shield
  • Arduino-only, not compatible with ESP32 in shield form

👉 Buy Arduino Motor Shield REV3 on Amazon

Verdict: The right shield if you want official Arduino support, clean documentation, and more current capacity than the L293D shield. The higher motor voltage requirement rules it out for 5V or 6V motor builds, but for 12V+ systems it’s a solid choice.


Which Motor Driver Should You Buy?

For a first motor project, the HiLetgo L298N is the practical starting point. The tutorial coverage means any problem you run into has already been solved somewhere online. It’s not efficient, but efficiency matters less when you’re learning wiring and code.

If you’re building a battery-powered two-wheel robot and want decent run time, the Teyleten TB6612FNG is worth the slight extra setup. Less heat, better battery life, and it works directly with ESP32.

For ESP32 projects specifically, the KOOBOOK DRV8833 is the cleanest option. Native 3.3V logic compatibility removes one variable from the build, and the built-in fault protection is genuinely useful when you’re still figuring things out.

For small motors from a standard robot chassis kit, the HiLetgo L9110S works well and costs very little. The ALLECIN L293D is a good alternative if you’re following a tutorial that uses that chip specifically.

If your application involves motors drawing more than 2A, skip straight to the HiLetgo BTS7960. There’s no point stretching a driver rated for hobby robots to handle a high-torque application.

For shield-based builds, the HiLetgo L293D shield is the budget option for small motors, and the Arduino Motor Shield REV3 is the step up if you need more current or want the comfort of official Arduino support.


H-Bridge Basics and Why Driver Choice Matters

Every motor driver on this list is an H-bridge, named after the shape of the circuit. Four switches arranged in an H pattern around the motor let you apply voltage in either direction, giving forward, reverse, brake, and coast modes. Pulse-width modulation on the enable or input pins controls speed.

The key difference between drivers is what those switches are made of. The L298N and L293D use bipolar junction transistors (BJTs). BJTs have a forward voltage drop of roughly 0.7V per transistor, and since current passes through two transistors in series in an H-bridge, you lose around 1.4V to 2V off your motor supply. On a 6V motor running from a 7.2V battery, that drop is significant. The wasted voltage becomes heat, which is why the L298N needs a heatsink.

The TB6612FNG, DRV8833, L9110S, and BTS7960 all use MOSFETs instead. MOSFETs switch based on gate voltage rather than base current, and their on-resistance is very low, typically 0.1–0.3 ohms. Voltage drop is under 0.5V across the full bridge, heat generation is minimal, and efficiency is 90% or better. The practical result: more torque from the same battery, longer run times, and no heatsink needed in most cases.

The trade-off is voltage compatibility. BJT drivers like the L298N tolerate a wider motor voltage range and are generally more robust at higher voltages. MOSFET drivers are more efficient but have tighter voltage ceilings (the DRV8833 maxes out at 10.8V, for example). Match the driver to your motor voltage and you’ll get the best of both.


Final Recommendation

For most beginners, the HiLetgo L298N 4-pack is the right starting point: it covers the widest range of tutorials, handles motors up to 2A, and the pack format means you’ll have spares. Once you’re comfortable with motor control basics, the Teyleten TB6612FNG is the natural upgrade for any build where battery life matters.

For ESP32 projects, use the KOOBOOK DRV8833 from the start rather than fighting level-shifting issues with the L298N. It’s a cleaner wiring job and the built-in protection gives you more margin when learning.

If you want to go further with motor control on the ESP32, ESP32 LEDC PWM on ArduinoYard covers how to configure hardware PWM channels for smooth motor speed control, and ESP32 Web Server PWM Control shows how to control motor speed from a browser over WiFi.


Related on ComponentAdvisor: Best Breadboard and Jumper Wire Kit · Best Soldering Kits for Beginners · Best Arduino Sensor Kits · Best ESP32 Development Boards

Leave a Comment