Text Slugify (URL)

Alat slugify teks profesional yang menormalkan teks menjadi slug ramah URL, mendukung konversi huruf kecil, pemisah kustom, dan penghapusan kata berhenti bahasa Inggris. Menggunakan normalisasi Unicode untuk menangani karakter dari sebagian besar bahasa, memastikan slug yang dihasilkan mengikuti praktik terbaik SEO. Ideal untuk URL artikel blog, penamaan file, identifikasi basis data, dan skenario lainnya. Diproses sepenuhnya secara lokal untuk melindungi privasi Anda—tidak perlu pendaftaran. Menyediakan panduan penggunaan terperinci dan rekomendasi praktik terbaik untuk membantu Anda menghasilkan slug berkualitas tinggi.

Parameter & Input

Disarankan: gunakan - atau _, panjang 1~3 karakter

Hasil

Mengapa Menggunakan Slugify?

🔍 Optimasi SEO

Kata kunci dalam URL membantu mesin pencari memahami konten halaman dan meningkatkan peringkat. Misalnya, example.com/blog/how-to-learn-javascript lebih efektif daripada example.com/blog/123.

👁️ Keterbacaan & Berbagi

Pengguna dapat langsung memahami konten dari URL. Slug lebih mudah dibagikan di media sosial serta lebih mudah diingat atau diketik secara manual.

💻 Kompatibilitas Sistem

Hindari kesalahan akibat karakter khusus pada nama file atau URL. Memastikan kompatibilitas lintas platform (Windows/Linux/macOS) dan mencegah masalah pengkodean.

🗄️ Ramah Basis Data

Gunakan sebagai pengidentifikasi unik (misalnya, nama pengguna, tag) untuk mengurangi risiko injeksi SQL serta meningkatkan kinerja indeks dan kueri.

Apa itu Slugify?

Slug adalah versi singkat dan terstandarisasi dari teks yang digunakan sebagai URL, nama file, atau identitas. Pemrosesan umum meliputi standardisasi kapitalisasi, penghapusan tanda baca, dan penggabungan kata dengan pemisah.

  • Prioritas ASCII: Hapus aksen dan simbol, hanya pertahankan karakter alfanumerik dan spasi
  • Kompatibel Unicode: Normalkan karakter dari sebagian besar bahasa menggunakan NFKD sebelum diproses
  • Aman untuk URL: Output hanya berisi huruf, angka, dan pemisah—siap digunakan langsung dalam path

Studi Kasus

URL Artikel Blog

Cara Belajar JavaScript?

cara-belajar-javascript

Penamaan File

Dokumen Persyaratan Produk v2.0.docx

dokumen-persyaratan-produk-v2-0.docx

Pengidentifikasi Basis Data

pengguna-zhang-san

pengguna-zhang-san

Pertanyaan yang Sering Diajukan

Q: Bagaimana karakter Mandarin ditangani?

A: Secara default, tanda diakritik dihapus dan huruf pinyin dipertahankan. Teks murni Mandarin mungkin menjadi kosong; disarankan untuk mengonversi ke pinyin secara manual sebelum membuat slug, atau gunakan alat konversi pinyin Mandarin.

Q: Mengapa hasilnya kosong?

A: Masukan Anda mungkin hanya terdiri dari tanda baca, simbol, atau spasi, atau semua kata telah dihapus oleh penyaringan stopword. Coba nonaktifkan opsi stopword atau sesuaikan masukan Anda.

Q: Haruskah saya menggunakan - atau _ sebagai pemisah?

A: Untuk SEO, gunakan - (tanda hubung), karena Google memperlakukannya sebagai spasi; _ (garis bawah) diperlakukan sebagai simbol penggabungan, yang menghambat pemisahan kata. Untuk nama file, keduanya dapat diterima.

Q: Apakah ada batas panjang untuk slug?

A: Tidak ada batas teknis, tetapi disarankan untuk menjaga slug di bawah 50 karakter agar tampilan URL dan SEO lebih baik. Slug yang terlalu panjang mungkin akan dipotong oleh mesin pencari.

Praktik Terbaik

Praktik yang Direkomendasikan

  • ✓ Buat singkat (disarankan < 50 karakter)
  • ✓ Hindari karakter khusus; gunakan hanya huruf, angka, dan pemisah
  • ✓ Gunakan huruf kecil untuk menghindari masalah sensitivitas kapitalisasi
  • ✓ Hapus kata henti untuk meningkatkan kepadatan semantik

Hindari Praktik Berikut

  • ✗ Jangan sertakan informasi sensitif (mis., ID, email, kata sandi)
  • ✗ Jangan gunakan karakter khusus (mis., @#$%^&*)
  • ✗ Jangan pertahankan spasi atau pemisah berurutan
  • ✗ Jangan mengulang kata yang sama

Detail Teknis

Normalisasi Unicode:

Menggunakan dekomposisi NFKD + penghapusan diakritik gabungan (\p{M}), mengubah Café menjadi Cafe. Mendukung sebagian besar karakter berbasis Latin.

Daftar Kata Henti:

Berdasarkan kata-kata umum bahasa Inggris (a/an/the/and/or/of/to/in/on/for/at/by/with); dapat disesuaikan. Kata henti bahasa Mandarin memerlukan penanganan terpisah.

Kompatibilitas Browser:

Memerlukan dukungan ES6+ dan regex Unicode (\p{...}). Didukung di browser modern: Chrome 64+, Firefox 78+, Safari 11.1+.

Cara Menghasilkan Slug Melalui Bahasa Pemrograman?

JavaScript

function slugify(text) {
  return text
    .toLowerCase()
    .normalize("NFKD")
    .replace(/[\u0300-\u036f]/g, "")
    .replace(/[^\w\s-]/g, "")
    .trim()
    .replace(/[\s_-]+/g, "-")
    .replace(/^-+|-+$/g, "");
}

PHP

function slugify($text) {
  $text = mb_strtolower($text);
  $text = iconv("UTF-8", "ASCII//TRANSLIT", $text);
  $text = preg_replace("/[^\w\s-]/", "", $text);
  $text = preg_replace("/[\s_-]+/", "-", $text);
  return trim($text, "-");
}

Python

import re
import unicodedata

def slugify(text):
    text = text.lower()
    text = unicodedata.normalize("NFKD", text)
    text = text.encode("ascii", "ignore").decode("ascii")
    text = re.sub(r"[^\w\s-]", "", text)
    text = re.sub(r"[\s_-]+", "-", text)
    return text.strip("-")

Go

import (
    "regexp"
    "strings"
    "golang.org/x/text/unicode/norm"
)

func Slugify(text string) string {
    text = strings.ToLower(text)
    text = norm.NFKD.String(text)
    re := regexp.MustCompile(`[^\w\s-]`)
    text = re.ReplaceAllString(text, "")
    re = regexp.MustCompile(`[\s_-]+`)
    text = re.ReplaceAllString(text, "-")
    return strings.Trim(text, "-")
}

Ruby

require "unicode"

def slugify(text)
  text = text.downcase
  text = Unicode.nfkd(text).gsub(/[^\x00-\x7F]/, "")
  text = text.gsub(/[^\w\s-]/, "")
  text = text.gsub(/[\s_-]+/, "-")
  text.strip.gsub(/^-+|-+$/, "")
end

Java

import java.text.Normalizer;

public static String slugify(String text) {
    text = text.toLowerCase();
    text = Normalizer.normalize(text, Normalizer.Form.NFKD);
    text = text.replaceAll("[^\\w\\s-]", "");
    text = text.replaceAll("[\\s_-]+", "-");
    return text.replaceAll("^-+|-+$", "");
}