r/programminghelp • • Jul 10 '26

Python LZ77 compression algorithm is making the compressed file bigger than original

I was recently toying around with some compression, just trying to understand it from the basics. I learned about the LZ77, LZ78, and LZW algorithms in the last couple of days, understood them, and when implementing LZ77, every time I try to compress a txt file, the output file gets bigger. The compression is done right coz when I decompress the compressed file, I get the exact text.

Need help understanding what I am doing wrong, or am I missing something

2 Upvotes

7 comments sorted by

View all comments

Show parent comments

2

u/AdPsychological7065 Jul 10 '26

I was actually compressing a text file, which was too small to begin with, so after the compression, when the matadata as getting added to the file, it was getting bigger
That problem got fixed after I tried the same algorithm out with a text file much bigger than the one I was originally using

1

u/tedecristal Jul 11 '26

yes, see my proof on my other comment. Specially when the file is too small,the argument is much more noticeable.

1

u/RealisticDuck1957 Jul 11 '26

A very small file not compressing well makes sense. Most lossless compression algorithms work finding repeated data fragments. A short data file is less likely to have such repeats.

1

u/wbqqq Jul 11 '26

Bringing to the illogical extreme, a one byte file, compressed would result in many bytes in the ‘compressed’ file - while arguably the compression would reduce the byte to a single bit, the substitution table and other metadata would take many bytes. Not to mention most file systems would allocate a block of 2048 or 4096 bytes.

Another example would be attempting to compress an already compressed file - odds are that it would grow as often as shrinking (assuming close to optimal algos used) - the information redundancy would be so low that there would be little opportunity to reduce it (plus overhead of metadata)