Normalizes URL's to prevent duplicates that point to the same server resource.
var urlCanon = require('url-canon')
urlCanon('https://www.google.com/?b=hey&a=yo&#')
// => returns 'https://www.google.com/?&a=yo&b=hey'
npm install url-canon
- Sorts query parameters into alphabetical order
- Decodes needlessly percent-encoded ASCII
- Removes default ports for http/https
- Lowercases the protocol and hostname
- Removes trailing
#
and?
- Uppercases percent encoded bytes
Tests pass in
- IE8+
- Chrome
- Firefox
- Opera
Does not support Node.js (as it uses an anchor element for parsing).
Internationalised URLs such as https://見.香港/
are converted to punycode form in Chrome but not in Firefox and IE. Conversely punycode such as https://xn--nw2a.xn--j6w193g/
is decoded automatically in Firefox and IE to https://見.香港/
. It is very hard to standardise these URLs and they have not been handled.