# MG996R servo: torque, current draw and clone checks

> MG996R specs and real-world limits: stall torque, current draw, why it browns out an Arduino and how to power and drive it without jitter.

Canonical: https://roboticsengineering.in/components/mg996r-servo/ | Published: 2026-10-27 | Updated: 2026-10-27

**The MG996R is a ₹300–₹600 standard-size metal-gear servo rated at about 9.4 kg·cm at 4.8 V — enough for a small arm joint, and enough stall current to reset an Arduino that tries to power it.** It is the servo most Indian student arms are built around, and most failures blamed on it are really supply, linkage or clone problems.

## Key specifications

| Weight | 55 g (typical) |
| --- | --- |
| Torque | 9.4 kg·cm at 4.8 V, 11 kg·cm at 6 V |
| Speed | 0.17 s per 60° at 4.8 V |
| Operating voltage | 4.8–6.6 V |
| Gears | metal |
| Rotation | 180° (clones vary) |
| Idle current | 10 mA (typical) |
| Running current | 500 mA–1 A (typical) |
| Stall current | about 2.5 A at 6 V (clones vary) |
| Control | 50 Hz, 1–2 ms pulse |
| Size | about 40 × 20 × 36 mm |
| Connector | 3-pin JR-style |

**Substitute:** MG90S for light joints, or a DS3218 when the joint must hold a pose under load.

## What 9.4 kg·cm buys you on a real arm

Torque is quoted at the output shaft with a 1 cm arm: divide 9.4 by your arm length in centimetres and you get the kilograms the horn can hold. That is the ideal case, with no friction, no linkage slop and no acceleration. Real arms lose 20–40% to friction and flex, and a moving joint needs extra torque to start, so plan on half the rated figure. The 11 kg·cm rating at 6 V only appears if the supply holds 6 V under load, which a USB power bank will not.

| Arm length from the shaft | Ideal hold at 9.4 kg·cm | Plan for, with 50% margin |
| --- | --- | --- |
| 1 cm | 9.4 kg | 4.7 kg |
| 5 cm | 1.9 kg | 0.94 kg |
| 10 cm | 0.94 kg | 0.47 kg |
| 15 cm | 0.63 kg | 0.31 kg |
| 20 cm | 0.47 kg | 0.23 kg |

An undersized servo does not fail politely: it buzzes against the stop, heats up and strips the first gear in the train. A 500 g payload at 12 cm is 6 kg·cm before margin, already more than this servo should hold continuously.

## Current draw is the part that bites

An MG996R sits at roughly 10 mA idle, but idle is not the number to design around. Moving against a light load it typically pulls 500 mA to 1 A, and the commonly quoted stall current at 6 V is about 2.5 A; clones are reported anywhere from roughly 1.5 A to 3 A. Two servos moving together can exceed a 3 A supply.

The Arduino 5 V pin is not a servo supply. An Uno on USB has about 500 mA for everything, and the polyfuse will not save a servo asking for five times that. Brown-out resets, a display that flickers when the arm moves and a board that reboots mid-sketch are all the same mistake: current the supply cannot give.

## Power it separately, every time

One MG996R wants 5–6 V at 3 A; two or three want 5 A. A 5 V 3 A UBEC, a 6 V adapter or a 2S pack through a buck converter all work. A 9 V PP3, a 1 A phone charger or the 5 V rail of the motor driver does not. The [power guide](https://roboticsengineering.in/how-to-power-a-robot/) covers supply sizing for a whole robot.

- **Common ground:** join the servo supply negative to the Arduino GND at one point. A missing ground makes the servo twitch or ignore commands.
- **Bulk capacitor:** 470–1000 µF across the servo supply, close to the first servo, to absorb the spike at the start of every move.
- **Wire and routing:** 20–22 AWG for power, and keep servo leads away from motor driver outputs. Thin, long jumpers cause the jitter people blame on the code.
- **Voltage ceiling:** the rated range is 4.8–6.6 V. A charged 2S pack is 8.4 V and will damage the servo; regulate it down first.

## Control: pulse width, range and dead band

The signal is 50 Hz with a 1–2 ms pulse: about 1 ms at one end, 1.5 ms at centre and 2 ms at the other. The Servo library generates it, but its defaults on AVR boards are 544–2400 µs — wider than many datasheets — which is why some units buzz at the extremes. Use `writeMicroseconds()` and narrow the endpoints until the buzzing stops, then keep those numbers in the code.

The dead band is a few microseconds, under a degree, and gear play adds a degree or two of backlash. There is no position feedback, so the board never knows the true angle: design joints that tolerate a few degrees of error. The 180-degree rating is typical, but clones ship with 120-degree travel and some are continuous-rotation units in the same case, so sweep a new unit before designing a bracket around it.

## MG996R or something else?

[The servo buying guide](https://roboticsengineering.in/servo-buying-guide-sg90-mg90s-mg996r/) compares the family in detail. The short version:

| Servo | Weight | Quoted torque | Use it for |
| --- | --- | --- | --- |
| SG90 | 9 g | 1.8 kg·cm at 4.8 V | Sensor pan, light gripper, demo arm with no load |
| MG90S | 13 g | 2.2 kg·cm at 4.8 V | The same jobs with metal gears |
| MG996R | 55 g | 9.4 kg·cm at 4.8 V, about 11 at 6 V | Arm joints, heavier grippers, standard mounts |
| DS3218 | 60 g | about 20 kg·cm at 6.8 V | Joints that must hold a pose under load |

## Clone checks and mounting

The MG996R is one of the most copied hobby servos sold in India. Many units in an MG996R case carry MG995-class boards, and a few are continuous-rotation servos. There is no reliable visual test, so check behaviour instead:

- **Weight:** a genuine-class unit is about 55 g. A much lighter one is not the same hardware inside.
- **Endpoints:** command 0 and 180 degrees slowly. A unit that stops at 120 degrees will fight your kinematics.
- **Backlash:** hold the horn and rock it gently. More than a degree or two of free play means soft or worn gears.
- **Loaded sweep:** fit a 5 cm arm, hang a known weight and sweep slowly. Grinding or stalling at half the calculated load is a return, not a tuning problem.

Mechanically, the load should reach the case through the bracket, not hang on the shaft. Use the grommets and eyelets supplied with the servo, and add a slip clutch on any joint that can be back-driven. The [3-DOF arm build](https://roboticsengineering.in/projects/arduino-robot-arm-3dof/) works through the bracket and horn adjustments a standard-size joint needs.

## Common questions

**Can I power an MG996R from the Arduino 5V pin?**

No. It can pull around 2.5 A when stalled, and the Uno's 5 V pin cannot supply that. Use a separate 5–6 V supply with a common ground.

**Why does my MG996R buzz when it should be holding still?**

It is holding against a load, fighting a binding linkage, or being driven past its mechanical stop. Centre the horn by hand, check the linkage, and narrow the pulse endpoints.

**Is the MG996R really 180 degrees?**

Usually, but clones vary and some are 120-degree or continuous-rotation units in the same case. Sweep the actual unit before designing around its travel.

**Can I run it from a 2S 18650 pack?**

Not directly. A charged 2S pack is 8.4 V, above the 4.8–6.6 V rating. Put a 5–6 V regulator or UBEC between the pack and the servo.

Related: [SG90 servo](https://roboticsengineering.in/components/sg90-servo/), [Arduino Uno](https://roboticsengineering.in/components/arduino-uno/), [servo vs DC motor vs stepper](https://roboticsengineering.in/servo-vs-dc-motor-vs-stepper/).

## Sources and further reading

- [Arduino Servo library reference](https://docs.arduino.cc/libraries/servo/) — `write()`, `writeMicroseconds()` and the default pulse limits.
- [Arduino language reference](https://docs.arduino.cc/language-reference/) — `map()`, `analogWrite()` and timing functions.

Last reviewed: October 2026. Figures are the values commonly published for MG996R-class servos; clone specifications vary. Prices are Indian retail ranges.

If this servo goes into a gripper, the [gripper design guide](https://roboticsengineering.in/robot-gripper-design-basics/) shows how its torque becomes grip force.
