Unpack Universal
Universal archive & package extractor for Visual Studio Code.
Extract a broad range of archives, compressed files, packages, and game/mod packs directly inside VS Code.
Features
- Magic-Byte Signature Detection: Real format identification based on file headers rather than file extensions alone.
- Direct Package Unpacking: Extract
.mcaddon, .mcpack, .mcworld, .vsix, .apk, .whl, .deb, .jar directly without manual renaming.
- Explorer Context Menu Integration: Right-click any archive in the VS Code Explorer file tree to extract immediately.
- Security & Zip Slip Protection: Path normalization and directory traversal protection against malicious path entries.
- Archive Bomb Safeguards: Configurable file count, total size, and recursion depth limits.
- Recursive Archive Extraction: Automatically inspects and unpacks nested archives inside containers.
- Collision Handling: Flexible overwrite, skip, rename, and batch handling options.
| Category |
Formats |
| General Archives |
.zip, .7z, .rar, .tar |
| Compressed TAR |
.tar.gz, .tgz, .tar.bz2, .tbz2, .tar.xz, .txz |
| Individual Compression |
.gz, .bz2, .xz, .z |
| Other Containers |
.iso, .cab, .arj, .lzh |
| Java Packages |
.jar, .war, .ear |
| Android Packages |
.apk, .aab |
| Linux Packages |
.deb, .rpm |
| Python Packages |
.whl |
| Developer Packages |
.vsix, .crx, .xpi |
| Minecraft / Bedrock Packs |
.mcpack, .mcaddon, .mcworld, .mctemplate |
Commands
| Command |
Description |
Unpack Universal: Extract Here |
Extracts selected archive into a sibling folder (filename_extracted). |
Unpack Universal: Extract to Folder... |
Prompts for destination directory and extracts archive. |
Unpack Universal: Extract All |
Batch extracts multiple selected archives. |
Unpack Universal: Inspect Archive |
Displays detailed metadata, file list, compression ratio, and encryption status. |
Unpack Universal: Detect Format |
Runs magic-byte detection and displays format analysis. |
Extension Settings
This extension contributes the following settings (unpackUniversal.*):
unpackUniversal.recursiveExtraction: Recursively extract nested archives inside unpacked folders (default: true).
unpackUniversal.maxRecursionDepth: Maximum depth for recursive archive extraction (default: 5).
unpackUniversal.maxFiles: Maximum number of files allowed per extraction pass (default: 100000).
unpackUniversal.maxExtractedSizeMB: Maximum total uncompressed size in MB (default: 4096).
unpackUniversal.preserveTimestamps: Preserve file modification timestamps from original archive (default: true).
unpackUniversal.preservePermissions: Preserve file system permissions when extracting (default: true).
unpackUniversal.autoDetectFormat: Perform magic-byte header inspection in addition to extension matching (default: true).
Security & Path Traversal Safeguards
Security is enforced at every stage of extraction:
- All paths inside archives are checked with
validateExtractionPath() to ensure target files remain inside the destination folder.
- Relative traversal entries (
../../, ..\.., /absolute/path) are sanitized or skipped with clear security log warnings.
- Archive bomb protection halts extraction if file count or total uncompressed size exceeds user constraints.
Limitations
Unpack Universal aims to provide broad archive and package extraction support. It does not claim compatibility with every packed, compressed, proprietary, encrypted, or application-specific format in existence.
Formats utilizing proprietary closed-source compression algorithms (such as encrypted RAR v5 solid archives without an unrar binary or password-protected 7z headers) will be detected and reported with an explicit explanation rather than generating incomplete output.
License
MIT License. See the LICENSE file included with this extension for details.
| |