Package Exports
- strc
- strc/dist/jssc.cjs
- strc/dist/jssc.js
- strc/dist/jssc.mjs
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (strc) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme

JSSC — JavaScript String Compressor

JSSC is an open-source, lossless string compression algorithm designed specifically for JavaScript strings (UTF-16). It produces compressed data that remains a valid JS string, making it ideal for environments where binary data is difficult to handle.
Note: The npm package is named
strc.
Thejssc("jSSC") npm package is unrelated to this project.
Both names (uppercase "JSSC" and lowercase "strc") refer to the same project.
JSSC is a complex algorithm featuring multiple internal compression modes tailored for different data structures. During compression, each mode evaluates the input; if its specific conditions are met, it produces a candidate string. JSSC then selects the best candidate — the one that achieves the highest compression ratio while passing a mandatory lossless decompression check. This approach results in a slower compression phase but ensures high compression ratio and fast decompression, as no brute-forcing or validation is required during recovery.
⚠️ Compatibility Notice: Compressed strings from v1.x.x are not compatible with v2.x.x due to header and encoding changes. JSSC follows Semantic Versioning: successful decompression is guaranteed only if the decompressor version is equal to or newer than the compressor version (within the same major version).
Key Features
- ~2.5:1 average compression ratio.
- String-to-String: No binary buffers or external metadata.
- Self-validating: Compressed string is guaranteed to be successfully decompressed and with no data loss.
If the string was corrupted or compressed by a later version or if it was compressed with a different major version following the Semantic Versioning standard, then there is no guarantee that the compressed string will be successfully decompressible without any data loss.
- TypeScript support and a fully-typed API.
Documentation
Full documentation, API reference, and live examples are available at jssc.js.org.
Quick start
npm i strcimport { compress, decompress } from 'strc';
const data = "Hello, world!";
const compressed = await compress(data);
const original = await decompress(compressed);CLI:
npx jssc --helpWebsite/Browsers:
<script src="https://unpkg.com/justc"></script>
<script src="https://unpkg.com/strc"></script>const data = "Hello, world!";
const compressed = await JSSC.compress(data);
const original = await JSSC.decompress(compressed);Dependencies
JSSC depends on:
JUSTC by JustStudio.
- lz-string by pieroxy
- unicode-emoji-json by Mu-An Chiou
- utf8.js by Mathias Bynens
JSSC CLI and format handling (.jssc) depends on:
- crc-32 by SheetJS
- semver by npm
- uint8arrays by Alex Potsides
Note: All dependencies (except JUSTC) are bundled into the final build.