The Python world's convention
snake_case lowercases everything and joins words with underscores: word_counter. It is Python's official rule (PEP 8) for variables and functions, Ruby's convention, and the dominant style for SQL column names.
Why databases adopted it
A very practical reason: most database engines fold unquoted identifiers to lowercase. A column created as dateOfBirth becomes dateofbirth and turns unreadable. The underscore preserves word boundaries without relying on case — hence its dominance in SQL.
Frequently asked questions
snake_case or kebab-case?
The underscore is safe everywhere in code, where a hyphen would be read as subtraction. kebab-case is therefore reserved for URLs, files and CSS.
What about SCREAMING_SNAKE_CASE?
Same thing in uppercase, reserved for constants: MAX_RETRIES, API_KEY. See our CONSTANT_CASE converter.
Are acronyms split correctly?
Yes: getHTTPResponse gives get_http_response, not get_h_t_t_p_response.