What is a WordPress permalink?
A WordPress permalink is the public address of a post or page. WordPress builds it from the structure you choose and the slug on that item. /?p=123 is a permalink. /hosting-invoice/ is a permalink. Only the second one says what the page is about.
People paste that address into mail, chat, and search results. After another site links to it, that exact URL is the one you keep, or you redirect it. The structure is the pattern for every new post, not a one-off link.
Which structure should you pick?
Post name is the best WordPress permalink structure for a blog, a business site, or a shop. In Settings, then Permalinks, it is the Post name choice. The path is the slug and nothing else.
| Structure | Path | When to use it |
|---|---|---|
| Plain | /?p=123 | Never on a public site. |
| Day and name | /2026/10/29/post-name/ | A news site where the date is the story. |
| Month and name | /2026/10/post-name/ | The same, if the day is noise. |
| Numeric | /archives/123 | Almost never. The id is not the topic. |
| Post name | /post-name/ | A blog, business site, or shop. |
| Custom | /%category%/%postname%/ | A large archive with short category names. |
Plain leaves a query string that does not name the page. Day and name, and Month and name, print the publish date in the path, so a later update still looks old. Numeric hides the topic behind an id. A custom structure is Post name plus extra tags, which helps only when those tags stay short.
Do not stick .html on the end. It does not change rankings, and removing it later is a redirect for every post.

When do a date or a category belong in the URL?
Put a date in the structure only on a news site where the day is part of the story. A guide you will edit next year should not carry /2026/10/ in the path.
Add /%category%/ only when the category name is short and each post has one category. WordPress puts the primary category in the URL. Change that category and the address changes, so you then need a 301. On a shop, the product slug is its own setting. Keep posts on Post name unless the catalogue truly needs the category in front.
How do you set Post name before you publish?
Do this before the first post is public. You are finished when a draft link ends in the slug you typed.
- In wp-admin, open Settings, then Permalinks.
- Select Post name. The sample line should show /sample-post/, not a date and not ?p=.
- Click Save Changes. The notice says the structure was saved. On Apache or LiteSpeed, WordPress also writes the rewrite block in .htaccess when that file can be written.
- Open a post and edit the slug under the title. Use three to six words with hyphens, not underscores. Publish, then open the URL in a private window. It should be the slug you typed.
How do you change permalinks on a live site without 404s?
Changing the structure changes every post URL. Old links, including ones Google already has, return 404 until a redirect sends them to the new path.
List the live URLs from the sitemap or from Search Console before you switch. After you switch, each old URL needs a 301 to the new one. A 302 does not say the move is permanent.
Click Save Changes even if the new option was already selected. That save rewrites the WordPress permalinks in .htaccess. The block sits between # BEGIN WordPress and # END WordPress and sends requests to index.php.
If the file cannot be written, the Permalinks screen prints the rules. Paste them into .htaccess, or make the file writable, then save again. On cPanel hosting, the file is in the site root in File Manager.
Nginx does not read .htaccess. The server block needs a try_files rule that falls through to index.php. Saving Permalinks will not clear an Nginx 404 by itself.
If a cache stored the 404, purge it, including a full LiteSpeed purge. Request an old URL. You want a 301, then a 200 on the new address. Check ten posts, not one.
Addresses typed inside post content do not move when the structure changes. Search and replace those URLs in the database only after a backup, and only for links that were written out in full.
A site still on Plain, with posts already live, should still move to Post name and add the 301 map in the same change. On a new WordPress hosting account, pick Post name before the first article is public so this map never starts.
How should the slug be written?
The structure is the pattern. The slug is the words inside it. Edit the slug before you publish. Otherwise WordPress copies the title, keeps small words from the title, and cuts a long title short.
Use hyphens between words. A slug such as best-wordpress-permalink-structure is readable. Underscores are harder to read, and they are a weaker word gap. Skip symbols. Three to six words is enough. The main phrase can sit anywhere in the slug. It does not have to be first.
For a Hindi title, a romanized slug stays readable when someone copies the link. A Devanagari slug is valid, and it can be indexed, but the copied form becomes a long percent-encoded string. Use one script across the site. Mixing them makes the archive harder to scan.
Leave the category base and the tag base as /category/ and /tag/ unless you are ready to redirect every archive you change. Match the trailing slash WordPress already uses. Do not treat /post-name and /post-name/ as two pages.
- Hyphens between words, not underscores or symbols.
- Three to six words, edited before you publish.
- One script for every slug, romanized or Devanagari.
- Leave /category/ and /tag/ alone unless each changed archive gets a 301.
Frequently Asked Questions
Which permalink structure is best for SEO?
Post name, written /%postname%/. The public URL ends in the slug. Plain, numeric, and date structures are a worse fit for a normal site.
Should I use post name or date-based permalinks?
Use Post name on a normal site. Use a date structure only if the site is a news diary and the date is part of the story. On a post you will update, the date makes the URL look old.
Should permalinks include the category?
Add /%category%/ only when the names are short and each post has one category. Renaming the primary category changes the URL, so you then add a 301.
How do I change permalinks without breaking links?
Set the new structure, click Save Changes so .htaccess is rewritten, and add a 301 from each old URL to the new one. An old URL should answer 301, then the new URL should answer 200.
Why do permalinks return 404 after changing?
The rewrite rules were not written. Save Permalinks again. If .htaccess is not writable, paste the rules WordPress shows, or ask the host to allow the write. Purge any cache that stored the 404.
What is the best permalink structure for a Hindi blog?
Still Post name. Use a romanized slug so the copied link stays readable. A Devanagari slug works, but the copied form is percent-encoded. Pick one style for the whole site.

