In this article, an efficient concatenation of error correction codes with constrained codes is proposed. Generally, constrained codes are designed to match specified channels, whereas error correction coding schemes are designed to correct the channel errors. Both play important roles to ensure the integrity of data in data storage systems. In this study, we first investigate the design of k-constrained codes combined with a low-density parity-check (LDPC) code, and then we extend the idea to the design of dc-free k-constrained LDPC codes. Simulation results show that the proposed designs achieve an improved bit error rate (BER) performance, compared to prior art schemes. In particular, the proposed design for the dc-free k-constrained codes not only fully eliminates the effect of error propagation in a reverse configuration but also achieves significant dc suppression.