Have ideas to improve npm?Join in the discussion! »

    normalize-url
    TypeScript icon, indicating that this package has built-in type declarations

    6.0.1 • Public • Published

    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 normalize-url@4

    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:password@sindresorhus.com');
    //=> 'https://sindresorhus.com'
    
    normalizeUrl('user:password@sindresorhus.com', {stripAuthentication: false});
    //=> 'https://user:password@sindresorhus.com'
    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.comsindresorhus.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


    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.

    Install

    npm i normalize-url

    DownloadsWeekly Downloads

    26,123,976

    Version

    6.0.1

    License

    MIT

    Unpacked Size

    20.3 kB

    Total Files

    5

    Last publish

    Collaborators

    • avatar
    • avatar