Wondering what’s next for npm?Check out our public roadmap! »

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

1.0.2 • Public • Published

Node 10.x Node 12.x Node 14.x

Donate with PayPal button



npm i titleizejs

to install the module in your project.

Capitalisation Rules in Titleize JS

By default Titleize JS:

  • Removes all symbols in the provided string, except apostrophes (') *.
  • Makes all words completely lower case and capitalises every first letter
  • Capitalises the all words in hyphenated words
  • Always capitalises the first and last word of the string
  • Does not capitalise the following words (articles, conjunctions, prepositions), unless they are the first or last word of the sentence:
    • a, an, the
    • and, but, or, nor
    • via, to, on, onto, in, into
    • per, for, of, by
    • at, as, yet, so

* Apostrophes are not removed, since they are vital in abbreviations, such as don't, I'm, and you'd.

Not Yet Implemented

Support for the following is planned and wanted, but not yet present:

  • International (non-English) titleisation.


First, require the module

const titleize = require('titleizejs');

Basic syntax of Titleize JS

titleize(string, options);


titleize('hello world'); // result: Hello World


So far, the options parameter is an object with three possible properties. These are:

  • keepUpperCaseWords (Boolean, default: false, optional)
  • keepUpperCaseLetters (Boolean, default: false, optional)
  • ignoreSymbols (String, optional)
  • isSlug (Boolean, optional)


Setting this to true will preserve all present words that are fully capitalised. This can be useful when dealing with abbreviations or acronyms.

titleize('hello WORLD', { keepUpperCaseWords: true }); // result: Hello WORLD


Setting this to true will preserve all present capital letters.

titleize('hello camelCase', { keepUpperCaseLetters: true }); // result: Hello CamelCase


Providing a string to this setting will make sure that the provided symbols are not removed by Titleize JS. This string can contain many different symbols.

titleize('hello world! do you like javascript?', { ignoreSymbols: '!' });
// result: Hello World! Do You Like Javascript
titleize('hello world! do you like javascript?', { ignoreSymbols: '?' });
// result: Hello World Do You Like Javascript?
titleize('hello world! do you like javascript?', { ignoreSymbols: '!?' });
// result: Hello World! Do You Like Javascript?


If the string passed to titleize is a slug, the default behaviour of Titleize JS is to capitalise all words and preserve the hyphens, as if it were a hyphenated word. To make sure that the slug gets converted properly, pass the isSlug setting in the options object. E.g.

// Default behaviour
titleize('i-am-a-slug'); // result: I-Am-a-Slug
// Passing { isSlug: true }
titleize('i-am-a-slug', { isSlug: true }); // result: I Am a Slug

Support, bug-reports, feature suggestions

If you want to contribute, report a bug, or have a suggestion for a feature, contact me at robin@goudeketting.nl or contact me via Github or Twitter.


npm i titleizejs

DownloadsWeekly Downloads






Unpacked Size

7.95 kB

Total Files


Last publish


  • avatar