normalize-url alternatives and similar modules
Based on the "Url" category.
Alternatively, view normalize-url alternatives based on common mentions on social networks and blogs.
-
speakingurl
Generate a slug from a string with transliteration. -
url-pattern
Easier than regex string matching patterns for URLs and other strings. -
humanize-url
Humanize a URL: http://sindresorhus.com → sindresorhus.com. -
embedza
Create HTML snippets/embeds from URLs using info from oEmbed, Open Graph, meta tags. -
Prerender Request Blacklist
Backlist by url file extension, by domain or by regex in prerender
Scout APM - Leading-edge performance monitoring starting at $39/month
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of normalize-url or a related project?
README
normalize-url 
Normalize a URL
Useful when you need to display, store, deduplicate, sort, compare, etc, URLs.
Install
$ npm install normalize-url
If you need to use this in the browser, use version 4: npm i [email protected]
Usage
const normalizeUrl = require('normalize-url');
normalizeUrl('sindresorhus.com');
//=> 'http://sindresorhus.com'
normalizeUrl('//www.sindresorhus.com:80/../baz?b=bar&a=foo');
//=> 'http://sindresorhus.com/baz?a=foo&b=bar'
API
normalizeUrl(url, options?)
url
Type: string
URL to normalize, including data URL.
options
Type: object
defaultProtocol
Type: string
\
Default: http:
normalizeProtocol
Type: boolean
\
Default: true
Prepend defaultProtocol
to the URL if it's protocol-relative.
normalizeUrl('//sindresorhus.com:80/');
//=> 'http://sindresorhus.com'
normalizeUrl('//sindresorhus.com:80/', {normalizeProtocol: false});
//=> '//sindresorhus.com'
forceHttp
Type: boolean
\
Default: false
Normalize https:
to http:
.
normalizeUrl('https://sindresorhus.com:80/');
//=> 'https://sindresorhus.com'
normalizeUrl('https://sindresorhus.com:80/', {forceHttp: true});
//=> 'http://sindresorhus.com'
forceHttps
Type: boolean
\
Default: false
Normalize http:
to https:
.
normalizeUrl('https://sindresorhus.com:80/');
//=> 'https://sindresorhus.com'
normalizeUrl('http://sindresorhus.com:80/', {forceHttps: true});
//=> 'https://sindresorhus.com'
This option can't be used with the forceHttp
option at the same time.
stripAuthentication
Type: boolean
\
Default: true
Strip the authentication part of the URL.
normalizeUrl('user:[email protected]');
//=> 'https://sindresorhus.com'
normalizeUrl('user:[email protected]', {stripAuthentication: false});
//=> 'https://user:[email protected]'
stripHash
Type: boolean
\
Default: false
Strip the hash part of the URL.
normalizeUrl('sindresorhus.com/about.html#contact');
//=> 'http://sindresorhus.com/about.html#contact'
normalizeUrl('sindresorhus.com/about.html#contact', {stripHash: true});
//=> 'http://sindresorhus.com/about.html'
stripProtocol
Type: boolean
\
Default: false
Remove HTTP(S) protocol from the URL: http://sindresorhus.com
→ sindresorhus.com
.
normalizeUrl('https://sindresorhus.com');
//=> 'https://sindresorhus.com'
normalizeUrl('https://sindresorhus.com', {stripProtocol: true});
//=> 'sindresorhus.com'
stripTextFragment
Type: boolean
\
Default: true
Strip the text fragment part of the URL.
Note: The text fragment will always be removed if the stripHash
option is set to true
, as the hash contains the text fragment.
normalizeUrl('http://sindresorhus.com/about.html#:~:text=hello');
//=> 'http://sindresorhus.com/about.html#'
normalizeUrl('http://sindresorhus.com/about.html#section:~:text=hello');
//=> 'http://sindresorhus.com/about.html#section'
normalizeUrl('http://sindresorhus.com/about.html#:~:text=hello', {stripTextFragment: false});
//=> 'http://sindresorhus.com/about.html#:~:text=hello'
normalizeUrl('http://sindresorhus.com/about.html#section:~:text=hello', {stripTextFragment: false});
//=> 'http://sindresorhus.com/about.html#section:~:text=hello'
stripWWW
Type: boolean
\
Default: true
Remove www.
from the URL.
normalizeUrl('http://www.sindresorhus.com');
//=> 'http://sindresorhus.com'
normalizeUrl('http://www.sindresorhus.com', {stripWWW: false});
//=> 'http://www.sindresorhus.com'
removeQueryParameters
Type: Array<RegExp | string>
\
Default: [/^utm_\w+/i]
Remove query parameters that matches any of the provided strings or regexes.
normalizeUrl('www.sindresorhus.com?foo=bar&ref=test_ref', {
removeQueryParameters: ['ref']
});
//=> 'http://sindresorhus.com/?foo=bar'
removeTrailingSlash
Type: boolean
\
Default: true
Remove trailing slash.
Note: Trailing slash is always removed if the URL doesn't have a pathname unless the removeSingleSlash
option is set to false
.
normalizeUrl('http://sindresorhus.com/redirect/');
//=> 'http://sindresorhus.com/redirect'
normalizeUrl('http://sindresorhus.com/redirect/', {removeTrailingSlash: false});
//=> 'http://sindresorhus.com/redirect/'
normalizeUrl('http://sindresorhus.com/', {removeTrailingSlash: false});
//=> 'http://sindresorhus.com'
removeSingleSlash
Type: boolean
\
Default: true
Remove a sole /
pathname in the output. This option is independant of removeTrailingSlash
.
normalizeUrl('https://sindresorhus.com/');
//=> 'https://sindresorhus.com'
normalizeUrl('https://sindresorhus.com/', {removeSingleSlash: false});
//=> 'https://sindresorhus.com/'
removeDirectoryIndex
Type: boolean | Array<RegExp | string>
\
Default: false
Removes the default directory index file from path that matches any of the provided strings or regexes. When true
, the regex /^index\.[a-z]+$/
is used.
normalizeUrl('www.sindresorhus.com/foo/default.php', {
removeDirectoryIndex: [/^default\.[a-z]+$/]
});
//=> 'http://sindresorhus.com/foo'
sortQueryParameters
Type: boolean
\
Default: true
Sorts the query parameters alphabetically by key.
normalizeUrl('www.sindresorhus.com?b=two&a=one&c=three', {
sortQueryParameters: false
});
//=> 'http://sindresorhus.com/?b=two&a=one&c=three'
Related
- compare-urls - Compare URLs by first normalizing them
Get professional support for this package with a Tidelift subscription Tidelift helps make open source sustainable for maintainers while giving companiesassurances about security, maintenance, and licensing for their dependencies.