normalize-url

> Normalize a URL

Useful when you need to display, store, deduplicate, sort, compare, etc, URLs.

# Install

$ npm install --save normalize-url

# Usage

const normalizeUrl = require('normalize-url');
normalizeUrl('sindresorhus.com');
//=> 'http://sindresorhus.com'
normalizeUrl('HTTP://xn--xample-hva.com:80/?b=bar&a=foo');
//=> 'http://êxample.com/?a=foo&b=bar'

# API

## normalizeUrl(url, [options])

### url

Type: `string`

URL to normalize.

### options

#### normalizeProtocol

Type: `boolean`
Default: `true`

Prepend `http:` to the URL if it's protocol-relative.

normalizeUrl('//sindresorhus.com:80/');
//=> 'http://sindresorhus.com'
normalizeUrl('//sindresorhus.com:80/', {normalizeProtocol: false});
//=> '//sindresorhus.com'

#### normalizeHttps

Type: `boolean`
Default: `false`

Normalize `https:` URLs to `http:`.

normalizeUrl('https://sindresorhus.com:80/');
//=> 'https://sindresorhus.com'
normalizeUrl('https://sindresorhus.com:80/', {normalizeHttps: true});
//=> 'http://sindresorhus.com'

#### stripFragment

Type: `boolean`
Default: `true`

Remove the fragment at the end of the URL.

normalizeUrl('sindresorhus.com/about.html#contact');
//=> 'http://sindresorhus.com/about.html'
normalizeUrl('sindresorhus.com/about.html#contact', {stripFragment: false});
//=> 'http://sindresorhus.com/about.html#contact'

#### stripWWW

Type: `boolean`
Default: `true`

Remove `www.` from the URL.

normalizeUrl('http://www.sindresorhus.com/about.html#contact');
//=> 'http://sindresorhus.com/about.html#contact'
normalizeUrl('http://www.sindresorhus.com/about.html#contact', {stripWWW: false});
//=> 'http://www.sindresorhus.com/about.html#contact'

#### 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.

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<RegExp|string>`
Default: `false`

Remove 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'

# Related

- compare-urls - Compare URLs by first normalizing them

# License

MIT © Sindre Sorhus