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

chess-steg-cli

v1.2.1

Published

Client for chess steganography - Hiding messages in chess games

Readme

Build Status js-standard-style

chess-steg-cli

This is a cli that uses chess-steg, the awesome work by James Stanley

chess-steg is a tool to encode/decode short messages as chess games.

Too unwieldy for large content, but I believe it technically has no limit on the amount of data it can encode as it ignores draw by repetition and the 50 move rule. Perhaps it can break in some situation where a player is left with playing a checkmate as his only legal move?

This game encodes the text "Hello, world!":

  1. e3 b6 2. b3 Bb7 3. Nf3 Bxf3 4. Bd3 e6 5. h4 g6 6. b4 h5 7. gxf3 c5 8. Bb2 a5 9. Rh3 e5 10. c4 Bh6 11. Be2 Ke7 { White resigns. } 0-1

More information in James Stanley's blog post: https://incoherency.co.uk/blog/stories/chess-steg.html

Help

| Option | Description | | ------------------- | ------------------------- | | -v, --version | Output the version number | | -h, --help | Display help | | -s, --steg | Steg string | | -u, --unsteg | Unsteg chess PGN, lichess url or lichess ID | | -o, --open | Open steg PGN in browser | | -w, --without-blunders | (un)steg without blunders (disabled by default) | | -d, --debug | Debug error messages |

Requirements

Install node.js

Installation

Globally

npm i -g chess-steg-cli
# Then use the "chess-steg" to run it
chess-steg

Without installation - npx

npx chess-steg-cli

Steg examples

# Steg
chess-steg -s "hello world"
# Outputs: 1. e3 Nh6 2. d4 Nf5 3. Qd2 Rg8 4. Ne2 c6 5. b3 d6 6. a3 Be6 7. d5 Kd7 8. Qd3 Kc8 9. Qb5 b6 10. Ng1 { Black resigns. } 1-0
# Copies output to clipboard

# Steg and open in browser
chess-steg -o -s "hello world"
# Outputs: 1. e3 Nh6 2. d4 Nf5 3. Qd2 Rg8 4. Ne2 c6 5. b3 d6 6. a3 Be6 7. d5 Kd7 8. Qd3 Kc8 9. Qb5 b6 10. Ng1 { Black resigns. } 1-0
# https://lichess.org/ZKWeECmI
# Copies url to clipboard

# Steg without blunders
chess-steg -w -s "hello world"
# Outputs: 1. Nf3 g6 2. e3 Bh6 3. a3 d6 4. Bb5+ Kf8 5. Ng1 e5 6. f3 c5 7. a4 Qc7 8. Kf2 a6 9. Bc4 Nc6 10. e4 Ke7 11. d3 Qd7 12. Ke1 Bg7 13. f4 Nb8 { White resigns. } 0-1

Unsteg examples

# Unsteg
chess-steg -u "1. e3 Nh6 2. d4 Nf5 3. Qd2 Rg8 4. Ne2 c6 5. b3 d6 6. a3 Be6 7. d5 Kd7 8. Qd3 Kc8 9. Qb5 b6 10. Ng1 { Black resigns. } 1-0"
# Outputs: hello world

# Unsteg and open in browser
chess-steg -o -u "1. e3 Nh6 2. d4 Nf5 3. Qd2 Rg8 4. Ne2 c6 5. b3 d6 6. a3 Be6 7. d5 Kd7 8. Qd3 Kc8 9. Qb5 b6 10. Ng1 { Black resigns. } 1-0"
# Outputs: hello world
# https://lichess.org/ZKWeECmI

# Unsteg without blunders example
chess-steg -w -u "1. Nf3 g6 2. e3 Bh6 3. a3 d6 4. Bb5+ Kf8 5. Ng1 e5 6. f3 c5 7. a4 Qc7 8. Kf2 a6 9. Bc4 Nc6 10. e4 Ke7 11. d3 Qd7 12. Ke1 Bg7 13. f4 Nb8 { White resigns. } 0-1"
# Outputs: hello world

# Unsteg from lichess ID (last part of lichess url)
chess-steg -u ZKWeECmI
# Outputs: hello world

# Unsteg from lichess url
chess-steg -u https://lichess.org/ZKWeECmI
# Outputs: hello world

License

MIT