Slug là phần đuôi dễ đọc của một địa chỉ web — giống như my-first-post trong example.com/blog/my-first-post. Đây là phần mà người dùng có thể đọc trước khi quyết định nhấp vào, và là phần công cụ tìm kiếm đọc như một mô tả ngắn gọn về nội dung trang, vì vậy nó cần được chú trọng hơn một ID cơ sở dữ liệu hay ngày tháng. Trình tạo miễn phí này biến bất kỳ văn bản nào thành slug: dán tiêu đề vào "Văn bản cần chuyển đổi", nhấn "Tạo", kết quả sẽ hiện ra cùng một nút sao chép bên cạnh. Các thiết lập mặc định là những tùy chọn hầu hết các trang web cần — "Chữ thường", dấu gạch ngang giữa các từ, loại bỏ các từ khóa nối phổ biến, chuyển ngữ các chữ cái không phải Latin — nên bạn sẽ có ngay một slug khả dụng chỉ với một cú nhấp chuột, và bạn có thể thay đổi bất kỳ thiết lập nào bằng các công tắc tương ứng.
Mọi thao tác đều diễn ra trên thiết bị của bạn. Trang web tải một engine JavaScript nhỏ và chạy hoàn toàn cục bộ: tiêu đề của bạn không bao giờ bị tải lên, không bị ghi lại và công cụ vẫn tiếp tục hoạt động khi ngắt kết nối mạng. Đó cũng là lý do kết quả cập nhật ngay lập tức khi bạn thay đổi một cài đặt. Thứ tự thực hiện rất đáng để nêu rõ, vì nó giúp bạn đoán trước được đầu ra: một liên kết dán vào sẽ được rút gọn lấy phần cuối trước, sau đó văn bản được chuyển thành chữ thường, xóa các từ khóa dừng, chuyển ngữ các ký tự không phải Latin, rồi xóa số và ký tự đặc biệt nếu bạn yêu cầu, những gì còn lại sẽ được nối bằng ký tự phân cách của bạn, cắt bớt theo độ dài tối đa, và cuối cùng các từ lặp lại sẽ nhận một hậu tố dạng số. "Văn bản cần chuyển đổi" nhận tới 500.000 ký tự cùng lúc, tương đương với vài ngàn tiêu đề bài viết.
Một dòng đầu vào sẽ cho ra một slug. Khi bạn dán cả một danh sách tiêu đề, mỗi dòng sẽ trở thành một slug được đánh số riêng, với tiêu đề gốc hiển thị màu xám ngay phía trên, nhờ vậy trong một đợt gồm năm mươi tiêu đề bạn vẫn biết slug nào thuộc về tiêu đề nào. Bạn không cần sao chép nội dung vào khay nhớ tạm nếu danh sách đã nằm trong tệp: "Tải từ tập tin", nút bên cạnh ô nhập, sẽ mở các tệp văn bản thuần — .txt, .csv, .md, .json và tương tự — rồi thả nội dung vào trường nhập. Trình duyệt của bạn sẽ đọc tệp đó giống hệt như cách nó đọc nội dung bạn gõ và không tải nó lên bất cứ đâu. "Chia dữ liệu đầu vào bằng" quyết định cách cắt danh sách. Mặc định là "Tự động phát hiện": dấu ngắt dòng luôn phân tách các mục, trong khi dấu phẩy chỉ phân tách khi đầu vào là một dòng duy nhất mà các phần của nó trông giống các giá trị độc lập — vì vậy "giá 3,5 triệu đồng" và "Chương 5: kết quả, kết luận" được giữ nguyên chứ không bị vỡ thành nhiều mảnh. "Dòng mới", "Dấu phẩy" và "Khoảng trắng" giúp bạn ép buộc lựa chọn khi đã biết trước định dạng dữ liệu của mình. "Định dạng kết quả" quyết định cách danh sách trả về khi bạn nhận lấy nó — mỗi mục một dòng, "Phân cách bằng khoảng trắng" hay "Phân cách bằng dấu phẩy" — và cả "Sao chép tất cả" lẫn "Lưu vào tệp" đều tuân theo cài đặt này. Tính năng "Lịch sử" giữ lại 10 đợt chuyển đổi gần nhất ngay trên trình duyệt của bạn, vì vậy danh sách bạn vừa làm một giờ trước vẫn còn ở đó.
Văn bản không phải chữ Latin là phần mà phần lớn trình tạo slug làm tương đối đúng, nhưng rất ít công cụ làm chính xác hoàn toàn. Một URL an toàn nhất khi ở dạng ASCII thuần túy, nên các chữ cái tiếng Kirin, Hy Lạp, Ả Rập, tiếng Trung và chữ có dấu của châu Âu phải được chuyển đổi, và câu hỏi thực sự duy nhất là theo quy tắc của ai. Trang này giải quyết bằng hai lớp. Lớp chung bao gồm mọi hệ thống chữ viết: một thư viện chuyển ngữ cung cấp đáp án ASCII hợp lý cho gần như bất kỳ ký tự nào bạn có thể gõ, đó là ý nghĩa của tùy chọn "Tự động (mọi ngôn ngữ)" trong "Chuyển ngữ từ". Lớp riêng biệt là bộ các bảng làm thủ công dành cho các ngôn ngữ mà kết quả chung không giống với cách quốc gia đó thực sự sử dụng; danh sách trong menu "Chuyển ngữ từ" liệt kê những ngôn ngữ đã có bảng tùy chỉnh tính đến hôm nay và số lượng sẽ tăng lên khi công cụ hỗ trợ thêm các ngôn ngữ cần đến nó. Khi bạn chọn một bảng, nó sẽ tải vào lưới có thể chỉnh sửa bên dưới "Quy tắc chuyển ngữ", nơi mọi chữ cái là một trường văn bản bạn có thể thay đổi, và nút "Đặt lại quy tắc về mặc định" giúp khôi phục lại. Bảng tiếng Ukraina tuân theo Nghị quyết số 55 năm 2010 của Hội đồng Bộ trưởng, tiêu chuẩn được in trên hộ chiếu Ukraina, bao gồm những chi tiết rất dễ làm sai: зг trở thành zgh thay vì zh để phân biệt với ж; є, ї, й, ю và я có một dạng ở đầu từ và dạng khác khi nằm giữa từ; và dấu nháy đơn cùng dấu mềm bị loại bỏ mà không bắt đầu từ mới, nên Знам'янка ra kết quả là znamianka chứ không phải znamyanka. Tiếng Đức mặc định theo dạng mở rộng ä → ae, ö → oe, ü → ue mà các địa chỉ Đức thực sự dùng, kèm theo một biến thể ä → a đơn giản hơn nếu bạn muốn.
Tùy chọn "Xóa từ khóa dừng" được bật mặc định. Nó loại bỏ các từ nối ngắn — a, the, and, of, for — làm cho slug dài hơn mà không thêm ý nghĩa nào. Danh sách dưới mục "Từ khóa dừng" hoàn toàn có thể chỉnh sửa và được điền sẵn: một danh sách tiếng Anh cộng thêm một danh sách cho ngôn ngữ của trang bạn đang truy cập, vì thế trang Ukraina biết các từ в, на, та và і, còn trang tiếng Đức biết der, die và das. Bạn có thể thêm từ của riêng mình, xóa những từ muốn giữ lại hoặc tắt hẳn tính năng này, khi đó trường nhập liệu sẽ chuyển sang màu xám thay vì tỏ ra vẫn còn tác dụng. Có hai lưu ý thực tế về tính năng này. Việc loại bỏ từ khóa dừng mang lại lợi ích về sự gọn gàng chứ không phải là một công cụ giúp tăng hạng — bạn sẽ có một địa chỉ ngắn, sạch sẽ hơn, chứ không phải một vị trí tốt hơn. Và nếu mọi từ trong tiêu đề tình cờ đều nằm trong danh sách, kết quả thực tế là không còn từ nào cả, nên công cụ sẽ báo cho bạn biết thay vì đưa bạn một ô trống.
Các công tắc còn lại quyết định hình dạng của slug. "Ký tự phân cách trong slug" chọn ký tự nằm giữa các từ, và mặc định dùng dấu gạch ngang không phải là chuyện sở thích: Google đọc dấu gạch ngang làm dấu phân cách từ và dấu gạch dưới như một ký tự nối, do đó my_first_post được crawler đọc thành một từ dài trong khi my-first-post được đọc thành ba từ. "Dấu gạch dưới (_)" có sẵn dành cho các hệ thống khăng khăng yêu cầu nó. "Chữ thường" được bật vì hầu hết các máy chủ phân biệt chữ hoa chữ thường trên địa chỉ, và chữ hoa chữ thường lẫn lộn là cách dễ nhất dẫn đến việc có hai URL cho cùng một trang. Tùy chọn "Xóa ký tự đặc biệt" sẽ loại bỏ mọi thứ không phải là chữ cái, chữ số, khoảng trắng, dấu gạch ngang hoặc dấu gạch dưới, qua đó giúp chặn các dấu câu, dấu ngoặc kép và biểu tượng cảm xúc lọt vào địa chỉ — biểu tượng cảm xúc được xóa đặc biệt ngay trước khi chuyển ngữ để một biểu tượng tên lửa không biến thành chữ rocket. "Xóa số" được tắt, vì một con số trong tiêu đề thường là một phần của tiêu đề. "Độ dài tối đa" chạy từ 10 đến 200 và mặc định là 80; khi một slug dài hơn giới hạn, engine sẽ cắt ở từ hoàn chỉnh cuối cùng vừa vặn thay vì cắt ngang giữa một từ. Con số bên cạnh mỗi kết quả là độ dài tính bằng ký tự của nó, và nó sẽ chuyển sang màu đỏ khi vượt quá 60 — không phải là giới hạn cứng, mà là điểm mà một slug bắt đầu bị cắt bớt trong kết quả tìm kiếm và trở nên bất tiện khi dán vào tin nhắn.
Hai công tắc nữa tồn tại vì chúng biến một quá trình xử lý hàng loạt thành công việc chỉ với một cú nhấp chuột. "Tạo slug duy nhất" xử lý trường hợp khi hai tiêu đề khác nhau cùng thu gọn về một slug — "10 mẹo hàng đầu" và "10-mẹo hàng đầu" đều trở thành 10-meo-hang-dau — và thêm -2 cho cái thứ hai, -3 cho cái thứ ba, đồng thời rút ngắn phần gốc trước nếu hậu tố đẩy nó vượt qua độ dài tối đa của bạn. Việc có hai trang cùng dùng một địa chỉ là vấn đề giải quyết ngay trên danh sách này sẽ ít tốn kém hơn nhiều so với việc bắt lỗi trong CMS của bạn. Tính năng "Lấy slug từ URL đã dán" hoạt động theo hướng ngược lại: dán một liên kết đầy đủ và công cụ sẽ lấy phần cuối cùng của đường dẫn, loại bỏ chuỗi truy vấn và bất kỳ đuôi .html hay .php nào, đồng thời giải mã percent-encoding, nên một liên kết Wikipedia kết thúc bằng %D0%9B%D1%8C%D0%B2%D1%96%D0%B2 sẽ trở lại thành lviv thay vì một chuỗi chữ số hex. Nó chỉ kích hoạt khi toàn bộ dòng là một liên kết, vì vậy một địa chỉ được trích dẫn bên trong một câu sẽ không bị thay đổi.
Tại sao nên chọn trình tạo slug này?
- Chỉ chạy trên trình duyệt: tiêu đề của bạn không bao giờ tải lên và trang vẫn hoạt động khi không có mạng
- Chuyển đổi hàng loạt từ clipboard hoặc tệp văn bản, với tiêu đề gốc nằm ngay trên mỗi slug
- Các chuẩn chuyển ngữ thực tế cho từng ngôn ngữ, không phải một bảng chung chung cho tất cả
- Tiếng Ukraina theo Nghị quyết số 55 năm 2010 — cách đánh vần dùng trên hộ chiếu
- Mọi quy tắc đều chỉnh sửa được theo từng chữ cái, cùng một nút đặt lại
- Hậu tố -2 và -3 tự động để không có hai slug nào trong cùng một đợt bị trùng lặp
- Dán một liên kết và lấy slug từ đó, với phần percent-encoding đã được giải mã
- Danh sách từ khóa dừng có thể chỉnh sửa và được điền sẵn theo ngôn ngữ của bạn
- Cắt chữ an toàn ở từ hoàn chỉnh, có hiển thị số lượng ký tự bên cạnh mỗi kết quả
- Miễn phí và không giới hạn: không cần đăng ký, không giới hạn dung lượng, không lưu trữ gì trên máy chủ
Slug cần thiết ở bất kỳ nơi nào trang web cần có một địa chỉ dễ đọc. Blog hay trang web tin tức sẽ chuyển đổi mọi tiêu đề bài viết thành slug, và đây chính là trường hợp công cụ này được thiết kế để phục vụ: dán các tiêu đề của cả tuần, nhận lại URL của tuần đó. Cửa hàng trực tuyến cũng làm tương tự đối với tên sản phẩm và danh mục, thường là làm hàng loạt sau mỗi lần nhập dữ liệu, và thường là trong một ngôn ngữ mà bảng chữ cái không thể đặt vừa vào địa chỉ. Tài liệu và kho kiến thức cũng tạo ra các neo (anchor) và tên tệp theo cùng một cách. Xa hơn các địa chỉ web, chuỗi ký tự sạch gọn đó cũng chính là thứ bạn cần cho một tên tệp không bị lỗi trên một hệ điều hành khác, khóa cơ sở dữ liệu để con người có thể đọc trong log, tên nhánh, tên ảnh trong thư viện media, hoặc mã định danh của một mục trong trình tạo trang web tĩnh. Bất cứ nơi nào một tên mà con người đọc được phải tồn tại khi đưa vào một trường do máy đọc, đó là nơi slug thuộc về.
Vài giới hạn cũng đáng để bạn biết trước khi đặt niềm tin vào công cụ. Đây là trình tạo, không phải công cụ xác thực: nó sẽ không kiểm tra xem slug đã được sử dụng trên trang web của bạn hay chưa, vì nó không có ý niệm nào về nội dung trang web của bạn — tính duy nhất mà nó đảm bảo chỉ nằm trong giới hạn danh sách bạn đang xử lý. Các redirect cũng là việc của bạn; việc thay đổi slug của một trang đã xuất bản sẽ làm hỏng địa chỉ cũ của nó, và đó là quyết định cho CMS của bạn chứ không phải của công cụ này. Tùy chọn "Lưu vào tệp" sẽ ghi ra văn bản thuần, không phải CSV hay JSON. Chế độ cắt dòng tự động sẽ đưa ra phán đoán về dấu phẩy đúng trong hầu hết mọi trường hợp nhưng không phải trong tất cả, đó chính là lý do vì sao "Chia dữ liệu đầu vào bằng" cho phép bạn vô hiệu hóa nó. Và chuyển ngữ là một quy ước thay vì là dịch thuật — München biến thành muenchen chứ không phải Munich — vậy nên khi một trang đã có tên gọi phổ biến trong ngôn ngữ đích, tên đó sẽ là một slug tốt hơn bất kỳ dạng chuyển đổi tự động nào từ bản gốc.