A URL like crawlcove.com/?p=42 works exactly as well as a descriptive one from WordPress's point of view, but it hands a reader and a search engine nothing to go on, and Crawl Cove's wp-default-permalinks check exists to catch sites still running it.
What this finding means
This check only runs on sites Crawl Cove has identified as WordPress, and it fires when the site's /?p=1 URL resolves, which happens only under WordPress's default "Plain" permalink setting. Any other structure (post name, day and name, a custom structure) rewrites that same URL into something descriptive, so the probe finding it live is a direct, current signal, not an inference from theme or plugin behaviour.
A real finding looks like this:
/?p=1 resolves, indicating the site uses default (?p=N) permalinks.
This is a site-level finding: the permalink structure is a single setting that applies to every post and page, so it is reported once for the site rather than once per URL.
Why it matters
A URL is one of the signals a search engine reads for relevance, and /?p=42 carries none: no keyword, no topic, no hint of what the page is about before anyone clicks. A descriptive URL like /wordpress-default-permalinks-seo does the opposite, for a reader deciding whether to click a search result and for a search engine trying to match the page to a query. It also makes every link to the page less useful when pasted or shared, since ?p=42 says nothing on its own where a descriptive slug still communicates the topic out of context.
How to fix it
- In wp-admin, go to Settings > Permalinks.
- Choose "Post name" (
/%postname%/), the structure WordPress itself recommends for SEO. Avoid the "Plain" option, which is the default this check flags. - Save. WordPress rewrites its internal linking immediately, but existing external links and bookmarks still point at the old
/?p=Nform. - Set up redirects from the old URLs to the new ones. Most SEO plugins (Yoast, Rank Math) offer a redirect manager for exactly this; without one, anyone who saved or linked to the old URL gets a 404 instead of a smooth 301.
- Re-crawl the site to confirm
/?p=1no longer resolves and the finding clears.
False positives and edge cases
- This check only ever runs on a site Crawl Cove has identified as WordPress. A non-WordPress site gets zero findings from this check, whatever its own URL structure looks like.
- A site can look like it has descriptive URLs while still resolving
/?p=Nunderneath. Some caching or reverse-proxy setups serve very old cached pages under the old structure even after the permalink setting is changed; the probe is checking whether the raw endpoint still resolves, which is the more reliable of the two. - This is a one-time setting, not a recurring problem. Once the redirects are in place and the setting is changed, this check will not fire again for the same reason; it does not need repeated attention the way a content-freshness check might.
Related reading
For the other two WordPress technical-hygiene checks, both about a WordPress default that is worth changing before it causes a problem, see WordPress Generator Tag Exposing Your Version and Open Uploads Directory Listing on WordPress.
WordPress documentation: Customize permalinks
This is one of the checks in our step-by-step WordPress SEO audit guide.
Frequently asked questions
- Will changing my permalink structure break existing links?
- Yes, unless you also set up redirects. Every existing /?p=N URL, and every link to it from elsewhere on the web, needs a 301 redirect to its new descriptive URL or it will 404. WordPress does not create these for you automatically when you change the setting.
- Why does WordPress default to ?p=N at all?
- It is the structure that needs zero server configuration: WordPress can resolve /?p=42 with plain PHP query parameters, no URL rewriting required. Every other permalink structure depends on your server correctly rewriting URLs (mod_rewrite on Apache, try_files on Nginx), which is why WordPress ships with the option that always works rather than defaulting to the one that always looks good.
- What permalink structure should I actually pick?
- /%postname%/ (Settings > Permalinks > "Post name") is the standard recommendation: it puts your keyword-bearing slug directly in the URL with nothing else in the way. Adding /%category%/ ahead of it is also common but makes URLs longer and breaks if you ever rename or move a category.
- Does this affect existing content differently to new content?
- No, the setting is site-wide: every post and page gets the same structure. There is no way to run default permalinks on old content and descriptive ones on new content within a single WordPress installation.