What is Camel Case?
camelCase joins words without spaces and capitalizes each word except the first: firstName, getUserById, backgroundColor.
The name comes from the "humps" formed by the capital letters, like a camel's back.
Types of Camel Case
- lowerCamelCase (standard camelCase):
myVariable - UpperCamelCase (PascalCase):
MyClassName
What is Snake Case?
snake_case uses underscores to separate words, all in lowercase: first_name, get_user_by_id, background_color.
The name comes from the flat appearance, like a snake lying on the ground.
Key Differences
| Feature | camelCase | snake_case |
|---|
|---|---|---|
| Separator | Capital letters | Underscores |
|---|---|---|
| Case | Mixed | Lowercase |
| Example | getUserName | get_user_name |
| Readability | Moderate | High |
| Typing speed | Moderate | Requires underscore key |
When to Use camelCase
camelCase is the preferred convention in:
- JavaScript — variables, functions, object properties
- TypeScript — same as JavaScript
- Java — methods, fields, local variables
- Kotlin — functions and properties
- JSON — API response keys
- CSS-in-JS — styled component props
- Swift — variables and functions
When to Use snake_case
snake_case is preferred in:
- Python — PEP 8 requires snake_case for variables, functions, and modules
- Ruby — convention for methods and variables
- PHP — common convention for functions and variables
- SQL / Databases — column names and table names
- File names — in Linux/macOS environments
- URL slugs — as an alternative to kebab-case (though hyphens are preferred for SEO)
- Environment variables — often SCREAMING_SNAKE_CASE (uppercase variant)
Readability Study
Research suggests that both camelCase and snake_case are readable, but snake_case may have a slight readability advantage for longer identifiers because the underscores create visible word boundaries.
For example, compare:
- camelCase:
getMaximumRetryCount - snake_case:
get_maximum_retry_count
For short identifiers (2-3 words), the difference is negligible.
The Bottom Line
Use the convention your language community uses. Mixing conventions in a single codebase is worse than consistently using either one.
- If you're writing Python → snake_case
- If you're writing JavaScript/TypeScript → camelCase
- If you're writing Java/C# → camelCase for variables, PascalCase for classes
- If you're naming database columns → snake_case