We report an experimental demonstration of Schumachers quantum noiseless coding theorem. Our experiment employs a sequence of single photons each of which represents three qubits. We initially prepare each photon in one of a set of 8 non-orthogonal codeword states corresponding to the value of a block of three binary letters. We use quantum coding to compress this quantum data into a two-qubit quantum channel and then uncompress the two-qubit channel to restore the original data with a fidelity approaching the theoretical limit.