ADM-ZIP
A pure JavaScript zip compression library for Node.js, with no native dependencies
Repository Health
Technical Analysis
ADM-ZIP is a pure JavaScript implementation of zip data compression for Node.js. It lets applications decompress zip files directly to disk or in-memory buffers, compress files into .zip archives or compressed buffers, and update the content of an existing zip archive — adding, replacing, or deleting entries — without shelling out to a native zip/unzip binary.
Because it has no other Node.js library dependencies and no native bindings, ADM-ZIP works consistently across platforms, including inside Electron apps, where its README documents specific filesystem-access considerations.
What You Get
- Zip reading and extraction to disk or in-memory buffers, including password-protected entries
- Zip creation from files, directories, or raw buffers, with per-entry comments
- In-place archive editing: adding, deleting, or replacing entries in an existing
.zipfile - Zero runtime dependencies on other Node.js packages or native binaries
- Documented Electron filesystem-access support for apps that need zip handling inside an Electron renderer/main process
Common Use Cases
- Extracting uploaded
.ziparchives (e.g. plugin bundles, dataset uploads) server-side without invoking a systemunzip - Packaging build output or generated files into a downloadable
.ziparchive from a Node.js script or API endpoint - Reading specific files out of a zip archive in memory without extracting the whole archive to disk
- Programmatically patching an existing
.zipfile — adding or removing entries — as part of a build or release pipeline
Under The Hood
Architecture - the library is organized around three core files: adm-zip.js (994 lines) exposes the public AdmZip class and orchestrates reading/writing/updating, zipFile.js (456 lines) models the zip container and its central directory, and zipEntry.js (390 lines) models an individual archive entry (name, compressed/uncompressed data, header); the methods/ directory isolates the compression codecs (deflater.js, inflater.js) and zipcrypto.js for password-protected entries behind a small index.js facade. Tech Stack - plain CommonJS JavaScript with a hand-authored types.d.ts for TypeScript consumers, zero third-party runtime dependencies (README explicitly calls this out), and a headers/ module implementing the zip file format’s binary header structures directly per the bundled APPNOTE.md (the official PKWARE zip spec) reference doc. Code Quality - the test/ directory has 23 test files, CI runs via GitHub Actions on every push, and a SECURITY.md documents a vulnerability-reporting process, but there is no visible fuzz-testing or property-based testing for the binary parsing logic, which is a common risk area for hand-written archive-format parsers. API Design - the AdmZip class centers on a small number of intention-revealing methods (getEntries, readAsText, extractEntryTo, extractAllTo, addFile, writeZip) that cover the read/write/update use cases without requiring the caller to understand the zip format internals, though the API predates modern async/Promise conventions and remains largely synchronous.
Used by 25 apps in this directory
Logto
Authentication
Open-source auth infrastructure for SaaS and AI apps with OIDC, SAML, and RBAC
n8n
Automation · No Code Platforms
Code when you need it, UI when you don't — the workflow automation platform built for technical teams who refuse to choose.
overleaf
Collaboration · Productivity
Open-source, real-time collaborative LaTeX editor with sandboxed compilation and full TeXLive support for self-hosted academic and research teams.
Rocket.Chat
Team Chat
The secure, self-hosted team communications platform for organizations that cannot compromise on data sovereignty.
Silex
Design Tools · No Code Platforms
Free, open-source visual website builder that exports clean HTML/CSS — no lock-in, no subscription, host anywhere
Twake Chat
Collaboration · Team Chat
Open-source Flutter Matrix client with federated identity lookup, Vodozemac E2EE, and enterprise white-labeling for decentralized team communication.
Vibe Kanban
AI Agents · AI Code Assistants · Project Management
A kanban board for planning work and dispatching Claude Code, Codex, Gemini CLI, and eight other coding agents into isolated git worktrees, then reviewing and merging their diffs from one UI.