Java example

Convert snake_case to camelCase in Java

Java can split underscore-delimited tokens, normalize them with Locale.ROOT, and capitalize every token after the first.

By Camel Case Converter Editorial TeamPublished Sep 12, 2026Last reviewed

Java code

import java.util.Locale;

static String snakeToCamel(String value) {
    String cleaned = value.trim().replaceAll("^_+|_+$", "");
    if (cleaned.isEmpty()) return "";
    String[] parts = cleaned.split("_+");
    StringBuilder result = new StringBuilder(parts[0].toLowerCase(Locale.ROOT));
    for (int i = 1; i < parts.length; i++) {
        String part = parts[i].toLowerCase(Locale.ROOT);
        if (part.isEmpty()) continue;
        result.append(Character.toUpperCase(part.charAt(0)));
        result.append(part.substring(1));
    }
    return result.toString();
}

snakeToCamel("user_profile_image");
// "userProfileImage"

Use Locale.ROOT for predictable identifier casing that is not affected by the machine's default locale.

A StringBuilder joins normalized tokens efficiently; broader tokenization is needed when source values contain mixed separators or acronyms.

Edge cases to consider

  • Acronym casing should follow the codebase policy.
  • Use Locale.ROOT instead of user-locale casing for identifiers.
  • Recursive JSON key conversion is separate from transforming one string.
  • Different source keys can normalize to the same camelCase key and need a conflict policy.

Example

BeforeAfter
user_profile_imageuserProfileImage
__user__profile__userProfile
api_response_urlapiResponseUrl
created_atcreatedAt

Java code

assert snakeToCamel("user_profile_image").equals("userProfileImage");
assert snakeToCamel("__user__profile__").equals("userProfile");
assert snakeToCamel("api_response_url").equals("apiResponseUrl");
assert snakeToCamel("created_at").equals("createdAt");

Try the conversion online

Use the browser-based converter for quick checks, batch values, acronym handling, or inputs that mix several naming conventions.

Detected: snake_case
camelCase output
userProfileImageUrl

All naming formats

camelCase
userProfileImageUrl
PascalCase
UserProfileImageUrl
snake_case
user_profile_image_url
kebab-case
user-profile-image-url
CONSTANT_CASE
USER_PROFILE_IMAGE_URL
dot.case
user.profile.image.url
path/case
user/profile/image/url

Conversion happens locally in your browser. Your input is not sent to a conversion server.