Need help with normalize-url?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

sindresorhus
478 Stars 68 Forks MIT License 128 Commits 6 Opened issues

Description

Normalize a URL

Services available

!
?

Need anything else?

Contributors list

normalize-url Coverage Status

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'

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
\ 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
\ 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


Get professional support for this package with a Tidelift subscription
Tidelift helps make open source sustainable for maintainers while giving companies
assurances about security, maintenance, and licensing for their dependencies.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.