Variable-to-variable codes are very attractive yet not well understood data compression schemes. In 1972 Khodak claimed to provide upper and lower bounds for the achievable redundancy rate, however, he did not offer explicit construction of such codes. In this paper, we first present a constructive and transparent proof of Khodak's result showing that for memoryless sources there exists a code with the average redundancy rate bounded by D-5/3 , where D is the average delay (e.g., the average length of a phrase). We also describe an algorithm that constructs a variable-to-variable length code with a small redundancy rate for large D. Then, we discuss several generalizations. We extend the above result to Markov sources and prove that the worst case redundancy (i.e., for individual sequences) does not exceed D-4/3 . Finally, we consider bounds that are valid for almost all memoryless and Markov sources, that is, for almost all sources there exists a variable-to-variable code such t...