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

    0.0.4 • Public • Published

    npm version


    Every time PayPal sends me an email, they start off by addressing me in the following way:

    Hi Gerard O'neill,

    Obviously, this is not how I type my name. My last name is spelled O'Neill with a capital N. However, PayPal doesn't trust me to spell my own name correctly, so it runs a rudimentary capitalization function on my name, which results in it being spelled incorrectly.

    This is why I made smart-capitalize.


    It's a simple library with two functions:

    • capitalize()
    • capitalizeAll()

    capitalize is meant to be used for only a single word, while capitalizeAll is for use with multiple words, such as with a name or a sentence/title.

    The internal logic isn't super simple, but in practice, these functions will capitalize strings where there doesn't already exist an uppercase letter. Some examples:

    capitalize('hello') === 'Hello' // capitalized
    capitalize('this is a sentence.') === 'This is a sentence.' // capitalized first word only
    capitalize("O'Neill") === "O'Neill" // no change
    capitalizeAll('hello, how are you?') === 'Hello, How Are You?' // all words capitalized
    capitalizeAll("that guy looks like leonardo da vinci lol") === "That Guy Looks Like Leonardo Da Vinci Lol" // all words capitalized, though technically still not correct
    capitalizeAll("my name is Gerard O'Neill") === "my name is Gerard O'Neill" // no change


    Using yarn:

    yarn add smart-capitalize

    Using npm:

    npm i -S smart-capitalize


    import { capitalize, capitalizeAll } from 'smart-capitalize'
    console.log(capitalize('this is cool')) // 'This is cool'
    console.log(capitalizeAll('this is cool too')) // 'This Is Cool Too'


    The functions also do their best to work with non-English/non-Latin alphabets. Some sacrifices were made because of JavaScript's lack of Unicode property escapes, but it should work fairly well.


    It's worth stating that these are not perfect functions. It's impossible to know what should be capitalized and what shouldn't be, algorithmically-speaking. I would prefer that you never try to capitalize anything like somebody's name, but if you absolutely must, then this will give you something fairly sane for people who couldn't bothered to use the Shift key while leaving the rest of our names alone.


    npm i smart-capitalize

    DownloadsWeekly Downloads






    Unpacked Size

    8.59 kB

    Total Files


    Last publish


    • grardb