normalize-url

by sindresorhus

sindresorhus /normalize-url

Normalize a URL

460 Stars 64 Forks Last release: about 2 months ago (v5.1.0) MIT License 120 Commits 36 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

normalize-url Build Status 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.

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'

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.