Compression Utilities Skill
Work with the URL-based storage and compression system.
When to Use
- •Debugging URL encoding issues
- •Optimizing compression performance
- •Extending the storage format
- •Handling special characters
Compression Pipeline
code
blocks → serializeBlocks (binary + compact props) → CompressionStream (deflate or brotli) → format byte + Base85 → URL hash
Format Versions
| Format byte | Encoding | Compression |
|---|---|---|
| (legacy) | base64url | deflate-raw |
| 0x01 | base64url | deflate-raw |
| 0x02 | base85 | deflate-raw |
| 0x03 | base85 | encrypted (AES-GCM) |
| 0x04 | base85 | brotli |
Format detection: if hash contains chars outside base64url (A-Za-z0-9_-), it's base85. Otherwise legacy base64url.
Compact Property Keys
Block properties use short keys when serialized:
- •
lang→l - •
checked→c - •
start→s - •
emoji→e - •
depth→d
Encryption (Format 0x03)
AES-GCM-256 with PBKDF2 key derivation (120k iterations). Payload: salt(12) + IV(12) + ciphertext+tag(16). Triggered via "Lock with password" in Share menu.
URL Structure
code
https://example.com/?theme=dark#base85EncodedContent
Limitations
- •URL length limits (~2000 chars safe, ~8000 max in modern browsers)
- •Base85 adds ~25% overhead (vs base64 ~33%)
- •Brotli supported in Safari 18.4+, Firefox 147+; deflate used as fallback
Debugging Tips
- •Check browser console for compression errors
- •Test with content containing special characters
- •Verify URL doesn't exceed limits
- •Use DevTools Network tab to check actual URL
- •For encrypted content: ensure Web Crypto API is available