npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

zlib-urlsafe

v1.0.2

Published

Zlib compress/decompress with URL-safe Base64, using native browser streams (no external libraries).

Readme

zlib-urlsafe

Zlib compress/decompress + URL-safe Base64 encoding/decoding — all native in modern browsers, no external libs.

This package provides four functions:

  1. decodeBase64UrlSafe(str)
  2. encodeBase64UrlSafe(bytes)
  3. compressZlibBase64UrlSafe(str)
  4. decompressZlibBase64UrlSafe(str)

They rely on CompressionStream and DecompressionStream ('deflate' mode) to handle zlib data.

Installation

npm install @mastashake08/zlib-urlsafe

(You can publish to npm under your chosen package name.)

Usage

import {
  compressZlibBase64UrlSafe,
  decompressZlibBase64UrlSafe
} from '@mastashake08/zlib-urlsafe';

(async () => {
  const original = 'Hello, compress me!';
  
  // Compress
  const compressed = await compressZlibBase64UrlSafe(original);
  console.log('Compressed (URL-safe Base64):', compressed);
  
  // Decompress
  const result = await decompressZlibBase64UrlSafe(compressed);
  console.log('Decompressed result:', result); // "Hello, compress me!"
})();

encodeBase64UrlSafe / decodeBase64UrlSafe

If you only need to handle URL-safe Base64:

import {
  encodeBase64UrlSafe,
  decodeBase64UrlSafe
} from '@mastashake08/zlib-urlsafe';

const dataBytes = new Uint8Array([ 0x48, 0x69 ]); // "Hi"
const b64Url = encodeBase64UrlSafe(dataBytes); 
// e.g. "SGk" (no padding)

const decoded = decodeBase64UrlSafe(b64Url);
// Uint8Array([72, 105]) => "Hi"

Browser Compatibility

  • Requires CompressionStream and DecompressionStream.
  • Supported in Chrome 80+, Edge 79+, Safari 15.4+, Firefox 101+ (behind a flag).
  • Node.js 19+ partially supports it behind experimental flags.
  • Older browsers / Node versions: You need a polyfill or a library like pako.

License

MIT (or your chosen license).