---
name: thedaviddias/special-chars
source: https://app.decimal.ai/s/thedaviddias-special-chars@1/SKILL.md
source_sha256: a00c5baa335f
---

# URL Special Characters

Special characters in URL paths cause inconsistent crawling, broken links when shared, and canonicalization failures when different systems encode them differently.

## Quick Reference

- URL paths should contain only unreserved characters: A-Z, a-z, 0-9, `-`, `_`, `.`, `~`
- Spaces must be encoded as `%20` (not `+`, which is query-string syntax)
- Characters like `#`, `?`, `&`, `=` have reserved meaning in URLs and must be percent-encoded in path segments
- Non-ASCII characters (accented letters, CJK) should be percent-encoded in URLs, though modern browsers decode them for display

## Check

Scan all crawled URL paths for characters outside `[A-Za-z0-9\-_./~]`. Flag URLs containing spaces (`%20` or literal), special symbols (`#`, `?`, `&`, `=`, `+` in paths), or unencoded non-ASCII characters. Check if different encodings of the same URL return separate 200 responses.

## Fix

Update the URL generation logic in your CMS or framework to strip or replace special characters. Replace spaces with hyphens. Percent-encode any reserved characters that must appear in paths. Set up redirects from problematic old URLs to clean new slugs.

## Explain

Explain the difference between reserved and unreserved characters in RFC 3986, how browsers and crawlers handle inconsistent percent-encoding, and why special characters in paths create duplicate content risks.

## Code Review

Review metadata generation, rendered HTML, structured data, and response headers related to URL Special Characters. Flag exact routes or templates where search-facing output violates the rule, and describe how to verify the final page output.

---

For full implementation details, code examples, and framework-specific guidance,
see `references/rule.md`.

Rule page: https://frontendchecklist.io/en/rules/seo/special-chars