WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

HARD NOTE: This question is solely about performance, and NOT search engine optimization. So, please make sure your answers are as such.

W.r.t permalinks, "year" is the most obvious numeric of choice, and nothing can be more specific to a post than a post ID (also a numeric).

  1. Otto has for so long been suggesting the use of a permalink structure that "starts with something easily identifiable, like a number."

    => something like this (since he said at the "start"): http://example.com/2012/post-name/

  2. But from a discussion in WP.SE chat, I've learnt that the WP_Query system parses its request (a post permalink information) "from right to left."

    => something like this should perform better: http://example.com/post-name/121/

    (where, 121 is the post ID)

QUESTION: To me, points (1) and (2) are contradictory. Which one is true? Am I missing something here?

I sure do know that some fixes in WordPress 3.3.X have shown "huge performance gains" for permalink structures independent of a numeric, BUT that does not necessarily mean, there's NO performance loss (even the slightest). So IMO, this question is not completely irrelevant.

share|improve this question
up vote 4 down vote accepted

Answer: as of 3.3 and beyond, a "problem" structure now only adds one single optimized query. I wrote a post about that, in fact.

Bottom line: it's no longer an issue. You're welcome. ;)

share|improve this answer
This one I guess: ottopress.com/2011/… – its_me Jun 2 '12 at 1:25
Can you tell me one more thing — Does WordPress still look for a numeric at the beginning of the permalink? or has this changed in WP 3.3.x? (PS: If what I understood from your post is right, the way WordPress deals with permalinks with a numeric hasn't changed => WordPress still does look for a numeric at the beginning of the permalink.) – its_me Jun 2 '12 at 16:18
WordPress never "looked for a numeric", as such. It has to do with how your rule is. If you start your permalink with "year", then it's looking for a 4 digit number. Regular expressions is a complex subject. – Otto Jun 2 '12 at 20:16

I've been running a highly automated WordPress site with more than 8,500 posts for a year now and my permalink structure of choice is


This means I can recategorize posts without affecting my permalink and never have to worry if I do something behind the scenes the permalink to a post will never become broken (404 error) and no matter how many posts are made there will never be a conflict of permalinks between posts, pages, archives, or tag pages.

share|improve this answer
This doesn't really answer the question, but I did find it interesting – Tim Malone Apr 18 at 22:55

Both points (1) and (2) are actually right and not at all contradictory.

  1. The WordPress Codex once said:

    For performance reasons, it is not a good idea to start your permalink structure with the category, tag, author, or postname fields. The reason is that these are text fields, and using them at the beginning of your permalink structure it takes more time for WordPress to distinguish your Post URLs from Page URLs (which always use the text “page slug” as the URL), and to compensate, WordPress stores a lot of extra information in its database (so much that sites with lots of Pages have experienced difficulties). So, it is best to start your permalink structure with a numeric field, such as the year or post ID.

    +1 as a numeric at the beginning of your permalink structure allows WordPress to quickly distinguish between "posts" and "pages".

  2. WP_Query system parses its request (analysing a post's permalink information) "from right to left." So, the quicker it identifies and associates a permalink with a post, the quicker it shows up the post.

    +1 as the post is retrieved quickly if you use a post ID at the end of the permalink.

As should be clear by now, points (1) and (2) deal with two different performance issues.

So, if my analysis is correct, at least theoretically, the best performing permalink formats should be (best at the top):

  1. obviously, the default permalink structure http://example.com/?p=123

  2. Next best is (most probably) /%year%/%postname%/%post_id%/ which means, your post's permalink looks similar to this: http://example.com/2012/post-name/121/

  3. Next best (especially when you have very few "Pages") is /%postname%/%post_id%/ which means, your post's permalink looks similar to this: http://example.com/post-name/121/

  4. Last fine choice would be /%year%/%postname%/ which means, your post's permalink looks similar to this: http://example.com/2012/post-name/

  5. Permalink structures like /%year%/%monthnum%/%day%/%postname%/ only make sense when your website/blog's posts are time dependent; say for example, a news site. Just my humble opinion.

Oh, and I should say that you are going to see very very "negligible" performance improvements from (1) to at least (4) -- so, you need not actually worry about the order. But since I do, I've ordered them ;)

UPDATE: This post on some other blog confirms the analysis.

Also, the improvements that came in WordPress 3.3.X only affect your blog's performance if you are using text-based permalinks (i.e. no numerics in permalinks). If you already have a numeric or two in your permalinks, you are ALREADY GOOD! :)

My choice... if it matters!

  • /%year%/%postname%/ is my permalink structure of choice -- short, precisely informative, and sweet.

  • And you know what, if it really matters, you can always simply change your permalink structure to /%year%/%postname%/%post_id%/ — your links are still in tact!

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.