Description
Choosing a new slug for every post, term, or language version is extra URL design work. Slug-Free Permalinks lets you move that work out of the publishing flow by using an item’s ID in the permalink instead.
Select the public post types and taxonomies you want to change, choose a URL format, and keep the rest of your site on its existing permalink structure. The plugin is intentionally focused: it changes URL structure without adding content features or front-end UI.
Why use ID-based permalinks?
- Reduce the number of slug decisions and maintenance steps as your content grows.
- Keep the URL pattern consistent even when titles, translations, or editorial wording change.
- Apply the change selectively instead of switching every post type at once.
You can choose between:
/post/123//post-123/
The plugin only affects the post types and taxonomies you enable in the settings screen.
What you can configure:
- Select individual public post types
- Select individual public taxonomies
- Use each selected type’s registered rewrite slug for the ID-based route
- Choose slash or hyphen based ID permalink format
- Optionally redirect legacy slug URLs to the current ID-based permalink when WordPress can resolve the request
- Preserve Polylang language URLs using the language home URLs Polylang actually exposes
- Flush rewrite rules automatically when settings change
A focused, predictable change
Legacy slug redirects are optional and only run when WordPress can already resolve the request. Slug-Free Permalinks does not guess at every 404, so it avoids turning an ID-based permalink plugin into a site-wide slug lookup system.
The plugin is intended for new sites, structured-content sites, or projects that are still defining a permalink policy.
If your site already has many established slug-based URLs, review existing inbound links, search traffic, social shares, and editorial workflow assumptions before enabling it.
Slug-Free Permalinks is completely free to use. If you find it useful, you can support the project on GitHub Sponsors.
Known limitations:
- The settings screen rejects selected post types or taxonomies with identical registered rewrite slugs.
- Only path prefixes exposed by Polylang language home URLs are registered as prefixed ID routes; arbitrary prefixes are not accepted.
Screenshots

Installation
- In the WordPress admin screen, go to
Plugins > Add New. - Search for
Slug-Free Permalinks. - Click
Install Now, then activate the plugin. - Go to
Settings > Slug-Free Permalinks. - Choose a permalink format.
- Check the post types and taxonomies you want to convert to ID-based permalinks.
- Optionally enable legacy permalink redirects.
- Save changes.
If you prefer manual installation, upload the plugin folder to /wp-content/plugins/ and activate it from the Plugins screen.
FAQ
-
Does this change every post type automatically?
-
No. Only the post types and taxonomies you check in the settings screen are affected.
-
Does it redirect every old slug URL?
-
No. Slug-Free Permalinks avoids aggressive 404 slug guessing.
Redirects only run when WordPress can already resolve the request.This keeps the plugin lightweight and predictable.
-
Why not attempt slug lookups for every 404?
-
Performing slug lookups on every 404 can introduce unnecessary database queries and unpredictable behavior.
The plugin prioritizes performance and compatibility with WordPress routing.
-
Does it support pages?
-
No. Pages are intentionally excluded to avoid conflicts with typical WordPress page permalink structures.
-
Does it support taxonomies too?
-
Yes. Public taxonomies with UI support can be switched to the same ID-based format.
-
The settings screen rejects selected post types or taxonomies with identical registered rewrite slugs, keeping the ID-based routes unambiguous.
-
Does it work with Polylang or language-directory URLs such as `/en/`?
-
Yes. Polylang integration uses the language home URL returned by Polylang instead of accepting arbitrary path prefixes.
For example, when Polylang exposes
/en/as a language path, the plugin registers/en/post/123/and/en/category/45/alongside the base routes. Domain-based or query-based language modes continue to use the URL returned by Polylang without inventing an extra path prefix. -
How can I deactivate the plugin without changing regular post URLs?
-
When regular posts are enabled, the settings screen shows the equivalent WordPress Custom Structure for the current ID URL format. The displayed value follows the site’s current trailing-slash policy.
Copy that value to
Settings > Permalinksbefore deactivating the plugin. Slug-Free Permalinks does not change WordPress permalink settings automatically.Custom post types and taxonomies have their own rewrite settings and need to be checked separately before deactivation.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Slug-Free Permalinks – Simple ID-Based URLs” is open source software. The following people have contributed to this plugin.
Contributors“Slug-Free Permalinks – Simple ID-Based URLs” has been translated into 1 locale. Thank you to the translators for their contributions.
Translate “Slug-Free Permalinks – Simple ID-Based URLs” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.7.0
- Improve target selection and guidance on the settings screen
- Refine Polylang language-path handling for more predictable ID URLs
1.6.0
- Add pre-deactivation guidance for preserving regular post ID URLs
- Reduce rewrite checks and permalink processing overhead
1.5.1
- Update compatibility metadata for WordPress 7.1
- Improve CI and distribution validation
For the complete release history, see the English changelog.