A Massively Spiffy Yet Delicately Unobtrusive Compression Library
(Also Free, Not to Mention Unencumbered by Patents)
(Not Related to the Linux zlibc Compressing File-I/O Library)
Welcome to the zlib home page, web pages originally created by
Greg Roelofs
and maintained by Mark Adler.
If this page seems suspiciously similar to the
PNG Home Page, rest assured
that the similarity is completely coincidental. No, really.
zlib was written by
Jean-loup Gailly (compression) and
Mark Adler
(decompression).
Current release:
zlib 1.2.3
July 18, 2005
Version 1.2.3 eliminates potential security vulnerabilities
in zlib 1.2.1 and 1.2.2, so all users of those versions should upgrade immediately. The following important fixes
are provided in zlib 1.2.3 over 1.2.1 and 1.2.2:
- Eliminate a potential security vulnerability
when decoding invalid compressed data
- Eliminate a potential security vulnerability
when decoding specially crafted compressed data
- Fix a bug when decompressing dynamic blocks with no distance codes
- Fix crc check bug in gzread() after gzungetc()
- Do not return an error when using gzread() on an empty file
Version 1.2.x adds many improvements and features to zlib. Here are some highlights:
- inflate is about 20% faster and minimizes memory allocation
- crc32 is about 50% faster
- New, improved, and supported DLL interface and DLL FAQ
- New functions and functionality:
- deflate() and inflate() will now optionally encode and decode gzip streams
- raw deflate() and inflate() now documented and supported
- New inflateBack() functions for call-back interface -- faster than inflate()
- Z_BLOCK flush option and new return information added to inflate to facilitate appending to deflate streams
- raw deflate() now accepts a dictionary -- for appending
- deflatePrime() for starting deflate output mid-byte -- for appending
- Z_RLE strategy for run-length encoding -- option for PNG compression
- gzclearerr() and gzungetc(), analogous to stdio functions
- inflateCopy() added, analogous to deflateCopy()
- deflateBound() and compressBound() for maximum size of compressed data
- zlibCompileFlags() to provide compilation information
- More supported architectures and improved shared library support
- Many more FAQ entries
- Several new and updated contributions in the contrib directory
You can also look at the complete Change Log.
Versions 1.1.4 and later eliminate an earlier potential security vulnerability, see details here. Any software that is linked
against or derived from an earlier version of zlib should be upgraded
immediately.
A partial list of over 500 applications using zlib
is given here
(uncompressed).
-
Canonical URL:
http://zlib.net/ (US)
-
Mirror sites:
zlib is designed to be a free,
general-purpose, legally unencumbered -- that is, not covered by any patents
-- lossless data-compression library for use on virtually any computer hardware
and operating system. The zlib data format is itself portable across
platforms. Unlike the LZW compression method used in Unix compress(1)
and in the GIF image format, the compression method currently used in zlib
essentially never expands the data. (LZW can double or triple the file size in
extreme cases.) zlib's memory footprint is also independent of the input data
and can be reduced, if necessary, at some cost in compression. A more precise,
technical discussion of both points is available on another page.
zlib was written by
Jean-loup Gailly (compression) and
Mark Adler
(decompression). Jean-loup is also the primary author/maintainer of
gzip(1), the author of the comp.compression FAQ list and
the former maintainer of Info-ZIP's Zip;
Mark is also the author of gzip's and
UnZip's main
decompression routines and was the original author of Zip. Not surprisingly,
the compression algorithm used in zlib is essentially the same as that in
gzip and Zip, namely, the `deflate' method that originated in
PKWARE's PKZIP 2.x.
Mark and Jean-loup can be reached by e-mail at
.
Please read the FAQ and
the manual before asking
us for help. We are getting too many questions which already have an
answer in the zlib documentation.
Greg, Mark and/or Jean-loup will add some more stuff here when they think of
something to add.
For now this page is mainly a pointer to zlib itself and to the
official zlib and deflate documentation. Note
that the specifications both achieved official Internet RFC status in May 1996,
and zlib itself was adopted in version 1.1 of the Java Development Kit (JDK), both as a
raw class and as a component of the JAR archive
format.
The lovely zlib-vise image above was provided courtesy of Bruce Gardner, art
director of Dr. Dobb's Journal. It
appears in Mark Nelson's article in the January 1997 issue (see below).
The current release is publicly available here:
-
zlib source code, version 1.2.3, tar.gz format (485K,
MD5 checksum debc62758716a169df9f62e6ab2bc634):
-
US (www.zlib.net)
-
France (www.gzip.org)
-
Pick a mirror (prdownloads.sourceforge.net)
-
zlib source code, version 1.2.3, tar.bz2 format (415K,
MD5 checksum dee233bf288ee795ac96a98cc2e369b6):
-
US (www.zlib.net)
-
France (www.gzip.org)
-
Pick a mirror (prdownloads.sourceforge.net)
-
zlib source code, version 1.2.3, zipfile format (570K,
MD5 checksum abbd0f2b456206da5e3ffd179324413a):
-
US (www.zlib.net)
-
France (www.gzip.org)
-
Pick a mirror (prdownloads.sourceforge.net)
-
zlib compiled DLL, version 1.2.3, zipfile format (79K,
MD5 checksum cc7fa97f9c19386bb701acc79d0abbca):
-
US (www.zlib.net)
-
France (www.gzip.org)
-
Pick a mirror (prdownloads.sourceforge.net)
NOTE: zlib does not currently support window
sizes of 256 bytes (windowBits == 8). A 512-byte window is the smallest the
encoder can use. (Most applications use the default
32,768-byte window size for best compression.)
Note that zlib is an integral part of
libpng and
has been tested extensively as part of many
PNG-supporting
applications.
zlib Information
-
zlib Frequently Asked Questions
-
Zlib-announce mailing list
-
New versions of zlib are announced on this list.
-
Zlib-devel mailing list
-
Please do not send questions or comments about zlib to
this mailing list. Send those directly to the authors at
after checking the FAQ and
the manual, of course. The zlib-devel list is for the development of
zlib—members are contributors to and testers of new versions of zlib.
-
zlib Manual
-
zlib Usage Example
-
zlib Technical Details
-
zlib-Related Specifications
-
zlib's Deflate Algorithm
-
zlib's deflate flush modes
-
zlib License
Related External Links
-
unofficial (contributed) patches and binaries
(not tested by zlib team)
-
zlib for Linux, both shared and
static plus headers (RPM format, many
architectures)
-
zlib for
HP-UX 10.20 and 11.00 (shared library and headers)
-
(alternatively here: HP-UX 10.20 and HP-UX 11.00)
-
zlib
for SGI Irix 6.x (shared library and headers)
-
zlib for Solaris
-
zlib for Solaris (alternate)
-
zlib for Digital Unix 4.0
-
zlib for SCO Open Server 5.0
-
zlib for BeOS R5
-
zlib for Mac OS X: zlib is already included as part of Mac OS X
-
zlib for Mac OS
-
zlib for
OS/2 (DLL and static version for emx 0.9c, 46k)
-
(click here if link breaks)
-
zlib for Palm Pilot
-
zlib for Newton OS
-
zlib for Windows CE
-
zlib for RIM BlackBerry
-
zlib for Windows
9x/NT/2000/XP/2003 (DLL version, plus related utilities)
-
zlib for Windows 9x/NT (DLL and static version)
-
zlib for .NET in C#
-
zlib DLL wrapper for .NET in VB
-
Zip for .NET
-
zip file manipulation for .NET
-
Mark Nelson's
ZlibTool article and
Win32 source code for
Dr. Dobb's Journal (January 1997)
-
zlib C++ wrapper for the gz*
functions.
-
C++ zlib and gzip filters in an iostream framework.
-
zlib 32-bit OCX and 16-bit DLL
(Visual Basic interface, source code and binaries, 84k)
-
zlib
32-bit OCX
(C++ source and binaries for use with Visual Basic 4.x or
Delphi 2.0)
-
(unsupported VB5 binary also available)
-
zlib Pascal port (Pascal source, tested with Turbo
Pascal 7.0 and Delphi 3.02)
-
(not tested by us, but looks complete and well-maintained)
-
zlib Delphi 5 interface
-
(includes compiled object files and corresponding C++ Builder 5
project files)
-
zlib Perl interface (source code; look for Compress-Zlib*.tar.gz)
-
zlib Python
interface (online manual; part of the standard library as of
Python 1.5)
-
zlib Tcl
interface mkZiplib
-
zlib Java interface (see also JAR format)
-
zlib reimplementation in pure
Java
-
(not tested by us, but looks like a good alternative to
java.util.zip)
-
Mark Nelson's
JavaZip article (with source code) for
Dr. Dobb's Journal (December 1997)
-
Gilles Vollant's zlib-based
mini-zip and
mini-unzip
-
(see also Info-ZIP's UnZip,
which optionally can be compiled with zlib)
-
Scott Ludwig's zlib-based
CExe executable compressor for Win32
-
zlib technical issues, including spec errors
-
zlib information in Japanese
-
zlib information in Russian
-
Real World Scanning and Halftones
(second edition includes a section on zlib)
-
Markus Oberhumer's
LZO `real-time' data compression library
-
(not tested by us, but looks like a good alternative if you need
more speed and less compression)
-
libbzip2
-
(not tested by us, but looks like a good alternative if you need
more compression and less speed)
-
PPP Deflate Protocol
(RFC 1979)
-
Info-ZIP Home Page
-
Portable Network Graphics (PNG)
Home Page
-
gzip Home Page
-
pigz (parallel gzip) Home Page
-
DataCompression.info
-
comp.compression Frequently Asked Questions list
Send comments or questions about zlib to the authors at
after checking FAQ and
manual.
Please report broken links to
(PGP key).
Last updated August 7th, 2009.