Note that it is not necessary for the non-singular code to be more compact than the source (and in many applications, a larger code is useful, for example as a way to detect and/or recover from encoding or transmission errors, or in security applications to protect a source from undetectable tampering).
Non-singular codes can be more extensive than the source material, but this is beneficial in certain situations like error detection/recovery and security applications.