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

@lacspace/logo

v1.3.0

Published

Generate real logos and brand marks without AI. Give a name + a few keywords and get on-brand SVG logos — monograms, icon lockups, geometric marks and emblems — from a curated JSON brain of palettes, fonts, icons and shapes. Deterministic, seeded variatio

Readme

@lacspace/logo

Generate real logos from a name + a few keywords — no AI.

npm version install size minzipped types license

Give a brand name and a few keywords and get an on-brand SVG logo — a monogram, an icon lockup, a geometric mark or an emblem. Choices (palette, type, icon, shape, layout) come deterministically from a curated JSON brain, so the same brief always yields the same logo, and a changed seed spins endless variations. Editable, infinitely scalable, and rasterizable to PNG/JPEG/WebP via @lacspace/image.

Not AI art — designed brand assets. Instant, free, reproducible, keyless, zero-dependency, isomorphic.

Install

npm i @lacspace/logo

One brief → a logo

import { generateLogo } from "@lacspace/logo";

const { svg, palette, icon } = generateLogo({
  name: "Kopi House",
  keywords: "coffee, cozy, artisanal, warm",
});
// svg → a complete <svg> string (coffee ☕ mark, warm amber palette, emblem seal)

Pass a longer brief and it extracts the keywords for you:

generateLogo({
  name: "Ledgerly",
  brief: "A trustworthy fintech that automates bookkeeping for small businesses.",
});
// → finance mood, deep-indigo palette, wallet icon, clean corporate type

12 concepts to choose from (the slot-machine)

import { generateLogoSet } from "@lacspace/logo";

const concepts = generateLogoSet({ name: "Orbit Labs", keywords: "ai, network, fast" }, 12);
// 12 reproducible variations — different engines, palettes, layouts

See why it chose what it did

import { suggest } from "@lacspace/logo";

suggest({ name: "Ledgerly", keywords: "fintech trust money" });
// { mood: "finance", paletteId: "deep-indigo", fontId: "...", iconKey: "wallet",
//   notes: ["mood \"Finance\" from keywords", "palette Deep Indigo", ...] }

🆕 Brand-in-a-box (v1.1.0)

One brief → a whole consistent identity: logo lockups, a favicon/app-icon set, the palette and CSS variables — all sharing the same palette, type and icon.

import { generateBrandKit } from "@lacspace/logo";

const kit = generateBrandKit({ name: "Orbit Labs", keywords: "ai, network, fast" });
kit.primary.svg;    // horizontal lockup     kit.stacked.svg;  // icon over wordmark
kit.mark.svg;       // app icon / avatar     kit.wordmark.svg; // wordmark only
kit.mono.svg;       // single-colour stamp   kit.favicon;      // { svg, sizes[], links, manifestIcons }
kit.colors;         // [{ role, hex }, …]     kit.css;          // :root { --brand-primary: … }

Just need a favicon set?

import { generateFavicon } from "@lacspace/logo";
const fav = generateFavicon({ name: "Nova", keywords: "tech" });
// fav.svg (scalable) + fav.sizes (16…512) + fav.links (<link> tags) + fav.manifestIcons

v1.1.0 also grows the JSON brain to 67 icons, 36 palettes, 18 type pairings and new industry moods (education, legal, real-estate, kids, fitness…).

🆕 Animated logo reveal (v1.2.0)

Turn any logo into a self-contained animated SVG that crafts itself on load (wipe + scale-in + a light shimmer) — pure CSS, no JS, works in any browser, README or site, and respects prefers-reduced-motion.

import { animateLogo } from "@lacspace/logo";

const svg = animateLogo({ name: "Orbit Labs", keywords: "ai, network" }, { loop: true });
// drop `svg` straight into a page or save as .svg — it animates itself

v1.2.0 also grows the brain to 79 icons (insurance, dental, eyewear, audio, construction, HR, jewelry, marine, energy…).

The five engines

| Engine | What you get | | --- | --- | | monogram | Initials on a gradient badge (circle · squircle · hexagon · shield · seal) | | wordmark | A keyword-matched icon locked up with the name | | abstract | A seeded geometric mark — orbit/network, venn, arcs, burst, waves, dot-grid | | emblem | A seal/ring with an icon and the name curved along the bottom | | lettermark | One big display letter filled with the brand gradient |

Let the brief pick the engine, or force one: generateLogo({ name, engine: "emblem" }).

Everything is overridable

generateLogo({
  name: "Aurelia",
  keywords: "luxury, beauty",
  palette: "royal-gold",   // force a palette id
  font: "playfair-luxe",   // force a type pairing
  icon: "crown",           // force an icon
  shape: "seal",           // circle | rounded | squircle | hexagon | shield | seal | diamond | blob | none
  layout: "emblem",        // icon-left | icon-top | stacked | wordmark-only | emblem | mark-only
  engine: "emblem",
  background: "surface",   // transparent | solid | surface | gradient
  size: 512,
  seed: 7,                  // deterministic variation
});

Export to raster (PNG / JPEG / WebP) with a size budget

Logos are SVG — universal and editable. To rasterize, pair with @lacspace/image:

import { generateLogo } from "@lacspace/logo";
import { rasterizeSvg, fit } from "@lacspace/image";

const { svg } = generateLogo({ name: "Orbit Labs", keywords: "ai, network" });
const surface = await rasterizeSvg(svg, { width: 512, height: 512 });     // browser Canvas / optional sharp in Node
const png = await fit(surface, { format: "png", maxSize: "40kb" });

SVG renders everywhere. Rasterizing text logos in Node needs the optional sharp peer (npm i sharp); in the browser it uses the native Canvas with no extra deps. The geometric/icon marks rasterize anywhere.

The JSON brain (extensible)

The creativity lives in data you can extend: palettes (mood-tagged), fonts (curated Google pairings), icons (keyword-tagged line glyphs), moods (style presets), plus a color/vibe keyword interpreter. They're exported for building your own UI:

import { PALETTES, FONTS, ICONS, MOODS } from "@lacspace/logo";

API

  • generateLogo(brief) → { svg, width, height, engine, palette, font, icon, shape, layout, mood, seed, interpreted }
  • generateLogoSet(brief, count = 12) → LogoResult[]
  • suggest(brief) → the interpretation only (no render)
  • tokenize(brief), initials(name), and the PALETTES / FONTS / ICONS / MOODS data

Contributing 💙

This generator gets smarter the more curated data it has — and the JSON brain is the easiest place to help. Adding a palette, an icon (with keyword tags) or a font pairing is a small, high-impact PR:

  • Palettes → logo/src/data/palettes.json
  • Icons (24-grid line SVG + keywords) → logo/src/data/icons.json
  • Fonts, moods, keyword mappings → the other files in logo/src/data/

See CONTRIBUTING.md. New contributors welcome — open an issue or PR.

License

Lacspace Free Licence v1.0 — free, permissive, Lacspace-branded.