
Topics Covered:
Helpful tools for this guide
A pull request is blocked because a linter complains about inconsistent naming. Three variables in the same file may use three different styles. A case converter can fix the formatting quickly, but it won't explain why the styles differ or when to use camelCase, PascalCase, snake_case, or kebab-case.
This guide explains the main naming conventions, their differences, and where developers commonly use each one.
Fast answer: camelCase starts with a lowercase word and capitalizes later words, like taskTitle. PascalCase capitalizes the first word too, like TaskTitle. snake_case separates lowercase words with underscores, like task_title. kebab-case uses hyphens, like task-title.
camelCase vs PascalCase vs snake_case at a Glance
| Style | Example | How Words Are Separated | Common Use |
|---|---|---|---|
| camelCase | userName | Capital letters | Variables and functions |
| PascalCase | UserName | Capital letters, including the first word | Classes, types, and components |
| snake_case | user_name | Underscores | Python, Ruby, and databases |
| kebab-case | user-name | Hyphens | URLs, CSS, and file names |
The main difference is simple. camelCase and PascalCase separate words with capitalization, snake_case uses underscores, and kebab-case uses hyphens.
What Is camelCase?
camelCase takes two or more words and joins them without spaces. The first word stays lowercase, while every word after it starts with a capital letter. That's the whole rule.
JavaScript, Java, and C# commonly use camelCase for variables and functions. If you've written names like userAge or calculateTotal, you've already used it. Since there are no separators between words, camelCase also keeps names compact.
What Is PascalCase?
PascalCase is almost the same as camelCase. The main difference is that the first letter is capitalized too. So taskTitle becomes TaskTitle.
C#, Java, and TypeScript commonly use PascalCase for classes and types. When you see a name like TaskItem, the capitalization can give you an immediate clue that you're looking at a class or type.
React components also commonly use PascalCase, such as TaskCard.jsx. Vue projects may use PascalCase or kebab-case depending on the project's naming rules.
What Is snake_case?
snake_case keeps words lowercase and separates them with underscores. For example, taskTitle becomes task_title.
Python's official style guide, PEP 8, recommends snake_case for variables and functions. Ruby also commonly follows this pattern.
Databases often use snake_case as well. Column names like task_id and created_at are common. This can create naming differences when a Python or Ruby backend sends snake_case data to a JavaScript frontend that expects camelCase.
PascalCase vs camelCase
Both styles join words without spaces. camelCase starts with a lowercase letter, such as userProfile, while PascalCase starts with a capital letter, such as UserProfile. Variables and functions often use camelCase, while classes, types, and components commonly use PascalCase.
camelCase vs snake_case
camelCase marks new words with capital letters, while snake_case separates them with underscores. For example, firstName becomes first_name. The better choice usually depends on the conventions of the programming language or project you're working with.
snake_case vs PascalCase
snake_case uses lowercase words separated by underscores, such as user_profile. PascalCase removes separators and capitalizes each word, producing UserProfile. Python commonly uses snake_case for variables and PascalCase for classes.
What Is kebab-case?
kebab-case works a lot like snake_case, but it replaces underscores with hyphens. For example, task_title becomes task-title.
<div class="task-card">
<span class="task-title"></span>
</div>
You can't normally use kebab-case for variable names in programming languages because the hyphen is often read as a minus sign. Instead, it commonly appears in URLs, file names, CSS class names, and command-line flags such as --dry-run.
Custom HTML elements also require a hyphen in their names, such as <task-card>. Frameworks may use kebab-case for component tags even when the related file uses PascalCase.
Other Naming Styles Worth Knowing
SCREAMING_SNAKE_CASE, also called CONSTANT_CASE: follows snake_case but uses capital letters. It is commonly used for constants such as MAX_LOGIN_ATTEMPTS.
Train-Case: works like kebab-case, but every word starts with a capital letter.
dot.case: separates words with periods. You may see it in configuration files and package names.
You don't need to treat these as completely new ideas. They follow the same basic pattern as the main naming styles, using a different letter case or separator.
Everything above deals with naming things in code. If you want the rules for normal writing, such as headlines and sentences, read What Is Sentence Case?
Naming Styles by Programming Language
| Language / Context | Variables & Functions | Classes & Types | Constants |
|---|---|---|---|
| JavaScript | camelCase | PascalCase | SCREAMING_SNAKE_CASE |
| Python | snake_case | PascalCase | SCREAMING_SNAKE_CASE |
| Java | camelCase | PascalCase | SCREAMING_SNAKE_CASE |
| C# | camelCase for locals | PascalCase | PascalCase |
| CSS | kebab-case | N/A | N/A |
| URLs & file names | kebab-case | N/A | N/A |
| Ruby | snake_case | PascalCase | SCREAMING_SNAKE_CASE |
Languages don't always force these naming styles at runtime. Style guides, linters, frameworks, and team conventions usually decide which format you should follow. Staying consistent makes the code easier for other developers to understand.
Common Mistakes to Avoid
- Switching styles halfway through a file. One function might be called fetchTasks while another is fetch_tasks. Follow the convention used by your language or project.
- Using the wrong style for constants. In many projects, MaxRetries would instead appear as MAX_RETRIES.
- Handling acronyms inconsistently. Names such as taskID and taskId may both appear in code, so follow the project's existing style guide.
- Starting a class name with a lowercase letter when the project uses PascalCase for classes.
How to Switch Between Naming Styles
Renaming many variables from snake_case to camelCase by hand is slow, and a small typo can create another problem. This often comes up when a backend and frontend follow different naming conventions.
The Free Case Converter switches text between camelCase, PascalCase, snake_case, and kebab-case with one click. It runs in your browser, so the text you paste doesn't need to be sent to a server for conversion.
Working in a spreadsheet instead of code? Read how to convert case in Excel. You can also browse the full tools page for more free text and SEO tools.
Why This Actually Matters
A consistent naming style turns a name into a clue. PascalCase may tell you that you're looking at a class or type before you've opened its definition. SCREAMING_SNAKE_CASE often signals a constant.
camelCase commonly identifies variables or functions in languages such as JavaScript. These patterns make large codebases easier to scan because developers can recognize the role of an identifier faster.
Breaking the pattern also makes searching and refactoring harder. getUserName and get_user_name are different strings even when they describe the same thing. On a large project, inconsistent naming can make code reviews slower and create unnecessary confusion.
Research has also looked at how programmers read different identifier styles. A 2010 eye-tracking study by Bonita Sharif and Jonathan Maletic compared camelCase and underscore-based identifiers and found differences in how quickly participants recognized them.
FAQs
Is snake_case the same as underscore case?
Yes. Both names usually describe lowercase words separated by underscores, such as user_name.
What does snake_case mean?
snake_case is a naming style that separates lowercase words with underscores. For example, user account becomes user_account.
What naming style does Python use?
Python's PEP 8 style guide recommends snake_case for variables and functions, while class names normally use PascalCase.
Can I mix styles in one project?
The code may still run, but inconsistent naming makes a project harder to read and can fail linting or style checks. Following one convention also makes collaboration easier.
What's the difference between camelCase and PascalCase?
The main difference is the first letter. camelCase starts lowercase, like taskTitle, while PascalCase starts with a capital letter, like TaskTitle.
Is PascalCase the same as Pascal notation?
Yes. PascalCase, Pascal casing, and Pascal notation usually describe the same style where each word begins with a capital letter and no separator appears between words.
Is there a standard naming style for JSON?
JSON doesn't require one naming style. camelCase is common in JavaScript APIs, while snake_case often appears in APIs built with Python or Ruby.
Bottom Line
camelCase, PascalCase, snake_case, and kebab-case solve the same basic problem: writing multiword names without spaces. The main difference is whether they use capitalization, underscores, or hyphens to separate the words.
The right choice usually depends on the programming language, framework, or project's existing style guide. Consistency matters more than choosing one naming convention for every situation.
If you need to switch between these formats, use the free Case Converter instead of rewriting each name manually.
Related Articles
Continue with closely related CountFlows guides.
Academic Writing
Free Academic Writing Guide for Students, Researchers
Academic writing is a formal style of communication used in educational and research contexts...
SEO
SEO Content Writing: The 2026 Guide to Ranking on Google
A practical SEO content writing guide covering keyword research, search intent, E-E-A-T, content length data, on-page SEO, and AI search visibility.
Academic Writing
Essay Word Count Guide: How Long Is an Essay? (By Level)
Word count problems start at the outline stage, not the writing stage. Learn essay lengths by level, what counts toward the limit, and how to cut or add words without losing marks.

