There’s a simple reductio ad absurdum argument to show that not all strings can be compressed in a loss-less fashion.
Assume the contrary. Compress the string. It must be at least one bit shorter or you couldn’t say you had compressed it. Now compress the compressed string. Repeat as many times as there were bits in the original string. You have now compressed the entire string down to one bit in a loss-less fashion. Since all those steps were loss-less, you should now be able to expand that one bit back into the original string. How do you propose to do that?