Are WordPress URLs case sensitive?

Partly. WordPress saves slugs in lowercase and looks them up without regard to case, so /About-Us/ shows the same page as /about-us/ with a 200 status and no redirect. Google treats those as two URLs, but the canonical tag WordPress prints on posts and pages points both at the lowercase one.

What core does with a capitalized URL

When a request such as /Espresso-Guide/ arrives, WordPress lowercases the slug part before querying the database, finds the post saved as espresso-guide, and serves it. Its canonical redirect code then checks whether the address needs correcting. That check fixes the host (www or not), stray index.php, doubled slashes and the trailing slash. It does not compare the letter case of the path, so the mixed-case address is answered directly.

Three parts of a WordPress URL behave differently:

PartExampleCase handling
Post, page, category, tag and author slugs/Espresso-Guide/Matched in any case, served without redirect
Fixed words in the structure/Category/coffee/Matched exactly; the wrong case usually ends in a 404
Files in uploads/wp-content/uploads/2026/05/Menu.PDFHandled by the web server, case sensitive on Linux hosts
Host nameExample.COMNever case sensitive, by the rules of DNS

The second row surprises people. Rewrite rules compare words like category, tag, author, page and feed exactly as written, so capitalising them breaks the match even though capitalising the slug after them does not.

Is the uppercase version duplicate content?

In principle yes: Google's documentation states that URL paths are case sensitive, so /About-Us/ and /about-us/ are separate URLs that happen to return the same page. In practice WordPress defuses it on single posts and pages. The canonical link in the head is built from the stored permalink, not from the address that was requested:

html
<link rel="canonical" href="https://example.com/about-us/" />

Whichever casing a crawler arrives on, it is told the lowercase address is the one to index. You might see the capitalized variant in Search Console under "Alternate page with proper canonical tag", which is that system working, as explained in our guide to that status.

Archives are the weak spot. Core prints a canonical tag only on singular content, so a category reached as /category/Coffee/ has none unless an SEO plugin supplies it. Hydrogen SEO outputs canonical URLs for archives as well as posts; see canonical URLs.

Where uppercase URLs come from

Search engines do not invent capitalized addresses. They find them in links:

  • internal links typed by hand in menus, buttons or content (/Contact);
  • links from other sites, email signatures and printed material;
  • campaign URLs built in a spreadsheet;
  • imports from an older system whose addresses were mixed case.

The first group is yours to fix. Search your content and menus for capitalized internal links and correct them so every link uses the address in the canonical tag. External ones you cannot edit will keep working, which is the benefit of case-insensitive matching.

Should you force lowercase with a redirect?

It is optional. With correct canonical tags the duplicates are already consolidated, and for most sites that is enough.

A site-wide lowercase redirect is worth adding when Search Console shows many case variants being crawled, or when analytics splits one page across several rows. If you add one, do it at the server and exclude what must keep its case:

  • /wp-content/ and /wp-includes/, since file names there can legitimately contain capitals;
  • query strings, where values such as tokens and campaign names are case sensitive;
  • /wp-admin/ and /wp-json/.

Test a handful of image and PDF links afterwards. A redirect rule that lowercases Menu.PDF on a Linux server sends visitors to a file that does not exist.

For new media, the simplest policy is lowercase file names before upload. WordPress cleans spaces and odd characters from file names but keeps capital letters.

Common questions

Does WordPress redirect uppercase URLs to lowercase?

Not for letter case. Core serves a post or page under any capitalization of its slug and relies on the canonical tag to name the preferred address.

Are image URLs case sensitive in WordPress?

On most hosting, yes. Uploaded files are served by the web server from a case-sensitive file system, so the capitalization in the link must match the file name.

Can I use capital letters in a slug on purpose?

No. WordPress lowercases every slug when it is saved, so the stored address is always lowercase whatever you type.