Home

Default Permalink is a WordPress plugin that prevents multi-byte (URL-encoded) slugs in the default permalink. Auto-generated slugs like %e3%81%82... are replaced with a readable slug such as post-123. A multi-byte slug is kept as-is when the user has explicitly specified it.

Download on WordPress.org

Usage

After installing, just check “Enable” under “Settings” → “Default Permalink” and multi-byte slugs are replaced automatically on save. Choose from three slug formats — post type and ID, post date and ID, or a random string — and select which post types are targeted. A bulk conversion tool for existing posts (old URLs get a 301 redirect) and WP-CLI commands are also included. Optionally, category and tag slugs can be replaced too, with slugs such as category-12. The status and the number of posts left to convert are also shown under “Tools” → “Site Health”.

Read the usage guide →

Documentation (for developers)

Technical details for developers: the exact conditions of slug replacement hooked into the wp_unique_post_slug filter, the list of options, how to customize the generated slug with the default_permalink_slug / default_permalink_term_slug filters, and the WP-CLI commands.

Read the documentation →

FAQ

Answers to common questions: “I enabled it but slugs are not replaced”, “What happens to a slug I specified myself?”, “Do old URLs break after converting?” and more.

Read the FAQ →

Changelog

The latest version is 1.10.2. Versions 1.9.2–1.10.2 added a Site Health check and the WP-CLI options --post_type / --limit / --after, and fixed the uninstall on multisite, the date used by the “post date and ID” format, and the bulk conversion publishing scheduled posts whose time had passed. Versions 1.6.0–1.9.1 added support for posts created directly (REST API, WP-CLI, etc.), category and tag slug replacement, an instant notice in the block editor, a preview and resumable runs for the bulk conversion, and WP-CLI commands, and fixed bugs such as explicitly entered slugs being replaced. See the changelog for the details and downloads of every release.

Read the changelog →

Requirements

WordPress4.7 or later (tested up to 7.1)
PHP7.4 or later
LicenseGPLv2 or later
Copied title and URL