A new family of codes is described for representing serial binary data, subject to constraints on the maximum separation between successive changes in value(0 rightarrow 1, 1 rightarrow, or both), or between successive like digits (0's,1's, or both). These codes have application to the recording or transmission of digital data without an accompanying clock. In such cases, the clock must be regenerated during reading (receiving, decoding), and its accuracy controlled directly from the data itself. The codes developed for this type of synchronization are shown to be optimal, and to require a very small amount of redundancy. Their encoders and decoders are not unreasonably complex, and they can be easily extended to include simple error detection or correction for almost the same additional cost as is required for arbitrary data.