camelCase vs. snake_case vs. kebab-case: cuál usar
camelCase para JavaScript, snake_case para Python y bases de datos, kebab-case para CSS y URL. Dónde va cada convención de nombres y cómo convertir gratis.
Publicado el · 6 min de lectura
Elegir entre camelCase, snake_case y kebab-case depende sobre todo de dónde vive el nombre. JavaScript y Java usan camelCase (firstName); Python, Ruby y SQL usan snake_case (first_name); y CSS, los atributos HTML y las URL usan kebab-case (first-name). Sigue la convención del lenguaje y la guía de estilo de tu equipo. Para cambiar texto de un formato a otro, el convertidor de mayúsculas y minúsculas gratis y el generador de slugs para URL gratis resuelven casi todo el trabajo en tu navegador.
camelCase vs. snake_case vs. kebab-case de un vistazo
| Estilo | Ejemplo | Dónde lo verás |
|---|---|---|
| camelCase | userFirstName |
Variables y funciones de JavaScript y TypeScript, métodos de Java, JSON de muchas API web |
| PascalCase | UserFirstName |
Nombres de clases en la mayoría de los lenguajes, componentes de React, métodos de C# |
| snake_case | user_first_name |
Variables y funciones de Python, Ruby, nombres de columnas SQL, muchas API JSON |
| SCREAMING_SNAKE_CASE | USER_FIRST_NAME |
Constantes en muchos lenguajes, variables de entorno |
| kebab-case | user-first-name |
Propiedades y nombres de clases CSS, atributos HTML, URL, nombres de archivo, opciones de línea de comandos |
Los nombres vienen de sus formas: camelCase tiene jorobas de mayúsculas como un camello, snake_case se arrastra plano sobre guiones bajos como una serpiente, y en kebab-case las palabras están ensartadas en guiones como en una brocheta.

Lenguaje por lenguaje
JavaScript y TypeScript. Las variables y funciones van en camelCase (getUserName), las clases y los componentes de React en PascalCase (UserCard), y las constantes muchas veces en SCREAMING_SNAKE_CASE (MAX_RETRIES). Las funciones integradas del propio lenguaje siguen esta regla, como getElementById y toLowerCase.
Python. PEP 8, la guía de estilo de Python, usa snake_case para funciones, variables y nombres de módulos, CapWords (PascalCase) para las clases, y mayúsculas con guiones bajos para las constantes. Escribir getUserName en Python funciona, pero se verá fuera de lugar para cualquier desarrollador de Python que lo lea.
CSS y HTML. Las propiedades CSS van en kebab-case (background-color, font-size), y la mayoría de los sistemas de nombres de clases hacen lo mismo (.nav-item, .card-title). Los atributos data- de HTML también van en kebab-case, y los navegadores los convierten para JavaScript: data-user-id pasa a ser element.dataset.userId. Esa sola línea resume muy bien por qué existen las dos convenciones.
SQL y bases de datos. Los nombres de columnas y tablas suelen ir en snake_case (created_at, order_items). Muchas bases de datos pasan los nombres sin comillas a un solo tipo de letra, así que createdAt puede convertirse sin avisar en createdat a menos que lo pongas entre comillas cada vez. snake_case evita ese problema.
URL y nombres de archivo. Usa kebab-case. La guía de Google sobre la estructura de las URL recomienda separar las palabras con guiones y no con guiones bajos, porque los guiones marcan claramente dónde termina cada palabra. Las minúsculas también evitan enlaces rotos en servidores que tratan About.html y about.html como archivos distintos. Consulta qué es un slug de URL y nuestras buenas prácticas para slugs de URL.
JSON y API. No hay una regla única. Muchas API centradas en JavaScript usan camelCase y muchos back ends en Python o Ruby devuelven snake_case. Elige una por API y nunca las mezcles en la misma respuesta.
¿Cuál es más fácil de leer?
Los tres se leen bien cuando te acostumbras. Algunas diferencias prácticas:
- snake_case y kebab-case dejan una separación clara entre palabras, lo que ayuda con nombres largos y siglas (
html_parservs.htmlParservs.HTMLParser). - camelCase es más corto y no necesita caracteres extra.
- kebab-case no se puede usar para nombres de variables en la mayoría de los lenguajes, porque
user-namese lee comouser menos name. - Al hacer doble clic, la mayoría de los editores seleccionan completo un nombre en snake_case o camelCase, pero normalmente se detienen en los guiones de kebab-case.
La regla de verdad es la coherencia. Un archivo que mezcla userName, user_name y UserName es más difícil de leer que cualquier estilo usado de forma constante.
Convertir entre formatos
Tendrás que convertir cuando muevas datos entre capas: el created_at de una API en Python que pasa a ser createdAt en JavaScript, el título de una página que se convierte en URL, o el nombre de un ajuste que pasa a ser una variable de entorno.
A kebab-case o snake_case: usa el generador de slugs. Pega las palabras, un nombre por línea, y elige Guiones (-) para kebab-case o Guiones bajos (_) para snake_case. Pasa todo a minúsculas, convierte las letras acentuadas en letras simples y quita los símbolos. Trata cualquier símbolo como separación entre palabras, así que user_first_name se convierte en user-first-name y viceversa. Pero no separa camelCase: userFirstName sale como userfirstname. Pon espacios entre las palabras primero.
A SCREAMING_SNAKE_CASE. Crea la versión en snake_case con el generador de slugs, pégala en el convertidor de mayúsculas y minúsculas gratis y haz clic en MAYÚSCULAS. Al revés, minúsculas convierte MAX_RETRIES en max_retries.
A camelCase o PascalCase. No hay un botón de un clic. El camino más rápido: escribe las palabras con espacios, haz clic en Cada Palabra En Mayúscula en el convertidor (user first name se convierte en User First Name), y luego borra los espacios para PascalCase y pon en minúscula la primera letra para camelCase.
Muchos nombres a la vez, dentro del código. Para un cambio de nombre grande, usa la función de buscar y reemplazar de tu editor con una expresión regular. Prueba primero el patrón en el probador de regex gratis: por ejemplo, _([a-z]) encuentra cada guion bajo seguido de una letra, el punto donde snake_case necesitaría una mayúscula en camelCase. Muchos editores pueden poner en mayúscula la letra capturada en el reemplazo; revisa la documentación de tu editor para ver la sintaxis.
Qué vigilar al convertir
- Siglas. Decide si es
userIdouserID,HtmlParseroHTMLParser, y mantenlo. - Números.
address_line_2se convierte sin problema;addressLine2está bien; solo no pierdas el dígito. - Nombres públicos. Cambiar el nombre de un campo JSON o de una URL rompe lo que usa quien dependa de ellos. Agrega una redirección para las URL y mantén funcionando durante un tiempo los nombres de campo antiguos en las API.
Convierte tu texto
Usa el convertidor de mayúsculas y minúsculas gratis para MAYÚSCULAS, minúsculas y Cada Palabra En Mayúscula, y el generador de slugs para kebab-case y snake_case. Los dos funcionan en tu navegador, y nada de lo que pegas sale de tu dispositivo.
Preguntas frecuentes
- ¿Cuál es la diferencia entre camelCase y snake_case?
- camelCase une las palabras y pone en mayúscula la primera letra de cada una después de la primera (
firstName). snake_case deja las palabras en minúsculas y las une con guiones bajos (first_name). - ¿Debo usar camelCase o snake_case en JSON?
- Cualquiera está bien. Usa el que corresponda al lenguaje que usan la mayoría de tus clientes y sé coherente dentro de la API.
- ¿Por qué CSS usa kebab-case?
- CSS se diseñó con nombres de propiedades con guiones, como
font-size, y los nombres de clases suelen seguir el mismo estilo. Los guiones no se pueden usar en los nombres de variables de la mayoría de los lenguajes de programación, y por eso JavaScript usa camelCase para esas mismas propiedades. - ¿kebab-case es bueno para las URL?
- Sí. Google recomienda separar las palabras de las URL con guiones, y las minúsculas evitan problemas con la distinción entre mayúsculas y minúsculas.
- ¿El convertidor de mayúsculas y minúsculas puede hacer camelCase?
- No con un solo clic. Usa Cada Palabra En Mayúscula, luego quita los espacios y pon en minúscula la primera letra. Para kebab-case y snake_case, usa el generador de slugs para URL.
Herramientas de texto
Prueba Convertidor de mayúsculas y minúsculas
Gratis, sin registro, funciona en tu navegador. Pega texto y cámbialo a MAYÚSCULAS, minúsculas, Tipo oración, Tipo Título o Cada Palabra En Mayúscula con un clic, y luego cópialo.
También te puede servir
- Generador de slugs para URLConvierte un título o cualquier texto en un slug de URL limpio y en minúsculas como "mi-primer-post-del-blog". Los acentos se convierten (café pasa a cafe), los símbolos se quitan y puedes quitar palabras cortas, fijar una longitud máxima o crear slugs para toda una lista de títulos a la vez.
- Probador de regexPrueba una expresión regular con tu texto y mira cada coincidencia resaltada mientras escribes, con una tabla de grupos de captura (también los nombrados) y una vista previa en vivo de buscar y reemplazar. Sigue las reglas de regex de JavaScript, y un patrón que tarda demasiado se detiene en lugar de congelar la página.