JSZip

Create, read, and edit ZIP files directly in JavaScript, in the browser or Node.js.

Library
npm
v3.10.2
10,392 stars
MIT OR GPL-3.0-or-later

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
64 /100 Good
Development Activity 48
Maintenance 24
Community 84
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
74 /100 Good
Architecture 78
Code Quality 70
Innovation 75
Learning Curve 75

JSZip is a JavaScript library for creating, reading, and editing ZIP archives without any server-side dependency. It exposes a chainable file/folder API for building an archive in memory, plus Promise- and stream-based methods for generating the final ZIP as a blob, base64 string, typed array, or Node buffer/stream.

The same API also reads existing ZIP files back into that file/folder tree, with optional CRC32 integrity checking, so archives can be created, inspected, and re-packaged using one consistent interface across browser and Node.js environments.

What You Get

  • A dependency-light JSZip class for building ZIP archives in-memory from strings, binary data, base64, ArrayBuffers, Blobs, or Node streams
  • A loadAsync() reader that parses existing ZIP files, including nested folders and CRC32 verification, back into the same file/folder API
  • Multiple output formats — blob, base64, Uint8Array, ArrayBuffer, or Node Buffer/stream — via generateAsync()/generateNodeStream()
  • Bundled TypeScript type definitions (index.d.ts) for editor autocomplete with no separate @types package required
  • A prebuilt browser bundle (dist/jszip.min.js) alongside the Node/CommonJS entry point

Common Use Cases

  • Bundling multiple generated files (reports, exports, images) into a single downloadable ZIP in the browser
  • Reading uploaded ZIP archives client-side to preview or extract their contents without a server round-trip
  • Packaging build artifacts or generated documents as ZIPs in Node.js scripts and CI pipelines
  • Implementing “export all as ZIP” features in web apps, such as downloading a folder of user files at once

Under The Hood

Architecture The JSZip constructor (lib/index.js) creates an instance with a null-prototype files map; prototype methods from lib/object.js (file, folder, forEach, filter, remove, generateInternalStream/generateAsync/generateNodeStream) operate on that tree. Loading an existing archive flows through lib/load.js, which uses lib/reader/* (ArrayReader, Uint8ArrayReader, NodeBufferReader, StringReader, dispatched via readerFor.js) to parse ZipEntries (lib/zipEntries.js, zipEntry.js) and optionally verify CRC32 via lib/stream/Crc32Probe.js. Output generation runs through lib/generate/index.js and ZipFileWorker.js, which chain GenericWorker-derived stream stages (lib/stream/GenericWorker.js, DataWorker.js, DataLengthProbe.js, ConvertWorker.js, StreamHelper.js) via .pipe() — a hand-rolled stream abstraction that mirrors Node streams but works unmodified back to IE6, ultimately exposed through StreamHelper’s accumulate()/toNodejsStream() for Promise or stream consumption.

Tech Stack Runtime dependencies are minimal: pako (~1.0.2) for DEFLATE/INFLATE compression, lie (~3.3.0) as an ES5-safe Promise polyfill exposed via lib/external.js, readable-stream (~2.3.6) for the Node stream shim (swapped for a browser-specific file via the package.json browser field), and setimmediate. Build tooling is Grunt plus Browserify for the bundled browser build (dist/jszip.min.js), with hand-written TypeScript declarations (index.d.ts) checked via tsc in the test script rather than the library itself being authored in TypeScript. The source is CommonJS, ES5-style (var, no destructuring) — a reflection of the library’s long history (created 2009) rather than neglect, though it does mean there’s no native ESM entry point.

Code Quality Test coverage is broad: test/asserts/ holds one file per feature area (file.js alone has 76 assertions, plus generate.js, load.js, stream.js, permissions.js, unicode.js, and more), run via QUnit in both Node (test-node) and real browsers through Playwright (test-browser), plus a tsc pass validating the type definitions against the JS API. ESLint runs with eslint:recommended plus stricter rules (eqeqeq, curly, no-caller, guard-for-in, 4-space indent, double quotes), enforced in CI on every push/PR (.github/workflows/main.yml). Error handling is consistent but dated — explicit Error throws with upgrade-guide messages for removed 2.x methods, Promise .catch/worker error events rather than typed errors — and the project’s own health signals show low recent commit and maintenance activity despite the large existing test surface.

API Design The public API is small and chainable: new JSZip(), .file()/.folder()/.remove() for the tree, .generateAsync()/.generateNodeStream() for output, and static JSZip.loadAsync() for reading — all reachable from a single default export with almost no setup ceremony (three lines to zip a file and produce a blob, per the README example). Type definitions ship inside the package (index.d.ts), giving IDE autocomplete with no separate @types install. The main friction is legacy holdovers: removed synchronous .generate()/constructor-with-args paths throw pointed but easy-to-miss errors directing users to the upgrade guide, and the full documentation lives on an external GitHub Pages site (stuk.github.io/jszip) rather than in the README, so newcomers need to leave the package to find anything past the basic example.

Used by 66 apps in this directory

JavaScript
42%
Other

LimeSurvey

Forms Surveys

3,778

The world's most flexible open-source survey platform with 900+ templates, conditional logic, 80+ languages, and full GDPR compliance for any scale.

View details
86
Repo Health
62
Technical
62
Dependency
Built with
JavaScript 42%
PHP 36%
CSS 12%
Updated 5 days ago
TypeScript
93%
AGPL 3.0

Linkwarden

Bookmarks Archiving · Knowledge Management

20,195

Self-hosted collaborative bookmark manager that captures full-page archives, enables annotation, and keeps your knowledge accessible forever.

View details
90
Repo Health
72
Technical
66
Dependency
Built with
TypeScript 93%
Updated 5 days ago
TypeScript
100%
MIT

Llama Coder

AI Development · Low Code Platforms

7,140

Generate multi-file web apps from a single prompt using open-source LLMs — an open-source alternative to Claude Artifacts.

View details
66
Repo Health
66
Technical
69
Dependency
Built with
TypeScript 100%
Updated 1 weeks ago
Clojure
71%
AGPL 3.0

Logseq

Knowledge Management · Note Taking

45,349

A privacy-first, open-source knowledge graph platform combining Markdown, Org-mode, bidirectional linking, and local-first storage for building your second brain.

View details
92
Repo Health
82
Technical
65
Dependency
Built with
Clojure 71%
OCaml 12%
Updated 6 days ago
JavaScript
55%
Other

Lokus

Knowledge Management · Note Taking

829

Local-first note-taking with graph view, canvas & AI plugins—your Markdown files, zero telemetry, blazing-fast Rust performance.

View details
75
Repo Health
75
Technical
64
Dependency
Built with
JavaScript 55%
HTML 21%
Rust 12%
Updated 2 months ago
TypeScript
44%
Other

Magic

AI Agents · Automation · Low Code Platforms

5,055

Magic is an enterprise-grade open-source AI agent platform combining a generalist AI agent, workflow engine, IM, and collaborative office system for running an AI-powered digital workforce.

View details
68
Repo Health
79
Technical
65
Dependency
Built with
TypeScript 44%
PHP 32%
Updated 2 months ago
TypeScript
81%
AGPL 3.0

massCode

Code Editors · Developer Tools · Productivity

7,085

A free, local-first developer workspace unifying snippets, notes, HTTP requests, calculations, drawings, and dev tools in one desktop app.

View details
85
Repo Health
87
Technical
62
Dependency
Built with
TypeScript 81%
Vue 17%
Updated 2 weeks ago
TypeScript
88%
Apache 2.0

Medplum

Authentication · Databases · Developer Tools

2,760

An open-source, FHIR-native healthcare platform that gives developers a compliant backend, authentication, a React component library, and serverless bots to build clinical applications in weeks instead of years.

View details
93
Repo Health
90
Technical
71
Dependency
Built with
TypeScript 88%
Updated 5 days ago
TypeScript
53%
MIT

MentraOS

AI Development · Developer Tools

2,391

The open source operating system and SDK that lets developers build one app and run it across smart glasses from Even Realities, Vuzix, Mentra Live, and more.

View details
92
Repo Health
77
Technical
66
Dependency
Built with
TypeScript 53%
Java 16%
Updated 5 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers