Skip to main content

Import

import { CompressionUtils } from "bytekit/compression-utils";

What it does

CompressionUtils provides static methods for LZ-based string compression and decompression. It supports multiple output formats — plain string, Base64, and Uint8Array — and includes convenience methods for compressing and decompressing JSON objects directly.
The compression algorithm is deterministic and synchronous. It works in both browser and Node.js environments without native dependencies.

Methods

compress(data, options?)

const compressed = CompressionUtils.compress("Hello, world!");
Compresses a string using LZ-based compression and returns a compressed string.
ParameterTypeDescription
datastringThe string to compress.
optionsobjectOptional compression options.

decompress(compressed)

const original = CompressionUtils.decompress(compressed);
Decompresses a previously compressed string.

compressToBase64(data)

const b64 = CompressionUtils.compressToBase64(largePayload);
Compresses a string and returns the result as a Base64-encoded string. Useful for URL parameters or storage in text-only fields.

decompressFromBase64(base64)

const original = CompressionUtils.decompressFromBase64(b64);
Decompresses a Base64-encoded compressed string.

compressToUint8Array(data)

const bytes = CompressionUtils.compressToUint8Array(payload);
Compresses a string and returns the result as a Uint8Array. Ideal for binary transport (WebSocket, IndexedDB).

decompressFromUint8Array(compressed)

const original = CompressionUtils.decompressFromUint8Array(bytes);
Decompresses a Uint8Array back to the original string.

estimateCompressionRatio(data)

const ratio = CompressionUtils.estimateCompressionRatio(jsonString);
console.log(`Compression ratio: ${(ratio * 100).toFixed(1)}%`);
Returns a number between 0 and 1 representing the estimated compression ratio. A value of 0.3 means the compressed output is roughly 30% of the original size.

compressJSON(obj)

const compressed = CompressionUtils.compressJSON({ users: largeArray });
Serializes an object to JSON and compresses the result in one step.

decompressJSON<T>(compressed)

const data = CompressionUtils.decompressJSON<UserList>(compressed);
Decompresses a string and parses the result as JSON, returning a typed object.

Examples

Compress state for URL sharing

import { CompressionUtils } from "bytekit/compression-utils";

const state = JSON.stringify({ filters: selectedFilters, view: "grid" });
const encoded = CompressionUtils.compressToBase64(state);
const shareUrl = `${location.origin}/dashboard?state=${encodeURIComponent(encoded)}`;

Compress JSON for localStorage

import { CompressionUtils } from "bytekit/compression-utils";

// Save
const compressed = CompressionUtils.compressJSON(appState);
localStorage.setItem("state", compressed);

// Restore
const restored = CompressionUtils.decompressJSON<AppState>(
  localStorage.getItem("state")!,
);

Estimate savings before compressing

import { CompressionUtils } from "bytekit/compression-utils";

const payload = JSON.stringify(report);
const ratio = CompressionUtils.estimateCompressionRatio(payload);

if (ratio < 0.8) {
  // Worth compressing — more than 20% savings
  return CompressionUtils.compress(payload);
}

return payload;
Use compressToBase64 when the compressed output needs to travel through text-only channels (URLs, JSON fields, cookies).
Compression is most effective on repetitive or structured text. Small strings (under ~100 characters) may produce output that is larger than the input.