In Sonic the Hedgehog for the Sega Mega Drive, spikes were originally presented to be as lethal to Sonic as falling down a pit or being crushed to death. When Sonic is injured by anything, including a set of spikes, he will become invulnerable, indicated by his sprite flashing the moment he touches the ground. However, if he lands on spikes, he will be harmed, regardless of whether he is flashing or not. This behavior is most often refered to as the "spike bug".

The "spike bug" is most frequently encountered when a number of spikes are placed together horizontally, and Sonic lands on one of the spikes, recoils, and lands on another. There is debate as to whether this is indeed a "bug" or an intended feature, considering that the behavior was changed in Sonic 2 and later. However, many factors (including the actual coding for the spike object) lead to the conclusion that the "spike bug" is, ultimately, intended behavior that was removed by the Sonic 2 developers.

The reason the behavior was changed in later, unofficial Sonic 1 revisions is likely due to the developers acting under the assumption that the alternate behavior was unintended, and they changed it as a result. Another possibility is that it was changed because the behavior made the game "too hard," or to maintain consistency between Sonic 1 and other games in the series. However, it is worth noting that the only official revision of the game that ever changed the behavior of the spikes, in Sonic Mega Collection, was released more than a decade later. It was also changed in Sonic Jam, another compilation which was released much earlier. However, toggling the spin dash on will revert the behavior.

The "spike bug" is caused by spikes calling a special routine to hurt Sonic, different from the routine used by every other object in the game that damages him.

The first chronological evidence of the removal of this behavior was in Sonic 2 Beta 5.

Removal

drx created his own ROM hack before the release of Sonic Mega Collection with the behavior removed. He later released instructions for removing the behavior in a disassembly.

A tutorial written by FraGag details how to change this behavior using a disassembly.