TL;DR: Get production-ready results in 1 HTTP call. No signup, no credit card, no rate limit.
Free Slug Generator API - Convert Text to URL-Friendly Slugs
Creating URL-friendly slugs manually is tedious. You need to convert spaces to hyphens, lowercase text, handle accents (é→e), remove special characters, and avoid duplicates. Libraries exist but vary by language. What if you could generate slugs via REST API that automatically handle Unicode, accents, and naming conflicts?
The Slug Generator API converts any text to clean, SEO-friendly URL slugs. It handles Unicode normalization, accent removal, special character stripping, duplicate detection, and length limits. Perfect for blog post URLs, product slugs, CMS systems, and URL canonicalization.
Why Use This API?
Slug generation matters:
- SEO – Clean, readable URLs rank better
- CMS Systems – Auto-generate slugs from post titles
- E-commerce – Create product URLs from descriptions
- Internationalization – Handle accented characters properly
- Duplicate Prevention – Append numbers to conflicting slugs
Quick Example - cURL
# Generate a slug from a title
curl -X POST "https://slug-generator-api.p.rapidapi.com/generate" \
-H "X-RapidAPI-Key: YOUR_KEY" \
-H "X-RapidAPI-Host: slug-generator-api.p.rapidapi.com" \
-H "Content-Type: application/json" \
-d '{"text": "How to Build APIs with Cloudflare Workers!", "max_length": 50}'
Response:
{
"success": true,
"original_text": "How to Build APIs with Cloudflare Workers!",
"slug": "how-to-build-apis-with-cloudflare-workers",
"length": 40,
"safe_for_url": true,
"suggestions": []
}
Python Example
import requests
url = "https://slug-generator-api.p.rapidapi.com/generate"
headers = {
"X-RapidAPI-Key": "YOUR_API_KEY",
"X-RapidAPI-Host": "slug-generator-api.p.rapidapi.com",
"Content-Type": "application/json"
}
# Generate blog post slugs
blog_titles = [
"Building a SaaS with Next.js & Supabase",
"Why Rust is Better Than C++",
"François' Guide to French Cuisine", # With accent
"Node.js Tips & Tricks!!!",
]
for title in blog_titles:
payload = {"text": title, "max_length": 60}
response = requests.post(url, json=payload, headers=headers)
data = response.json()
post_url = f"https://blog.example.com/{data['slug']}"
print(f"{title[:40]:40s} → {post_url}")
JavaScript / Node.js Example
const axios = require("axios");
const generateSlug = async (text, maxLength = 60) => {
const response = await axios.post(
"https://slug-generator-api.p.rapidapi.com/generate",
{ text, max_length: maxLength },
{
headers: {
"X-RapidAPI-Key": process.env.RAPIDAPI_KEY,
"X-RapidAPI-Host": "slug-generator-api.p.rapidapi.com"
}
}
);
return response.data.slug;
};
// Auto-generate URLs for blog posts
const blogPosts = [
{ title: "Getting Started with GraphQL", content: "..." },
{ title: "Advanced GraphQL Patterns", content: "..." },
{ title: "GraphQL Best Practices", content: "..." }
];
const postsWithUrls = await Promise.all(
blogPosts.map(async (post) => ({
...post,
slug: await generateSlug(post.title),
url: `/blog/${await generateSlug(post.title)}`
}))
);
Features
Text Normalization
- Spaces → hyphens
- Uppercase → lowercase
-
café→cafe(accent removal) -
User@Admin!!!→user-admin(special chars removed)
Smart Truncation
- Respects max length (default: 75 chars)
- Cuts at word boundaries (doesn't split words)
- Example: "This is a really long title..." → "this-is-a-really-long-title" (within limit)
Duplicate Detection
- Suggest
slug-2,slug-3for conflicts - Prevents URL collisions in CMS
Unicode Handling
- Handles accents: é, ñ, ü → e, n, u
- Chinese, Japanese, Cyrillic → transliteration
- Emoji → stripped safely
Real-World Use Cases
1. Blog CMS Slug Generation
Auto-generate clean URLs from post titles.
def create_blog_post(title, content):
slug = generate_slug(title)
post = BlogPost(
title=title,
slug=slug,
content=content,
url=f"/blog/{slug}"
)
post.save()
return post
2. E-commerce Product URLs
Create SEO-friendly product URLs.
# Product catalog
products = [
{"name": "Wireless Noise-Canceling Headphones", "price": 199.99},
{"name": "Sony WH-1000XM4 (Blue)", "price": 349.99}
]
for product in products:
slug = generate_slug(product["name"], max_length=50)
product["url"] = f"/products/{slug}"
3. Category/Tag Canonicalization
Create canonical URLs for filters and tags.
# Convert category names to URL-safe slugs
categories = ["Men's Fashion", "Sports & Outdoors", "Home/Kitchen Items"]
category_urls = {
cat: generate_slug(cat)
for cat in categories
}
4. Multi-language Support
Handle slugs in different languages.
titles = {
"en": "How to Learn Japanese",
"ja": "日本語の学び方",
"fr": "Comment apprendre le japonais"
}
for lang, title in titles.items():
slug = generate_slug(title)
url = f"/{lang}/blog/{slug}"
5. URL Migration & Redirects
Generate old/new slug pairs for redirect setup.
old_title = "Some-Outdated-Article-Title"
new_title = "Updated & Better Article Title"
old_slug = old_title.lower().replace("-", " ") # Original
new_slug = generate_slug(new_title)
redirect(f"/blog/{old_slug}", f"/blog/{new_slug}")
Pricing
| Plan | Cost | Requests/Month | Best For |
|---|---|---|---|
| Free | $0 | 500 | Small blogs, testing |
| Pro | $5.99 | 50,000 | Growing CMS, e-commerce |
| Ultra | $14.99 | 500,000 | Enterprise platforms |
Related APIs
- String Utilities API – Trim, split, normalize strings
- Text Analysis API – Analyze slug-worthy keywords
- Regex Tester API – Validate slug patterns
- Random Data API – Generate test slugs
Get Started Now
Generate slugs free on RapidAPI
No credit card. 500 free requests to generate clean, SEO-friendly slugs.
Using this for your CMS? Share your slug strategy in the comments!
Top comments (0)