A simple library to capitalize only words/strings without existing capital letters

Downloads in past


200.0.45 years ago5 years agoMinified + gzip package size for smart-capitalize in KB


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.