Documentation Index
Fetch the complete documentation index at: https://mintlify.com/facebook/zstd/llms.txt
Use this file to discover all available pages before exploring further.
The zstd CLI provides fast and flexible decompression capabilities with various output and validation options.
Basic Decompression
Standard Decompression
# Decompress a file
zstd -d file.txt.zst
# Output: file.txt
# Alternative syntax
zstd --decompress file.txt.zst
unzstd file.txt.zst
Decompress to stdout
# Write to stdout
zstd -dc file.txt.zst
zstd -d -c file.txt.zst
# Using symlinks
zstdcat file.txt.zst
zcat file.txt.zst
Specify Output File
# Decompress to specific file
zstd -d file.txt.zst -o output.txt
# Keep compressed file (default)
zstd -d -k file.txt.zst
# Remove compressed file after decompression
zstd -d --rm file.txt.zst
List File Details
# Display information about compressed file
zstd -l file.txt.zst
# Verbose information
zstd -lv file.txt.zst
Displays information such as:
- Original size
- Compressed size
- Compression ratio
- Checksum (if available)
Some fields may not be available depending on how the file was compressed (e.g., missing content size if compressed with --no-content-size).
Integrity Testing
Test Compressed Files
# Test file integrity without decompressing
zstd -t file.txt.zst
zstd --test file.txt.zst
# Test multiple files
zstd -t *.zst
This is equivalent to zstd -d --stdout > /dev/null. Data is decompressed and checksummed but discarded. No files are created or removed.
Checksum Validation
# Validate checksums during decompression (default)
zstd -d file.txt.zst
# Ignore checksums
zstd -d --no-check file.txt.zst
Memory Limits
Set Memory Usage Limit
# Limit decompression memory to 256 MiB
zstd -d -M 256MiB file.txt.zst
# Limit to 128 MiB (default)
zstd -d -M 128MiB file.txt.zst
If a compressed file requires more memory than the limit allows, decompression will fail. This is particularly relevant for files compressed with high windowLog values or --long mode.
Large Window Sizes
For files compressed with windowLog > 27:
# Decompress with large window (from --long=30)
zstd -d --long=30 file.txt.zst
# Or specify memory directly
zstd -d --memory=1GiB file.txt.zst
Sparse Files
Sparse Mode
# Enable sparse file support (default for files)
zstd -d --sparse file.txt.zst
# Disable sparse mode
zstd -d --no-sparse file.txt.zst
# Force sparse mode for stdout
zstd -dc --sparse file.txt.zst
Sparse mode is enabled by default when output is a file and disabled when output is stdout. Sparse files save disk space and speed up decompression by reducing I/O for files with many zeros.
Pass-through Mode
Handle Uncompressed Files
# Pass through uncompressed files as-is
zstd -d --pass-through file.txt
# Force pass-through to stdout
zstd -df --pass-through file.txt
With pass-through enabled, unrecognized formats are copied from input to output without modification. By default, pass-through occurs when output is stdout and -f is set.
Recursive Decompression
Decompress Directories
# Decompress all .zst files in directory
zstd -d -r directory/
# Output to flat directory
zstd -d -r --output-dir-flat /output/dir input/
# Preserve directory structure
zstd -d -r --output-dir-mirror /output/dir input/
Multiple File Decompression
File Lists
# Decompress files from list
zstd -d --filelist files.txt
# Create file list
ls *.zst > files.txt
zstd -d --filelist files.txt
Format is compatible with ls output, one file per line.
Wildcards
# Decompress multiple files
zstd -d *.zst
zstd -d file1.zst file2.zst file3.zst
Dictionary Decompression
Using Dictionaries
# Decompress with dictionary
zstd -d file.txt.zst -D dictionary
# Dictionary is required for files compressed with -D
zstd -d FILE.zst -D dictionaryName
Files compressed with a dictionary require that same dictionary for decompression. The decoder will verify the dictionary ID matches.
Memory-mapped Dictionaries
# Memory-map dictionary instead of loading it
zstd -d --mmap-dict -D large-dictionary file.txt.zst
# Disable memory mapping (default)
zstd -d --no-mmap-dict -D dictionary file.txt.zst
Progress and Output Control
Verbosity
# Verbose output
zstd -dv file.txt.zst
# Very verbose
zstd -dvv file.txt.zst
# Quiet mode (suppress warnings)
zstd -dq file.txt.zst
# Very quiet (suppress errors too)
zstd -dqq file.txt.zst
Progress Counter
# Force show progress
zstd -d --progress file.txt.zst
# Hide progress
zstd -d --no-progress file.txt.zst
Progress counter is shown by default for single file decompression. When output is mixed with progress text, use --no-progress.
Force Operations
Override Protections
# Force various operations
zstd -df file.txt.zst # Overwrite existing files
zstd -df file.txt.zst > output # Force stdout to terminal
The -f flag:
- Allows overwriting existing files
- Enables output to stdout even if itβs a terminal
- Enables pass-through of unrecognized formats
- Operates on links and block devices
Concatenated Files
# Decompress concatenated .zst files
zstd -d concatenated.zst
Multiple .zst files concatenated together are decompressed as if they were a single file:
cat file1.zst file2.zst file3.zst > combined.zst
zstd -d combined.zst
# Outputs: combined (containing data from all three files)
Asynchronous I/O
# Use async I/O (default)
zstd -d --asyncio file.txt.zst
# Disable async I/O
zstd -d --no-asyncio file.txt.zst
The CLI automatically detects compression format:
# Automatically detects .zst format
zstd -d file.txt.zst
# Can also decompress gzip (if compiled with zlib)
zstd -d file.txt.gz
# And xz/lzma (if compiled with lzma)
zstd -d file.txt.xz
zstd -d file.txt.lzma
# And lz4 (if compiled with lz4)
zstd -d file.txt.lz4
Trace Logging
# Log tracing information
zstd -d --trace trace.log file.txt.zst
Useful for debugging or performance analysis.