Allow accessing object with snake_case property names using camelCase names

Usage no npm install needed!

<script type="module">
  import camelHumps from '';


npm Build Status Coverage Status Known Vulnerabilities style NPM


Allow accessing object with snake_case property names using camelCase property names

Why do I need it?

One example is whenever you'd like to seamlessly destructure or access an API request or response that are described in snake_case, by using camelCase for having a consistent code

Why choosing camelHumps over other similar packages?

Basically camelHumps utilizes NodeJS Proxy class and doesn't deep-clone the original object as other similar packages do.

Which results in

:white_check_mark: No overhead of deep-cloning objects

:white_check_mark: Minimal effect on memory footprint

:white_check_mark: Applied only to fields that have being accessed

:white_check_mark: Supports both snake_case and kebab-case

:white_check_mark: Can mutate the original object :scream:


npm i camel-humps


camelHumps(obj, options)


  • kebab (false) - given object properties are in kebeb-case


const camelHumps = require('camelHumps');
const snakeObj = camelHumps(obj); // for snake_case
const kebabObj = camelHumps(obj, {kebeb: true}); // for kebab-case


const body = fetchData('/313');;
// result: { 
//     customer_details: { first_name: 'Jon', last_name: 'Stark' },
//     birth_place: 'Tower of Joy' }

const camelBody = camelHumps(body);
const { characterDetails } = camelBody;;
// result: { first_name: 'Jon', last_name: 'Stark' }

const { firstName, lastName } = characterDetails;{ firstName, lastName });
// result: { first_name: 'Jon', last_name: 'Stark' }

camelBody.characterDetails.firstName = 'Arya';
camelBody.birthPlace = 'Winterfel';;
// result: {
//   characterDetails: { first_name: 'Arya', last_name: 'Stark' },
//   birthPlace: 'Winterfel' }