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

better3y3

v1.0.0

Published

An advanced version of the 3y3 text encoding system with enhanced obfuscation features

Readme

Better3y3

An advanced version of the 3y3 text encoding system that provides enhanced obfuscation and security features.

Credit

This project is based on the original 3y3 implementation by @ArjixWasTaken. The original concept was created by @yourcompanionAI and can be found at synthetic.garden/3y3.htm.

Features

  • Multiple Unicode Ranges: Uses four different Unicode ranges for better obfuscation
  • Character Rotation: Optional text rotation for additional security
  • Random Salt: Adds random characters to make encoded text harder to detect
  • Checksum Validation: Optional checksum to detect tampering
  • Error Handling: Proper input validation and error messages
  • Cross-Platform: Works in both Node.js and browser environments
  • Type Safety: Input validation and type checking
  • Configurable: Multiple encoding options for different use cases

Installation

npm install better3y3

Or include directly in your HTML:

<script src="better3y3.js"></script>

Usage

Basic Encoding/Decoding

// Basic encoding
const encoded = Better3y3.encode("Hello, World!");
console.log(encoded); // Encoded text with invisible characters

// Basic decoding
const decoded = Better3y3.decode(encoded);
console.log(decoded); // "Hello, World!"

Advanced Options

// Encode with all features enabled
const encoded = Better3y3.encode("Hello, World!", {
    useMultipleRanges: true,  // Use multiple Unicode ranges
    addChecksum: true,        // Add checksum for validation
    addSalt: true,           // Add random salt characters
    rotation: 5              // Rotate text by 5 characters
});

// Decode with validation
const decoded = Better3y3.decode(encoded, {
    validateChecksum: true,  // Validate checksum during decoding
    removeSalt: true,        // Remove salt characters
    rotation: 5             // Rotate back by 5 characters
});

Web Example

<!DOCTYPE html>
<html>
<head>
    <title>Better3y3 Demo</title>
    <script src="better3y3.js"></script>
</head>
<body>
    <textarea id="input" placeholder="Enter text to encode"></textarea>
    <button onclick="encode()">Encode</button>
    <button onclick="decode()">Decode</button>
    <div id="output"></div>

    <script>
        function encode() {
            const input = document.getElementById('input').value;
            const encoded = Better3y3.encode(input, {
                useMultipleRanges: true,
                addChecksum: true,
                addSalt: true,
                rotation: 3
            });
            document.getElementById('output').textContent = encoded;
        }

        function decode() {
            const input = document.getElementById('input').value;
            try {
                const decoded = Better3y3.decode(input, {
                    validateChecksum: true,
                    removeSalt: true,
                    rotation: 3
                });
                document.getElementById('output').textContent = decoded;
            } catch (e) {
                document.getElementById('output').textContent = 'Error: ' + e.message;
            }
        }
    </script>
</body>
</html>

Node.js Example

const Better3y3 = require('better3y3');

// Encode a message
const message = "This is a secret message";
const encoded = Better3y3.encode(message, {
    useMultipleRanges: true,
    addChecksum: true,
    addSalt: true,
    rotation: 4
});

console.log('Encoded:', encoded);

// Decode the message
try {
    const decoded = Better3y3.decode(encoded, {
        validateChecksum: true,
        removeSalt: true,
        rotation: 4
    });
    console.log('Decoded:', decoded);
} catch (e) {
    console.error('Decoding failed:', e.message);
}

Check if Text is Encoded

const isEncoded = Better3y3.isEncoded(someText);
console.log(isEncoded); // true or false

Improvements over Original 3y3

  1. Multiple Unicode Ranges: Uses four different Unicode ranges instead of one, making it harder to detect and decode
  2. Character Rotation: Optional text rotation adds another layer of obfuscation
  3. Random Salt: Adds random characters to make encoded text harder to detect
  4. Checksum Validation: Optional checksum to detect if the encoded text has been tampered with
  5. Better Error Handling: Proper input validation and descriptive error messages
  6. Configurable Options: Multiple encoding options for different use cases
  7. Type Safety: Input validation and type checking to prevent errors
  8. Cross-Platform Support: Works in both Node.js and browser environments
  9. Documentation: Comprehensive JSDoc comments and usage examples

Security Notes

While this encoding system provides enhanced obfuscation, it should not be used for:

  • Storing sensitive information
  • Password storage
  • Cryptographic purposes

It is primarily designed for:

  • Text obfuscation
  • Hiding text in plain sight
  • Basic message encoding
  • Adding an extra layer of security to non-sensitive data

License

MIT License - See LICENSE file for details