Given a gzip compressed file, how do I know what compression level (1-9) was used for it?
4 Answers
There is no way to directly determine gzip level .
The only way to determine it in my opinion is to gunzip the file and compressing it at different levels and then comparing the results with your existing file size.
I believe the default level is 6 so in most cases that should be your answer
-
-
3
-
2Python also defaults to a compression level on 9: docs.python.org/3/library/gzip.html– RFoxFeb 15, 2016 at 14:28
-
1
-
It is stored in the header of file. To see it, use file
command. For example:
$ file testfile.gz
testfile.gz: gzip compressed data, from Unix, last modified: Sun Sep 15 14:22:19 2013, max compression
Unfortunately there are only three possible values in the header: max speed (level 1), max compression (level 9) and "normal" (all other levels). But better than nothing!
-
-
2Looks like the rest of a compressed file isn't any clearer. Test-compressing a 201 bytes file with all levels resulted in only 4 different outputs - partitioned by levels as (1,23,45678,9) - with levels 1 and 9 specifically marked (see XFL in RFC1952; that's why
file
can recognise those). A 10^7 bytes file still only resulted in 7 unique outputs - partitioned (1,2,3,4,5678,9). While this doesn't mean different levels are useless for bigger files, it shows you can't assume 9 unique outputs.– validNov 10, 2015 at 3:38 -
3Every version of Python until 3.5 (maybe even including 3.6) sets the compression level in the header to 9 even when it is not. Just a bug, but FYI: bugs.python.org/issue27521 Nov 16, 2016 at 5:15
-
gzip -l <filename>
will give you the compression ratio, but there's no way of directly finding the compression level used.
-
2While the assertion about elvel is false, the command is useful for comrpession ratio.– mverooneOct 19, 2015 at 13:04
There is no direct way of knowing it. It most probably 6 (the current default) or 9 (the best compression). you need to try and compare.
See https://stackoverflow.com/questions/16153334/how-to-determine-the-compression-level-of-deflate