Current release: wimlib-1.14.4 (released February 24, 2024)
wimlib is an open source, cross-platform library for creating, extracting, and modifying Windows Imaging (WIM) archives. WIM is a file archiving format, somewhat comparable to ZIP (and many other file archiving formats); but unlike ZIP, it allows storing various Windows-specific metadata, allows storing multiple "images" in a single archive, automatically deduplicates all file contents, and supports optional solid compression to get a better compression ratio. wimlib and its command-line frontend wimlib-imagex provide a free and cross-platform alternative to Microsoft's WIMGAPI, ImageX, and DISM.
Among other things, wimlib:
wimlib is distributed either as a source tarball (for UNIX/Linux), or as ready-to-use binaries (for Windows XP and later). The software consists of a C library along with the wimlib-imagex command-line frontend and its associated documentation.
wimlib can be used to back up, install, or restore Windows operating systems; to create customized images of Windows PE; or to archive files on either Windows or UNIX/Linux.
wimlib is fully supported on both Windows and UNIX-like systems. On Windows, wimlib uses native Windows API calls to correctly handle advanced NTFS features such as hard links, symbolic links, junctions, named data streams, and security descriptors. On UNIX, wimlib handles hard links and symbolic links and can optionally handle UNIX-specific metadata such as uids, gids, modes, and extended attributes. UNIX users can take advantage of the integration with NTFS-3G to directly capture from and apply to block devices containing NTFS filesystems. This allows Windows operating systems to be backed up and deployed from a live Linux system, for example. Linux users can also take advantage of the FUSE support to mount WIM images read-only or read-write (see: wimmount, wimmountrw).
wimlib contains advanced implementations of the XPRESS, LZX, and LZMS compression algorithms. These have been improved over time and now typically outperform and outcompress their Microsoft equivalents. By default, wimlib creates WIM archives using (multithreaded) LZX compression, but options are provided to control the format, chunk size, compression level, number of threads, and whether the compression is done in solid mode or not.
wimlib fully supports the file contents deduplication or "Single Instance Storage" which is built into the WIM format. Each distinct file contents is identified by its SHA-1 message digest and is stored only once in a given WIM archive. This is true even if the contents are referenced from multiple WIM images in the same archive, from multiple identical files or hard links, or from multiple file streams such as named data streams. When creating or updating a WIM archive, wimlib automatically performs the needed deduplication. This capability means that the WIM format and wimlib are useful for incremental backups and for distributing multiple similar directory trees such as operating system images (for example).
wimlib can also be used to handle ESD (Electronic Software Download) (.esd) archives in addition to WIM (.wim) archives. ESD archives are WIM archives that use solid-mode LZMS compression, and so usually have a significantly smaller size than regular WIM archives. However, Microsoft sometimes distributes ESD archives in (partially) encrypted form. wimlib cannot decrypt such archives by itself.
wimlib includes a C library and a command-line frontend called wimlib-imagex. Documentation for wimlib-imagex is included with the downloads, but for convenience it is hosted here as well:
Developers may be interested in the C API documentation for the library. Several applications besides wimlib-imagex are already using the library.
The source code is maintained in a git repository:
You can also browse the git repository online.
A mirror of the git repository can also be found on GitHub:
Contributions are accepted via GitHub pull request or any other convenient means.
wimlib is free and open source software. See the COPYING file distributed with the software for license details.
wimlib was originally a project started by Carl Thijssen in 2009 for use on Linux in the Ultimate Deployment Appliance. Since then the code has been entirely rewritten and improved (main author: Eric Biggers).
wimlib.net (website) Copyright 2015-2023 Eric Biggers
wimlib (software) Copyright 2012-2023 Eric Biggers