A fake projective plane is a smooth complex surface which is not the complex projective plane but has the same Betti numbers as the complex projective plane. The first example of such a surface was constructed by David Mumford in 1979 using p-adic uniformization. Two more examples were found by Ishida and Kato by related method. Keum has recently given an example which is possibly different from the three known earlier. It is an interesting problem in complex algebraic geometry to determine all fake projective planes. Using the arithmeticity of the fundamental group of fake projective planes, the formula for the covolume of principal arithmetic subgroups given by the first-named auhor, and some number theoretic estimates, we give a classification of fake projective planes in this paper. Twenty eight distinct classes are found. The construction given in the paper appears to be more direct and more natural. It does not use p-adic uniformization.