Convert Text to dot.case for i18n Keys, Java Packages, and Config Properties
dot.case (also called dot notation, or simply dot case) is a naming convention where
words are written in lowercase and separated by periods — for example,
user.profile.settings or http.request.method. It's widely used
for hierarchical addressing, where each dot represents a level of nesting. This
converter detects word boundaries in plain text, camelCase, PascalCase, snake_case, and
kebab-case, then joins them with periods. Each line is converted independently, so you
can transform a batch of keys or property names at once. Everything runs in your
browser; nothing you type is ever sent to a server.
Where is dot.case used?
dot.case is the standard format for hierarchical i18n translation keys in libraries like
i18next and gettext (checkout.payment_form.submit_button), where each dot
creates a namespace boundary. It's also the format for Java and Scala package names
(com.example.app), Spring Boot and Maven configuration properties
(app.version, server.port, spring.datasource.url),
OpenTelemetry semantic attributes (http.request.method), and lodash
dot-notation get/set paths. JavaScript object property access notation
(user.profile.email) follows the same shape.
How does dot.case differ from snake_case and kebab-case?
All three conventions use lowercase words joined by a separator, but the separator means
something different in each. snake_case uses underscores
(user_profile) and is valid as a code identifier in most programming
languages. kebab-case uses hyphens (user-profile) and is the format for CSS
properties, URL slugs, and HTML attributes. dot.case uses periods
(user.profile) and is reserved for hierarchical or nested addressing, where
the dot itself signals a path — config keys, package paths, object property
access, and translation namespaces. Need PascalCase or camelCase instead? See the
camelCase Converter.
Can this convert camelCase, PascalCase, or snake_case to dot.case?
Yes. Paste getUserProfile, GetUserProfile, or
get_user_profile and each converts to get.user.profile. Mixed
formats work too, since the tool splits on underscores, hyphens, spaces, and
camelCase/PascalCase word boundaries before rejoining with periods.
How are acronyms handled?
Acronym runs are treated as a single unit rather than split letter by letter, so
getHTTPResponse becomes get.http.response — not
get.h.t.t.p.response. This matches the same acronym-detection logic used by
the camelCase Converter, so a term that stays intact
as one word there stays intact as one dot-separated segment here.
What happens to numbers in my text?
A digit becomes its own segment, separated from the letters on both sides — so
page2Title becomes page.2.title, not
page2.title. This keeps numeric path segments unambiguous, which matters
for hierarchical keys where a number might itself be a meaningful index or version
component.
Last reviewed: August 2026