Skip to main content
Solid archiving is a compression method that treats all files as a single continuous data stream, achieving significantly better compression ratios.

What are Solid Archives?

In a solid archive, files are compressed together as one continuous block:
  • All files are treated as a single data stream
  • Compression dictionary is shared across files
  • Similar data patterns across files are efficiently compressed
  • Maximum compression ratio is achieved

Solid vs Non-Solid

Creating Solid Archives

Solid mode is enabled by default for 7z archives. Use -ms=off to disable it.

Solid Block Size

You can control the solid block size for better balance between compression and access speed:

Choosing Block Size

Best for: Archives with frequent random access
  • Faster extraction of individual files
  • Lower memory usage
  • Slightly worse compression

Compression Example

Non-Solid Archive

Each file is compressed independently:
  • file1.txt → LZMA → compressed block 1
  • file2.txt → LZMA → compressed block 2
  • file3.txt → LZMA → compressed block 3

Solid Archive

All files compressed as one stream:
  • file1.txt + file2.txt + file3.txt → LZMA → compressed block
Compression improvement example:
  • 1000 text files (1 KB each) = 1 MB total
  • Non-solid: ~400 KB (40% compression)
  • Solid: ~100 KB (90% compression)
The improvement comes from sharing the compression dictionary across similar files.

Memory Requirements

Solid compression requires more memory:

Compression Memory

Example with 64 MB dictionary:
  • Non-solid: ~100 MB
  • Solid: ~1.2 GB

Decompression Memory

Example:
  • Dictionary: 64 MB
  • Solid block: 512 MB
  • Required memory: ~576 MB

Extraction Performance

Extracting Single File

Non-solid:
Solid:

Extracting All Files

Both solid and non-solid have similar performance when extracting all files:

Solid Archive Organization

By File Type

Organize files by type for better compression:

By Extension

Use solid groups to compress similar files together:
This creates separate solid blocks for each file extension.

Custom Sorting

Solid Archives with Filters

Combine solid compression with BCJ filters for executables:
This provides excellent compression for collections of similar executables.

Best Practices

Use solid archives for:
  • Backup archives
  • Software distribution
  • Large collections of similar files
  • Long-term storage
  • Maximum compression priority
Avoid solid archives for:
  • Frequently updated archives
  • Archives needing random access
  • Low-memory systems
  • Incremental backups

Advanced Examples

Maximum Compression Backup

Partly-Solid Archive

Balances compression ratio and extraction speed.

Solid Archive with Header Encryption

Maximum compression with full encryption.

Implementation Details

Solid compression in 7-Zip:
  • Implemented in CPP/7zip/Archive/7z/7zHandler.cpp
  • Solid block structure in CPP/7zip/Archive/7z/7zFolderOutStream.cpp
  • Memory management in CPP/7zip/Common/
From DOC/readme.txt (lines 36-42):

See Also