Trailing slashes must be consistent across the entire site - either every URL ends with / (like /page/) or none do (/page). Inconsistency creates duplicate content - each URL is a separate page in Google's eyes.
Why this matters
When Google crawls /about/ and /about and both return identical content, it sees two distinct pages with duplicate content. Link equity splits between variants, Google cannot decide which to index, and may pick the wrong one - losing backlinks pointing at the other.
Performance impact: CDN and cache layers (Cloudflare, Varnish) treat each variant as a separate object. You pay for cache twice - once per variant. Cache hit ratio drops because requests cannot consolidate.
Analytics impact: Google Analytics counts the variants as separate pages. Stats split - a page with 100 visits shows as two pages with 50 each, hiding the real picture.
Sharing impact: if one user shared /page on Facebook and another shared /page/, Facebook treats each as a separate URL with separate share counters. Instead of seeing 100 shares, you see two pages with 50 each.
How to detect
Visit the page in a browser with the trailing slash (https://example.com/page/) and without (https://example.com/page). If both load identical content with status 200, you have a problem.
Complementary check: curl -I https://example.com/page from a terminal. A 200 means the unslashed version loads directly. It should return 301 to the slashed version (assuming you chose trailing slash).
Third check: in Google Search Console > Coverage > "Duplicate, submitted URL not selected as canonical" - many URLs in slashed/unslashed pairs is a smoking gun.
Fourth check: run Screaming Frog SEO Spider with "Respect canonical" disabled - it lists every 200 URL, including duplicates.
How to fix
WordPress has handled this automatically since 2.5 (2008) - the Permalinks structure choice decides. With /%postname%/ there is a trailing slash. With /%postname% (no slash), there is not.
Steps:
- Open Settings > Permalinks.
- Confirm the chosen structure matches your preference. WP default is with trailing slash -
/%postname%/. - Save the settings (even without changes). This regenerates rewrite rules in
.htaccess. - Verify with
curl -I https://example.com/some-page(no slash) that you get a 301 to the slashed version.
On nginx there is no .htaccess - add a rewrite rule to your server block:
rewrite ^([^.]*[^/])$ $1/ permanent;If behind Cloudflare, configure a Page Rule that forces trailing slashes at the edge - faster than origin redirects and reduces server load.
Make sure canonical URLs match the chosen structure. With slashed, the canonical must be slashed. Your SEO plugin should handle this automatically.
After the change, resubmit the sitemap in Google Search Console - it takes Google several weeks to fully reflect the change.
Common mistakes
First mistake: changing the structure on a live site without redirects. If the structure was /page and you switched to /page/, every old backlink targets /page and now 404s. WordPress usually creates redirects automatically, but verify.
Second mistake: trailing slash on files. /image.jpg/ is invalid - files with extensions never get a trailing slash. The rule applies only to pages, not files.
Third mistake: trailing slash on query parameters. /?page_id=2/ is invalid. The slash belongs before the ?, never after.
Fourth mistake: forgetting CDN / cache. After the core change, purge CDN cache (Cloudflare, KeyCDN). Otherwise the CDN keeps serving the old version.
Fifth mistake: mixed structure. If some pages use slashes and others do not, Google gets confused. Pick one and apply it everywhere.
Verifying the fix
Run curl -I https://example.com/some-page and curl -I https://example.com/some-page/. One returns 200, the other returns 301 to the first. In Search Console > Coverage, the count under "Duplicate" should drop over 4-6 weeks. In Performance, the clicks and impressions of paired pages should consolidate into higher numbers.
/page when the new structure is /page/), they pass through 301 - slowing load and bleeding a little link equity. Use Better Search Replace to update links in the database directly.