Abstract—In this paper, we consider modulation codes for practical multilevel flash memory storage systems with q cell levels. Instead of maximizing the lifetime of the device [7], [1], [2], [4], we maximize the average amount of information stored per cell-level, which is defined as storage efficiency. Using this framework, we show that the worst-case criterion [7], [1], [2] and the average-case criterion [4] are two extreme cases of our objective function. A self-randomized modulation code is proposed which is asymptotically optimal, as q → ∞, for an arbitrary input alphabet and i.i.d. input distribution. In practical flash memory systems, the number of cell-levels q is only moderately large. So the asymptotic performance as q → ∞ may no...