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

ascii-magic-art

v1.1.0

Published

734 animated ASCII art pieces for web pages, READMEs, wallpapers and terminals: scenes, UI, charts, diagrams, 3D shapes, loaders and more.

Readme

Add one to your project in one prompt

npx ascii-magic-art

Browse all 734 pieces live in your terminal. Arrow keys move between pieces and categories, s changes the look (halftone dots, ASCII, binary, dither and more) and a redraws text and line art too. Press enter and a prompt for that piece, in that look, is copied to your clipboard: paste it into Claude Code, Cursor, Copilot or any coding agent and it adds the piece to your site. Or skip the browsing:

npx ascii-magic-art prompt matrix-rain

Play one in your terminal

npx ascii-magic-art moonlit-sea
npx ascii-magic-art --list
npx ascii-magic-art matrix-rain --seconds=3    # stop on its own, for shell startup
npx ascii-magic-art sleeping-cat --frame       # print one still frame, for a MOTD

Any key stops it. Add --look=dots (or ascii, numbers, binary...) or --chars=" .oO@" to redraw it in other characters. Colour turns off when output is piped or NO_COLOR is set.

Put one on a web page

<script type="module" src="https://www.ascii-magic.com/ascii/ascii.js"></script>

<ascii-art piece="moonlit-sea"></ascii-art>

Attributes:

| attribute | what it does | |-----------|--------------| | piece | the piece name, as in the URL of its page | | size | font size in px (default 12) | | speed | playback speed, 1 is normal | | still | show one frame, no animation | | bg | background colour behind the art | | look | redraw it in another character set: dots, ascii, dense, numbers, binary, letters, blocks, squares, lines, dither | | chars | your own characters instead of a look, e.g. chars=" .oO@" (sorted light to dark for you) | | mono | one colour instead of the piece's palette | | all | with look or chars, redraw text and line work too, not only shading | | contrast| 0 to 100, default 0 | | dot-size| halftone dot size for the dots look, 25 to 120, default 51 | | density | halftone dot spacing, 40 to 250, default 131 (more dots, same size) | | steps | halftone dot sizes: 3, 5, or 0 for smooth |

The element plays only while it is on screen, and holds a still frame for visitors who prefer reduced motion.

Use a piece in your own code

npm install ascii-magic-art

Every piece is one small ES module with no dependencies apart from lib/kit.js. It exports meta and a create() function that returns draw(t), a function from seconds to a frame:

import create, { meta } from "ascii-magic-art/pieces/spinning-torus.js";

const draw = create();
const frame = draw(1.5);            // a string, or { text, color }
console.log(frame.text ?? frame);

A frame with colour has a color layer the same shape as text. Each character in it is a key into meta.palette (a space means the default ink). runtime/player.js turns that into HTML; runtime/canvas.js draws it to a canvas for PNG, GIF and video export.

Looks

Every piece can be redrawn in a different set of characters. Each cell's darkness comes from how much ink its glyph covers and how bright its colour is; the look's characters are sorted by ink and the nearest one is drawn. Shading blocks are redrawn, text and line work stay as they are (pass all: true to redraw everything).

import { restyle, withLook } from "ascii-magic-art/runtime/glyphs.js";

const frame = restyle(draw(1.5), meta.palette, { look: "dots" });
const drawInNumbers = withLook(create(), meta.palette, { look: "numbers" });

Make a piece

import { Grid } from "../lib/kit.js";

export const meta = {
  slug: "my-piece", name: "My Piece", category: "generative",
  note: "One line about it.", tags: ["loop", "minimal"],
  cols: 60, rows: 20, fps: 24,
};

export default function create() {
  const g = new Grid(meta.cols, meta.rows);
  return (t) => {
    g.clear();
    g.text(2, 2, "hello " + Math.floor(t));
    return g.frame();
  };
}

Then check it:

node scripts/validate.mjs my-piece

The validator checks the size of every frame, the character set, that it animates, and that each frame draws in under 12 ms.

Licence

MIT. Use the pieces anywhere, including commercial work. A link back is appreciated, not required. Two photo-based scenes, ocean-sunset and starry-ridge, keep the Unsplash License of their source photos; see NOTICE.

Want your own photo, logo or video as animated ASCII? That is what ASCII Magic does.