---
title: compression_algorithm
framework: compression
role: symbol
role_heading: Structure
path: compression/compression_algorithm
---

# compression_algorithm

A structure for values that represent compression algorithms.

## Declaration

```swift
struct compression_algorithm
```

## Overview

Overview Choose an algorithm according to the following guidelines: If speed and compression ratio are important, use COMPRESSION_LZMESH. If you require interoperability with non-Apple devices, use COMPRESSION_ZLIB. If speed is critical, and you’re willing to sacrifice compression ratio to achieve it, use COMPRESSION_LZ4. If compression ratio is critical, and you can sacrifice speed to achieve it, use COMPRESSION_LZRAVEN. Note that COMPRESSION_LZRAVEN is an order of magnitude slower for both compression and decompression than other choices. COMPRESSION_LZMESH is faster than COMPRESSION_ZLIB and generally achieves a better compression ratio. However, it’s slower than COMPRESSION_LZ4 and doesn’t compress as well as COMPRESSION_LZRAVEN. COMPRESSION_LZBITMAP provides a compression-ratio that’s between COMPRESSION_LZ4 and COMPRESSION_LZMESH. When compression ratio and performance are equally important, use COMPRESSION_LZMESH to favor compression ratio and COMPRESSION_LZBITMAP to favor performance.

## Topics

### Algorithm Constants

- [COMPRESSION_LZFSE](compression/compression_lzfse.md)
- [COMPRESSION_LZ4](compression/compression_lz4.md)
- [COMPRESSION_LZ4_RAW](compression/compression_lz4_raw.md)
- [COMPRESSION_LZMA](compression/compression_lzma.md)
- [COMPRESSION_ZLIB](compression/compression_zlib.md)
- [COMPRESSION_BROTLI](compression/compression_brotli.md)
- [COMPRESSION_LZBITMAP](compression/compression_lzbitmap.md)
- [COMPRESSION_LZMESH](compression/compression_lzmesh.md)
- [COMPRESSION_LZRAVEN](compression/compression_lzraven.md)

### Initializers

- [init(_:)](compression/compression_algorithm/init(_:).md)
- [init(rawValue:)](compression/compression_algorithm/init(rawvalue:).md)

### Instance Properties

- [rawValue](compression/compression_algorithm/rawvalue.md)

## Relationships

### Conforms To

- [BitwiseCopyable](swift/bitwisecopyable.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [RawRepresentable](swift/rawrepresentable.md)
- [Sendable](swift/sendable.md)

## See Also

### Multiple-step compression

- [compression_stream](compression/compression_stream.md)
- [compression_stream_init(_:_:_:)](compression/compression_stream_init(_:_:_:).md)
- [compression_stream_process(_:_:)](compression/compression_stream_process(_:_:).md)
- [compression_stream_destroy(_:)](compression/compression_stream_destroy(_:).md)
- [compression_status](compression/compression_status.md)
- [compression_stream_flags](compression/compression_stream_flags.md)
- [compression_stream_operation](compression/compression_stream_operation.md)
