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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@interwebalchemy/ciph3r-text

v1.2.4

Published

A React component for visually encoding and decoding text.

Readme

Ciph3rText

https://github.com/user-attachments/assets/cac34beb-8eeb-4936-852f-ed9778ec4a46

Note: You can find some demo videos of this in action in the examples directory.

A React Component that animates transforming a string of text:

  • encode: gradually encode the text by replacing characters with random ones
  • decode: start with encoded text and decode it by replacing characters and gradually revealing the underlying text
  • transform: convert one string into another by padding it with random characters or removing extra characters while slowly revealing the target text
  • scramble: keep mutating the text by replacing random characters with other random characters

Getting Started

Install the package:

# use npm, bun, yarn, pnpm, etc.
npm install @interwebalchemy/ciph3r-text
bun add @InterwebAlchemy/ciph3r-text

Import the package:

import Ciph3rText from "@interwebalchemy/ciph3r-text";

Render the Component:

<Ciph3rText defaultText="Hello, world!" action="decode" />

Configuration

The <Ciph3rText> component has several props you can use to control how the characters are changed:

| Property | Description | Type | Default | | ----------- | --------------- | -------- | ----------- | | defaultText required | the text to display during server rendering, after decoding, or before encoding or transforming | string | undefined | | action | controls whether the text is encoded, decoded, transformed, or scrambled | "encode" | "decode", "endcode", "transform", scramble | | targetText required if action="transform" | the text to transform into when using action="transform" | string | undefined | | onFinish *not applicable if action="scramble" | callback to execute when the defaultText has been fully decoded, encoded, or transformed | () => {} | undefined | | iterationSpeed | how frequently the logic to change characters executes | number | 120; 150 (transform) | | maxIterations *not applicable to action="scramble" | how many times the logic to change characters can run | number | 36; 54 (transform) | | characters | a limited string of characters that you want to use in the effect | string | view source | | additionalCharacters | an optional string of characters that you want to use in addition to the characters | string | "" |

Usage Tips

  • For a more interesting effect, you may consider breaking your string into chunks of random size and applying varying colors, iterationSpeed, etc., to each chunk.
  • Find some unique characters to use. Maybe get inspired by the Matrix or add some cursed diacritics?
  • You can leverage the onFinish callback to swap defaultText or targetText or change the action to create interesting effects chains.

Examples

  • Interweb.WTF: watch the example WTF Link on the homepage reveal itself
  • Interweb.WTF URL Expander: enter https://bit.ly/prompt-injection-guide into the input and hit Enter and watch the URL transform
  • Interweb.WTF URL Cleaner: enter https://interwebalchemy.com/posts/building-a-chess-tutor?utm_source=interweb.wtf&utm_campaign=docs into the input and hit Enter and watch the URL transform
  • Collabodoro: watch the logo when you start the timer without hosting or joining a collaboration session

Note: The Interweb.WTF examples work with other shortlinks and URLs with tracking parameters in them, these are just example inputs you can use.