Duplication is the replacement of a factor w within a word by ww. This operation can be used iteratively to generate
languages starting from words or sets of words. By undoing duplications, one can eventually
reach a square-free word, the original word's duplication root. The duplication root is unique, if the length of duplications is fixed.
Based on these unique roots we define the concept of duplication code. Elementary properties are stated, then the conditions under which infinite duplication codes exist are fully characterized; the relevant parameters are the duplication length and alphabet size. Finally, some properties of the languages generated by duplication codes are investigated.