The pulses in NRZ have more energy than a return-to-zero (RZ) code, which also has an additional rest state beside the conditions for ones and zeros.
When used to represent data in an asynchronous communication scheme, the absence of a neutral state requires other mechanisms for bit synchronization when a separate clock signal is not available.
The two-level NRZI signal distinguishes data bits by the presence or absence of a transition at a clock boundary.
The NRZI encoded signal can be decoded unambiguously after passing through a data path that doesn’t preserve polarity.
Which bit value corresponds to a transition varies in practice, NRZI applies equally to both.
Consuming no more of the channel capacity than necessary to maintain bit clock synchronization without increasing costs related to complexity is a problem with many possible solutions.
Bit stuffing consumes channel capacity only when necessary but results in a variable information data rate.
[4] Return-to-zero describes a line code used in telecommunications in which the signal drops (returns) to zero between each pulse.
This means that a separate clock does not need to be sent alongside the signal, but suffers from using twice the bandwidth to achieve the same data-rate as compared to non-return-to-zero format.
Although return-to-zero contains a provision for synchronization, it still may have a DC component resulting in baseline wander during long strings of 0 or 1 bits, just like the line code non-return-to-zero.