স্লাগ জেনারেটর
যেকোনো টেক্সটকে পরিষ্কার URL-বান্ধব স্লাগে রূপান্তর করুন
ইনপুট টেক্সট
স্লাগ
URL স্লাগ কী?
URL স্লাগ হলো একটি ওয়েব ঠিকানার সেই অংশ যা একটি নির্দিষ্ট পেজকে মানুষের পাঠযোগ্য আকারে চিহ্নিত করে। https://example.com/blog/my-first-post URL-এ স্লাগটি হলো my-first-post। একটি স্লাগ জেনারেটর একটি পেজের শিরোনাম বা বিবরণকে এমন একটি স্ট্রিংয়ে রূপান্তর করে যাতে শুধুমাত্র ছোট হাতের অক্ষর, সংখ্যা এবং হাইফেন (অথবা অন্য কোনো নির্বাচিত separator) থাকে। এই প্রক্রিয়ায় স্পেস অপসারণ করা হয়, অ্যাকসেন্ট ও diacritics ছেঁটে ফেলা হয়, বিশেষ অক্ষর বাদ দেওয়া হয় এবং whitespace-কে একক separator-এ স্বাভাবিক করা হয়।
স্লাগ তৈরি করা হলো content management system, static site generator, ব্লগ প্ল্যাটফর্ম এবং যেকোনো অ্যাপ্লিকেশনের একটি মানক ধাপ যা ব্যবহারকারীর ইনপুট থেকে URL তৈরি করে। WordPress, Ghost, Hugo, Next.js এবং Django সবগুলোতেই স্লাগ তৈরির যুক্তি অন্তর্ভুক্ত রয়েছে কারণ পাঠযোগ্য URL ব্যবহারযোগ্যতা এবং সার্চ ইঞ্জিন অপ্টিমাইজেশন উভয়ই উন্নত করে। একটি সুগঠিত স্লাগ লিংকে ক্লিক করার আগেই ব্যবহারকারীকে বলে দেয় পেজটিতে কী রয়েছে।
"slug" শব্দটি সংবাদপত্র প্রকাশনা থেকে এসেছে, যেখানে এটি প্রযোজনার সময় একটি গল্প সনাক্ত করতে ব্যবহৃত একটি সংক্ষিপ্ত লেবেলকে বোঝাত। ওয়েব ডেভেলপমেন্টে স্লাগ একই কাজ করে: এটি একটি দীর্ঘ শিরোনাম বা নাম থেকে তৈরি একটি সংক্ষিপ্ত, অনন্য, URL-নিরাপদ পরিচায়ক। যেহেতু স্লাগগুলি প্রোগ্রামাটিক পদ্ধতিতে তৈরি হয়, তাই একটি নির্ভরযোগ্য স্লাগ জেনারেটর প্রতিটি পেজ ও locale জুড়ে সামঞ্জস্য নিশ্চিত করে।
এই স্লাগ জেনারেটর কেন ব্যবহার করবেন?
হাতে করে URL স্লাগ তৈরি করতে গেলে ভুল হওয়ার আশঙ্কা থাকে। কোনো অ্যাকসেন্ট ছেঁটে ফেলতে ভুলে যাওয়া, ডাবল হাইফেন রেখে দেওয়া, বা Unicode ইনপুটের কোনো edge case বাদ পড়ে যাওয়া ভাঙা বা কুৎসিত URL তৈরি করতে পারে। এই টুলটি স্বয়ংক্রিয়ভাবে সেই সমস্যাগুলো সামলায়।
স্লাগ জেনারেটরের ব্যবহারের ক্ষেত্র
স্লাগ তৈরির নিয়ম ও অক্ষর পরিচালনা
স্লাগ তৈরি একটি নির্দিষ্ট ধারায় রূপান্তর ঘটে। প্রতিটি ধাপ বোঝা আপনাকে অপ্রত্যাশিত আউটপুট debug করতে বা নিজের slugify ফাংশন তৈরি করতে সাহায্য করে।
- ১. Unicode Normalization (NFD)সংযুক্ত অক্ষরগুলিকে base character + combining mark-এ বিভক্ত করুন। উদাহরণস্বরূপ, é (U+00E9) হয়ে যায় e + combining acute accent (U+0301)। এটি পরবর্তী ধাপে diacritic অপসারণযোগ্য করে তোলে।
- ২. Diacritic অপসারণUnicode Combining Diacritical Marks block (U+0300–U+036F)-এর সমস্ত অক্ষর অপসারণ করুন। এই ধাপের পরে, café হয়ে যায় cafe এবং Ñ হয়ে যায় N।
- ৩. বিশেষ অক্ষর অপসারণঅক্ষর, সংখ্যা, whitespace বা হাইফেন নয় এমন যেকোনো অক্ষরকে একটি স্পেস দিয়ে প্রতিস্থাপন করুন। এটি punctuation, প্রতীক এবং ASCII সমতুল্য নেই এমন অক্ষরগুলো বাদ দেয়।
- ৪. Whitespace ছাঁটাই ও সংকোচনশুরু ও শেষের whitespace অপসারণ করুন, তারপর পরপর আসা স্পেস, আন্ডারস্কোর বা হাইফেনের সব ধারাকে একটি নির্বাচিত separator-এ সংকুচিত করুন।
- ৫. Case ও Separator প্রয়োগlowercase-এ রূপান্তর করুন (ঐচ্ছিক) এবং নির্বাচিত separator অক্ষর দিয়ে শব্দগুলো যুক্ত করুন: হাইফেন (-), আন্ডারস্কোর (_) বা ডট (.)।
অক্ষর রূপান্তর রেফারেন্স
নিচের সারণীতে দেখানো হয়েছে স্লাগ তৈরির সময় সাধারণ অক্ষরগুলো কীভাবে পরিচালিত হয়:
| ইনপুট | আউটপুট | প্রযোজ্য নিয়ম |
|---|---|---|
| Hello World | hello-world | Lowercase + space → hyphen |
| Café au Lait | cafe-au-lait | NFD normalization strips é → e |
| naïve résumé | naive-resume | Multiple diacritics removed |
| Price: $9.99! | price-9-99 | Symbols ($, !, :) removed |
| too many | too-many | Whitespace trimmed and collapsed |
| one--two___three | one-two-three | Mixed separators collapsed |
| Привет мир | privet-mir | Cyrillic (if transliteration) or removed |
| file_name.txt | file-name-txt | Dots and underscores replaced |
| React & Vue | react-vue | Ampersand removed |
| 2026-03-30 | 2026-03-30 | Digits and hyphens preserved |
কোড উদাহরণ
জনপ্রিয় ভাষা ও framework-এ স্লাগ তৈরি। প্রতিটি উদাহরণ Unicode normalization, diacritic অপসারণ এবং separator সন্নিবেশ সামলায়।
function slugify(text, separator = '-') {
return text
.normalize('NFD') // decompose accented chars
.replace(/[\u0300-\u036f]/g, '') // strip diacritics
.toLowerCase()
.replace(/[^\w\s-]/g, ' ') // drop special chars
.trim()
.replace(/[\s_-]+/g, separator) // collapse whitespace → separator
// slugify('Café au Lait') → "cafe-au-lait"
// slugify('Hello World', '_') → "hello_world"
}
// Node.js alternative using the `slugify` npm package:
// npm install slugify
// const slugify = require('slugify')
// slugify('Hello World', { lower: true, strict: true }) → "hello-world"import re
import unicodedata
def slugify(text: str, separator: str = '-') -> str:
"""Convert text to a URL-safe slug."""
text = unicodedata.normalize('NFD', text)
text = text.encode('ascii', 'ignore').decode('ascii') # strip non-ASCII
text = text.lower()
text = re.sub(r'[^\w\s-]', ' ', text)
text = text.strip()
text = re.sub(r'[\s_-]+', separator, text)
return text
# slugify('Café au Lait') → "cafe-au-lait"
# slugify('Hello World', '_') → "hello_world"
# Alternative: python-slugify (pip install python-slugify)
# from slugify import slugify
# slugify('Café au Lait') → "cafe-au-lait"package main
import (
"regexp"
"strings"
"unicode"
"golang.org/x/text/unicode/norm"
"golang.org/x/text/transform"
"golang.org/x/text/runes"
)
func slugify(text string) string {
// NFD normalize and strip diacritics
t := transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC)
result, _, _ := transform.String(t, text)
result = strings.ToLower(result)
re := regexp.MustCompile(`[^\w\s-]+`)
result = re.ReplaceAllString(result, " ")
result = strings.TrimSpace(result)
re = regexp.MustCompile(`[\s_-]+`)
result = re.ReplaceAllString(result, "-")
return result
}
// slugify("Café au Lait") → "cafe-au-lait"
// slugify("Hello World") → "hello-world"function slugify(string $text, string $separator = '-'): string {
// Transliterate non-ASCII characters
$text = transliterator_transliterate(
'Any-Latin; Latin-ASCII; Lower()', $text
);
// Remove anything that is not a word char, space, or hyphen
$text = preg_replace('/[^\w\s-]/', ' ', $text);
$text = trim($text);
$text = preg_replace('/[\s_-]+/', $separator, $text);
return $text;
}
// slugify('Café au Lait') → "cafe-au-lait"
// slugify('Hello World', '_') → "hello_world"