A JavaScript library to zip and unzip files in the browser, Deno and Node.js
Last release 2 days ago
25 Aug 2026
Release timing varies
gaps range from 8 days to 3 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
353 releases · first in 2021
Release timeline
353 releases since 2021Releases
- 2.7.711 Aug 2025
Release notes
Open source →- Improved security in
ZipReaderby:- adding the
checkOverlappingEntryandcheckOverlappingEntryOnlyoptions (falseby default) to detect potential non-recursive zip-bombs (e.g. "A better zip bomb"), more info here: https://github.com/gildas-lormeau/zip.js/discussions/587#discussioncomment-13911457 - making sure that the output size of the decompressed entry data matches the expected size exactly
- adding the
- Fixed
URLStringtype in the type definition file - Updated dev dependencies
- Improved security in
- 2.7.7029 Jul 2025
Release notes
Open source →- Fixed bug in
Data64URIWriterwhen writing small succeeding amounts of data (see https://github.com/gildas-lormeau/zip.js/issues/588) - Improved security when uncompressing ZIP files.
ZipReaderwill trigger an error as soon as the output size of an entry exceeds the expected "uncompressed size" defined in the central directory (see https://github.com/gildas-lormeau/zip.js/discussions/587)
- Fixed bug in
- 2.7.6926 Jul 2025
Release notes
Open source →- Ensure the compressed size, the uncompressed size, and the CRC2 checksum are written in the local header if the data descriptor is not used (see #585)
- 2.7.6823 Jul 2025
Release notes
Open source →Fixed regression introduced in version
2.7.65when usingHttpRangeReaderwithZipWriter#add()(see #586) - 2.7.6723 Jul 2025
Release notes
Open source →- Fixed
ZipWriter#prependZip() - Fixed the "level" value of the "general purpose bit flag" when creating zip files with encrypted data or not deflated data
- Added action to publish zip.js automatically on NPM with provenance
- Fixed
- 2.7.6621 Jul 2025
Release notes
Open source →- Fixed value of compression level in the "general purpose bit flag" when compressing files (fix previous version)
- 2.7.6521 Jul 2025
Release notes
Open source →- Fixed regression introduced in version
v2.7.50related to the encoding of the "general purpose bit flag" and the compression level when creating zip files (see #583) - Added
FileEntry#arrayBufferandZipFileEntry#getArrayBuffermethods to extract data asArrayBufferinstances (see example)
- Fixed regression introduced in version
- 2.7.6417 Jul 2025
Release notes
Open source →- added the ability in the
ZipWriter#add()method to include the "ZIP64 extended information extra field" in the local headers when thezip64option is enabled. This makes the ZIP file more robust when trying to recover data from a damaged ZIP file (see https://github.com/gildas-lormeau/zip.js/issues/579). - added the
ZipWriter#remove()method to remove entries from the central directory - added the
ZipWriter#prependZip()method to allow appending/removing entries to/from an existing ZIP file (see example, example). This can also be useful to create a (large) ZIP file in multiple passes. - circumvented a Node.js bug when using a
Bufferinstance (as aUint8Arrayinstance) with aUint8ArrayReaderreader (see https://github.com/gildas-lormeau/zip.js/issues/580) - fixed a ZipCrypto (legacy ZIP encryption) bug in
ZipWriterwhen setting thedataDescriptoroption tofalseexplicitly (the option istrueby default, it will also be automatically set totruein that case) - updated dev dependencies
- added the ability in the
- 2.7.634 Jul 2025
Release notes
Open source →What's Changed
- feat: discriminate
EntrytoDirectoryEntryandFileEntryby @tpoisseau in https://github.com/gildas-lormeau/zip.js/pull/576
New Contributors
- @tpoisseau made their first contribution in https://github.com/gildas-lormeau/zip.js/pull/576
Full Changelog: https://github.com/gildas-lormeau/zip.js/compare/v2.7.62...v2.7.63
- feat: discriminate
- 2.7.6219 May 2025
Release notes
Open source →What's Changed
- fix types of Uint8Array methods by @xollaborator in https://github.com/gildas-lormeau/zip.js/pull/571
- Fix UNIX permissions by @lephilousophe in https://github.com/gildas-lormeau/zip.js/pull/569
New Contributors
- @xollaborator made their first contribution in https://github.com/gildas-lormeau/zip.js/pull/571
- @lephilousophe made their first contribution in https://github.com/gildas-lormeau/zip.js/pull/569
Full Changelog: https://github.com/gildas-lormeau/zip.js/compare/v2.7.61...v2.7.62
- 2.7.6112 May 2025
Release notes
Open source →Fixed missing executable permission for directories on UNIX-like filesystem (see #567)
- 2.7.6031 Mar 2025
- 2.7.5929 Mar 2025
Release notes
Open source →- Added
legacy-5.6entry point in thepackage.jsonfile in order to support TypeScript < 5.7 (see #563 and #549) - Fixed score on JSR (see #562)
- Fixed ESLint and Deno lint warnings
- Updated dev dependencies
- Added
- 2.7.5828 Mar 2025
Release notes
Open source →- Added ArrayBuffer type parameter to
Uint8Arrayby @UnsungHero97 in the type definition file (see #549) - Added exception "Writer not initialized" when using
Writerclasses implementingWriter#writeUint8ArrayifWriter#init()has not been previously called (see #560) - Fixed infinite loop when using
readable.getReader()fromReaderclasses (see #559) - Added more info about
encryptionStrengthin the documentation (see #558) - Updated development dependencies
- Added JSR integration via an Action
- Added ArrayBuffer type parameter to
- 2.7.5731 Jan 2025
Release notes
Open source →- Changed the external file attributes format to
UNIX(more info here part 4.4.2). As a consequence, themsDosCompatibleoption is now set tofalseby default. - Added the
executableoption to indicate an entry is a UNIX executable file when creating zip files
- Changed the external file attributes format to
- 2.7.5630 Jan 2025
Release notes
Open source →- Fixed
Entry#directoryvalue when reading a zip flle created on Unix - Added
Entry#executableboolean property to identify entries with executable files (Unix) when reading a zip file - Renamed
Entry#internalFileAttributeandEntry#externalFileAttribute(now deprecated) toEntry#internalFileAttributesandEntry#externalFileAttributesrespectively
- Fixed
- 2.7.5530 Jan 2025
Nothing published for this version
- 2.7.545 Dec 2024
Release notes
Open source →- Setting
compressionMethodto0will create valid (uncompressed) entries when usingZipWriter - Removed some useless
asyncfunction calls - Updated dev dependencies
- Setting
- 2.7.5328 Oct 2024
Release notes
Open source →- Fixed type of
Entry#extraFieldby @xc2 in https://github.com/gildas-lormeau/zip.js/pull/535 - Updated dev dependencies
New Contributors
- @xc2 made their first contribution in https://github.com/gildas-lormeau/zip.js/pull/535
- Fixed type of
- 2.7.5227 Aug 2024
Release notes
Open source →- Added option
compressionMethodinZipWriterfor handling custom compression methods (e.g. zstd) when setting the optionpassThroughtotrue - Fixed issue with Uint8Array size in
ZipReaderwhen settingpassThroughtotrueand using aUint8Writerclass to get the uncompressed data - Fixed optional
checkPasswordOnlyproperty in the type definitions (index.d.ts)
- Added option
- 2.7.5121 Aug 2024
Release notes
Open source →- Fixed issue when passing
passThrough: trueoption in theimport*methods of theFSAPI with AES-encrypted files where the encryption strength is not set to the default value (i.e.3)
- Fixed issue when passing
- 2.7.5021 Aug 2024
Release notes
Open source →- Added the new option
passThroughinZipReader,ZipWriter, andZipDirectoryEntry#importmethods. This allows reading/writing directly the raw data of zip entries without processing it (i.e. compressing or/and encrypting data) - Added the new option
offsetinZipWriter. This allows setting the offset of the first entry in the file to a value > 0. This can be useful when creating zip files with prepended data - Completed the implementation of the
bitFlagproperty inZipWriter. It will now take into account the level of compression and update the bit flag value accordingly. - Updated dev dependencies
- Added the new option
- 2.7.4921 Aug 2024
Nothing published for this version
- 2.7.4831 Jul 2024
Release notes
Open source →What's Changed
- Support ignoring Language Encoding flag with the new option
useUnicodeFileNamesby @eliandoran in https://github.com/gildas-lormeau/zip.js/pull/521
New Contributors
- @eliandoran made their first contribution in https://github.com/gildas-lormeau/zip.js/pull/521
Full Changelog: https://github.com/gildas-lormeau/zip.js/compare/v2.7.47...v2.7.48
- Support ignoring Language Encoding flag with the new option
- 2.7.4718 Jul 2024
- 2.7.4617 Jul 2024
Release notes
Open source →Added the export
./data-uriin order to support Web Workers loaded with a data URI instead of a Blob URI (see #519) - 2.7.4528 May 2024
Release notes
Open source →Fix rare issue where files would not be compressed if the compression codec included in zip.js was not used
- 2.7.446 May 2024
Release notes
Open source →What's Changed
- fixed
ZipReaderStreamexample in the documentation by @jespertheend in https://github.com/gildas-lormeau/zip.js/pull/510 - fixed typo by @AbdullahSohail-SE in https://github.com/gildas-lormeau/zip.js/pull/511
- fixed a minor issue when creating a zip file that led to the use of the zip64 format when it wasn't necessary, in the particular case where zip specification limits were reached (e.g. 65335 files in the archive) but not exceeded.
- the default value of
Entry#filenameandEntry#commentwill be used ifencodeText/decodeTextfunctions returnundefinedvalues (see #507)
New Contributors
- @jespertheend made their first contribution in https://github.com/gildas-lormeau/zip.js/pull/510
- @AbdullahSohail-SE made their first contribution in https://github.com/gildas-lormeau/zip.js/pull/511
Full Changelog: https://github.com/gildas-lormeau/zip.js/compare/v2.7.43...v2.7.44
- fixed
- 2.7.4324 Apr 2024
Release notes
Open source →- Fixed an issue with zip files incorrectly detected as using zip64 under particular circumstances (e.g. when they contain exactly 65536 entries) when trying to read them
- 2.7.4223 Apr 2024
Release notes
Open source →- Added
decodeTextandencodeTextoptions to handle text encoding of filenames and comments when reading and writing a zip file respectively (see #507). - Fixed issue where creating a zip file without Deflate implementation could lead to a corrupted zip file (see #508).
- Added
- 2.7.412 Apr 2024
Release notes
Open source →Added
combineSizeEocdoption inHttpReader(see https://gildas-lormeau.github.io/zip.js/api/interfaces/HttpOptions.html)What's Changed
- Add explicit
preventHeadRequestfalse check. by @bwbroersma in https://github.com/gildas-lormeau/zip.js/pull/499 - Add
combineSizeEocdoption to combine range size with eocd by @bwbroersma in https://github.com/gildas-lormeau/zip.js/pull/500 - Add preventHeadRequest=false and
combineSizeEocdTypescript definitions. by @bwbroersma in https://github.com/gildas-lormeau/zip.js/pull/501 - Bump follow-redirects from 1.15.5 to 1.15.6 by @dependabot in https://github.com/gildas-lormeau/zip.js/pull/496
Full Changelog: https://github.com/gildas-lormeau/zip.js/compare/v2.7.40...v2.7.41
- Add explicit
- 2.7.407 Mar 2024
Release notes
Open source →Fix regression introduced in version v2.7.38 leading to some streams being not closes internally
- 2.7.397 Mar 2024
Nothing published for this version
- 2.7.387 Mar 2024
Release notes
Open source →- Fixed missing documentation
- Fixed ignored exceptions when closing
WritableStreaminstances used internally
- 2.7.374 Mar 2024
- 2.7.3629 Feb 2024
- 2.7.3524 Feb 2024
Release notes
Open source →What's Changed
- Added
ZipReaderStream&ZipWriterStreamclasses by @BlackAsLight in https://github.com/gildas-lormeau/zip.js/pull/488
New Contributors
- @BlackAsLight made their first contribution in https://github.com/gildas-lormeau/zip.js/pull/488
Full Changelog: https://github.com/gildas-lormeau/zip.js/compare/v2.7.34...v2.7.35
- Added
- 2.7.3429 Jan 2024
Release notes
Open source →- Added option
rawPasswordto provide passwords not encoded in UTF-8 (see https://github.com/gildas-lormeau/zip.js/discussions/477)
- Added option
- 2.7.3327 Jan 2024
Release notes
Open source →terminateWorkers()can be called asynchronously in order to wait for the termination of all workers- Fixed detection of the
WorkerAPI (see #480) - Fixed support of
chunkSizeoption - Fixed other minor issues
- 2.7.324 Dec 2023
Release notes
Open source →Fixed potential data corruption in Deno when using Web Workers (Thanks to @vi117, see #466)
- 2.7.3116 Nov 2023
Release notes
Open source →ZipReader: added support of invalid zip files with truncated preprended data (e.g. self-extracting files where the program part has been truncated without fixing the zip payload) - 2.7.3014 Oct 2023
Release notes
Open source →- Fixed bug when creating empty encrypted entries
- Fixed error when calling
ZipDirectoryEntry#addFileSystemHandle()withundefinedhandles
- 2.7.295 Sept 2023
Release notes
Open source →FSAPI: the optionbufferedWriteis now set totrueby default when callingexport*methods (e.g.exportBlob()) in order to use multiple web workers by default - 2.7.283 Sept 2023
Release notes
Open source →- Added missing
FS#addUint8Arraymethod - Fixed potential issue leading to larger files than expected (max. 64 bytes) when creating split zip files in usdz format
- Added missing
- 2.7.2727 Aug 2023
Release notes
Open source →- Added
model/vnd.usdz+zipin getMimeType - Added support of the
USDZextra field inZipReader
- Added
- 2.7.2627 Aug 2023
- 2.7.2527 Aug 2023
Release notes
Open source →- Added support of USDZ file format:
- New option
usdzwhen creatingZipWriterinstances, see https://gildas-lormeau.github.io/zip.js/api/interfaces/ZipWriterConstructorOptions.html#usdz - Test: https://github.com/gildas-lormeau/zip.js/blob/562443d8da420a2df045d611fb076bee18ae1404/tests/all/test-usdz.js
- New option
- Added LICENSE file in the repository
- Added support of USDZ file format:
- 2.7.2410 Aug 2023
Release notes
Open source →FSAPI:- Keep last access and creation date of entries when importing a zip file
- 2.7.239 Aug 2023
Release notes
Open source →- Fixed support of "Extended Timestamp" extra field used to store the creation and last access date of entries, see "Extended Timestamp Extra Field" here for more information about the spec
- Fixed duplicate filename extensions in the implementation of
getMimeType()
- 2.7.228 Aug 2023
Release notes
Open source →- Updated MIME types table in
getMimeType()(see #440) - Added
index.min.js(minified ES6 module) in the root folder of the project (see #441)
- Updated MIME types table in
- 2.7.217 Aug 2023
Release notes
Open source →Fixed error in
z-worker-core.jswhen catching potential and intermittentundefinederrors (see #439) - 2.7.2011 Jul 2023
Release notes
Open source →Circumvented a bug specific to Clouflare Workers environment when creating zip files (see #434)
- 2.7.1911 Jul 2023
Release notes
Open source →Fixed zip64 bug when creating zip files containing entries weighting more than 4GB (uncompressed), using the
ReadableAPI to read the uncompresssed data, and not setting explicitly thezip64option totrue. - 2.7.1810 Jul 2023
- 2.7.1723 Jun 2023
Release notes
Open source →Added workaround for Thunderbird where calling
Blob#slice()andBlob#arrayBuffer()does not work as expected (the array buffer is not sliced) (see #430) - 2.7.1614 Jun 2023
Release notes
Open source →Fixed compatibility issue with older Chromium browsers (i.e. v78) (see https://github.com/gildas-lormeau/zip.js/issues/426)
- 2.7.157 Jun 2023
Release notes
Open source →- Fixed scripts used to build the library with babel (i.e
rollup-es5.config.dev.jsandrollup-es5.config.js) - FS API: Set
ZipFileEntry#uncompressedSizewhen entries are added in the filesystem
- Fixed scripts used to build the library with babel (i.e
- 2.7.1416 May 2023
Release notes
Open source →Fixed error when using
HttpReaderwithuseXHRset totrueand the connection is lost (see #414) - 2.7.1313 May 2023
- 2.7.1212 May 2023