Identifiers for namespaces and config keys
dot.case is the identifier style for namespaced keys: i18n message bundles (auth.login.error), config file lookups (database.host), log channel names (app.user.signin), and CSS-in-JS theme paths (theme.colors.primary). Every word is lowercase, joined with single dots, no other separators.
The engine tokenises your input the same way as the rest of the case family, then joins the lowercase tokens with .. user profile name becomes user.profile.name. Mixed-format input (camelCase, kebab-case, snake_case) all produces the same dotted key, which makes it easy to convert config or message-bundle keys between formats without losing word boundaries.
Where it shows up: i18n libraries like i18next, vue-i18n, and Rails I18n use dot.case keys for nested message bundles. Config libraries like node-config and Spring use dotted paths to look up nested values. Log frameworks like log4j use dotted logger names that map to package hierarchies. For the dash variant in URLs, use kebab-case; for the underscore variant in code, use snake_case.
How to use convert text to dot.case
- 1Paste or type your phrase into the input panel on the left.
- 2The dot.case key appears in the output panel on the right as you type.
- 3Mixed input is fine:
userProfileName,user-profile-name, andUSER PROFILE NAMEall produceuser.profile.name. - 4Click Copy in the output header to paste the key into your i18n bundle or config file.
- 5For underscores, use snake_case; for dashes, use kebab-case.
Keyboard shortcuts
Drive TextResult without touching the mouse.
| Shortcut | Action |
|---|---|
| Ctrl F | Open the find & replace panel inside the input Plus |
| Ctrl Z | Undo the last input change |
| Ctrl Shift Z | Redo |
| Ctrl Shift Enter | Toggle fullscreen focus on the editor Plus |
| Esc | Close find & replace, or exit fullscreen |
| Ctrl K | Open the command palette to jump to any tool Plus |
| Ctrl S | Save current workflow draft Plus |
| Ctrl P | Run a saved workflow Plus |
What this tool actually does
Word boundary detection
Same tokeniser as camelCase. Underscores, dashes, whitespace, and lowercase-to-uppercase transitions all count as word boundaries.
Lowercase joining with dots
Tokens are emitted in lowercase and joined with a single period. USER PROFILE -> user.profile. For uppercase variants, no sibling tool produces USER.PROFILE directly; combine dot.case with uppercase if you need that.
Idempotent on dotted input
Pasting user.profile.name back in produces the same result. Existing dots are not separators in the tokeniser, so they pass through; the lowercased tokens have dots in their content but no extra splitting happens. In practice, dotted input is preserved as-is.
Multiple separators collapse
Runs of underscores, dashes, or spaces collapse to a single dot. user---profile and user__profile both produce user.profile.
Pairs with the case family
Sibling tools share the same tokeniser. camelCase and PascalCase for joined identifiers, snake_case and CONSTANT_CASE for underscores, kebab-case and Train-Case for dashes.
Worked example
Spaces, dashes, and camelCase boundaries all collapse to the same dot.case result. Useful for converting i18n keys between flat and nested formats, or for normalising config paths from various sources.
user profile name app config root DatabaseHostName
user.profile.name app.config.root database.host.name
Settings reference
| Input | dot.case output |
|---|---|
user profile |
user.profile |
userProfile |
user.profile (boundary via lower-to-upper split) |
user-profile |
user.profile |
user_profile |
user.profile |
USER PROFILE |
user.profile |
auth.login.error |
auth.login.error (already-dotted input is preserved) |
FAQ
Will it work for i18n message keys?
user_profile_name) into nested paths (user.profile.name) or to normalise keys from mixed sources.How is dot.case different from snake_case?
user.profile); snake_case uses underscores (user_profile). Both lowercase. Use dot.case for namespaced keys (i18n, config, logs); snake_case for code identifiers.Will it handle camelCase input?
userProfileName produces user.profile.name.What if my input already has dots?
auth.login.error is preserved verbatim. If you want dots stripped, run remove special characters first.