>_

camelCase to snake_case

camelCase is common for JavaScript / TypeScript / Java variables and JSON keys in many web APIs; snake_case is used for Python variables, Ruby, database columns and many REST APIs. Moving data between languages, databases and APIs often means converting between the two.

Examples

camelCase snake_case
userId user_id
firstName first_name
createdAt created_at
XMLHttpRequest xml_http_request
orderItemId order_item_id

Try it

camelCase
 
PascalCase
 
snake_case
 
CONSTANT_CASE
 
kebab-case
 
Train-Case
 
dot.case
 
path/case
 
Title Case
 
Sentence case
 
lowercase
 
UPPERCASE
 

In code

JavaScript

const toSnake = (s) => s
  .replace(/([a-z\d])([A-Z])/g, '$1_$2')
  .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')
  .toLowerCase();

Python

import re

def to_snake(s: str) -> str:
    s = re.sub(r'([A-Z]+)([A-Z][a-z])', r'\1_\2', s)
    return re.sub(r'([a-z\d])([A-Z])', r'\1_\2', s).lower()

More examples

Open the full Case Converter →