Slug Generator - URL-Safe Slugs with Transliteration
Pricing
from $0.32 / 1,000 generated slugs
Slug Generator - URL-Safe Slugs with Transliteration
Bulk URL slugs with real transliteration: diacritics, Cyrillic, Greek, symbol words (& -> and), batch-unique suffixes on collisions, custom separator + maxLength. Up to 200 per run. $0.0004 per slug, unsluggable inputs never charged. Release-tested on the non-ASCII cases naive slugifiers eat.
Pricing
from $0.32 / 1,000 generated slugs
Rating
0.0
(0)
Developer
Broke to Built
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Slug Generator — URL-Safe Slugs with Real Transliteration, in Bulk
Turn titles into clean URL slugs — with actual transliteration, not just stripping: diacritics (Héllo Wörld → hello-world), Cyrillic (Привет мир → privet-mir), Greek, symbol words (& → and, € → euro), and batch-unique suffixes when two titles collide. Up to 200 texts per run, online, by API, or as an agent tool via Apify MCP.
CMS imports, programmatic SEO pages, migrating a catalog, generating filenames — naive slugify functions silently eat non-ASCII titles into empty strings or duplicate URLs. This one is release-tested on exactly those cases.
What you get
- slug — URL-safe, separator-joined, trimmed, deduped within the batch (
hello-world,hello-world-2) - length — for URL-budget checks
- Options:
separator(default-),lowercase(default true),maxLength(cut at a word boundary) - Fail-soft: an input with no sluggable characters (emoji-only, punctuation-only) never fails the run — it returns
{ok: false, error}and is never charged.
Input
{ "texts": ["10 Café Tips & Tricks", "Über uns", "Привет мир"], "separator": "-" }
Or a single string via text.
Output (real run)
[{ "input": "Héllo Wörld — Ærøskøbing & Café №5!", "ok": true, "slug": "hello-world-aeroskobing-and-cafe-no5", "length": 36 },{ "input": "Привет мир", "ok": true, "slug": "privet-mir", "length": 10 },{ "input": "Hello World", "ok": true, "slug": "hello-world", "length": 11 },{ "input": "Hello World", "ok": true, "slug": "hello-world-2", "length": 13 }]
Pricing
$0.0004 per slug generated. No start fee. Unsluggable inputs are never charged. Slugging a 10,000-product catalog costs $4 across runs.
The only direct store incumbent measured (2026-08-07, nrithm/slug-generator) is free but single-input without transliteration per its listing; no paid comparable exists — pricing is cost-plus at the floor of our ladder.
Honest limits
- Transliteration covers Latin diacritics, Greek, Cyrillic, and common symbols. CJK, Arabic, Hebrew and other scripts are not transliterated (no meaningful ASCII mapping exists without a phonetic engine) — such input yields an uncharged
{ok:false}record rather than a garbage slug. - Uniqueness suffixes are per-batch: collisions across separate runs are yours to track (pass existing titles in the same batch to dedupe against them).
maxLengthtrims at a separator boundary, so a very long first word can produce a slug shorter than the cap.
FAQ
How are duplicate titles handled?
Within a run, the second identical slug gets -2, the third -3 — so a batch import never produces colliding URLs.
What happens to &, %, $?
They become words: and, percent, dollar — like the slugs major CMSs produce, keeping meaning instead of dropping it.
Can I use underscores or no separator?
Yes — separator accepts any string, including _; repeated separators are collapsed and trimmed.
Is the German ß handled?
Yes — ß → ss, plus æ → ae, œ → oe, þ → th, and the full Latin diacritic set.
Why did some rows come back ok: false?
Nothing sluggable survived (emoji/punctuation-only, or a script we don't transliterate). Recorded, never charged.
Use from code or AI agents
curl -s "https://api.apify.com/v2/acts/EliAI~slug-generator/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-X POST -H 'Content-Type: application/json' \-d '{"texts": ["My First Blog Post!", "Über die Führung"]}'
Agents: connect Apify MCP and call the EliAI/slug-generator tool.
- Capability: URL-safe slug generation with transliteration + batch dedupe for one or many titles
- Required input:
text(string) ortexts(array); optionalseparator,lowercase,maxLength - Returns: one record per input;
slugis the deliverable - Bounded: 200 texts per run; failures isolate per input
- Side effects: none