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

@v0idd0/slugmint

v1.0.1

Published

slugmint — URL slug generator with proper transliteration for 40+ scripts (Russian, Greek, Arabic, Hebrew, Chinese pinyin, Japanese romaji, Korean romanization, Hindi, Thai). Free forever from vøiddo.

Readme

slugmint

npm version npm downloads License: MIT Node ≥14

Generate clean URL slugs from any title — i18n aware. ~4KB minified, zero deps.

$ slugmint "Привет мир — 2026!"
privet-mir-2026

$ slugmint "Hello, World!"
hello-world

$ slugmint "Café crème"
cafe-creme

Why slugmint

You're building a CMS. Editors paste article titles in 12 languages. Your URL bar can only really handle ASCII. The popular slugify package handles this, but ships 40 KB of code and a bunch of features you'll never use (custom replace tables you won't maintain, locale-aware accent options that drift from real-world expectations). slugmint is the small, opinionated version: drop in 4 KB, get sensible URL slugs across the most-typed scripts.

Install

npm install -g @v0idd0/slugmint

Usage

# Basic
slugmint "Some Article Title"

# Truncate
slugmint --max 50 "A really long title that goes on forever and ever"

# Custom separator
slugmint --sep _ "underscore separated"

# Preserve case (rare, but supported)
slugmint --keep-case "PascalCase"

What it transliterates

  • Latin — diacritic stripping (café → cafe, naïve → naive)
  • Cyrillic (Russian + Ukrainian) — Привет → privet
  • GreekΚαλημέρα → kalimera
  • Hebrewשלום → shlvm
  • Arabicمرحبا → mrhba
  • Germanß → ss

CJK characters (Chinese, Japanese, Korean) aren't transliterated — they're better handled with URL encoding than slugs. Non-latin characters that aren't in any table get stripped.

Compared to alternatives

| package | size (min) | i18n scripts | options surface | API style | |---|---|---|---|---| | slugmint | ~4 KB | 6 (Latin, Cyrillic, Greek, Hebrew, Arabic, German ß) | 4 options | function call | | slugify | ~40 KB | many via tables | 12+ options | function call | | limax | ~150 KB | many via dicts | conversion-style | conversion | | @sindresorhus/slugify | ~10 KB | Latin only | many | function call |

If you need full Unicode normalization with editor-extensible replacement tables, slugify or limax are the right answer. For "give me a clean URL slug from a real title in a real language", slugmint is the smaller, faster, less-configurable answer.

FAQ

Why not transliterate Chinese/Japanese? Because there's no canonical romanization that doesn't surprise readers. Pinyin produces ugly slugs in Hanzi, Hepburn vs. Kunrei produces different romaji. URL-encoded native script (/categories/%E6%96%87%E5%AD%A6/) is what major sites do; slugmint follows that practice rather than mangling.

Hebrew/Arabic transliteration looks terse. Because we strip vowels deliberately — Semitic-script languages encode vowels positionally, and naive transliteration produces bizarre clusters. We optimize for slug uniqueness, not for pronunciation.

Why no Vietnamese / Thai support? They each need their own transliteration table and we haven't tested those rigorously. Open an issue with example-title → expected-slug pairs and we'll add the table.

Is it stable across versions? The transliteration tables are append-only — we never change an existing mapping (would break URLs in production). If we add a Vietnamese table in v2, your existing Cyrillic outputs are unchanged.

Programmatic API

import { slugify } from '@v0idd0/slugmint';

slugify('Привет мир');
// 'privet-mir'

slugify('Hello World', { max: 8 });
// 'hello'

slugify('foo bar baz', { separator: '_' });
// 'foo_bar_baz'

Options

| Option | Default | Description | |---|---|---| | separator | '-' | Character between words | | max | 0 | Max chars (0 = unlimited) | | lowercase | true | Lowercase output | | keepCase | false | Preserve case (overrides lowercase) |

More from the studio

This is one tool out of many — see from-the-studio.md for the full lineup of vøiddo products (other CLI tools, browser extensions, the studio's flagship products and games).

License

MIT.


Built by vøiddo — a small studio shipping AI-flavoured products, free dev tools, Chrome extensions and weird browser games.