Paste a line once. Every case appears beside your text, from Sentence case for a button label to CONSTANT_CASE for an env var, each with its own copy button. Nothing leaves your browser.
0 characters 0 words 0 lines
Save changes to the draft
How to Read a Stack Trace
DO NOT DEPLOY ON FRIDAY
editors@toolexe.com
lastModifiedAt
ToolCard
created_at
R2_CDN_URL
case-converter
Content-Type
auth.failed
sUrE, sHiP iT tOdAy
hELLO tHERE
rAnDOm cAsE
Case mistakes rarely come from the text. They come from the destination. A newspaper-style headline looks loud on a button. A Python constant in camelCase fails review. Find your destination in the first column, then copy the matching row from the converter above.
| Where the text goes | Case | Looks like | Why |
|---|---|---|---|
| Buttons, menu items, settings pages | Sentence case | Save changes | The Google and Microsoft developer style guides both ask for sentence case in interface text. |
| Article headlines, book and film titles | Title Case | How to Read a Stack Trace | AP, Chicago, and APA disagree on short words. The rulebook table below shows where. |
| JavaScript variables, JSON keys from JS APIs | camelCase | lastModified | Browser APIs set the pattern, from getElementById to innerHTML. |
| React components, Java and C# classes | PascalCase | ToolCard | React reads a lowercase JSX tag as a built-in HTML element, so components need a capital. |
| Python functions, database columns | snake_case | created_at | PEP 8 asks for lowercase words with underscores in function and variable names. |
| Environment variables, constants | CONSTANT_CASE | R2_CDN_URL | Shell tradition. PEP 8 uses the same form for module-level constants. |
| URL slugs, CSS classes, CLI flags | kebab-case | case-converter | The last segment of this page's URL. Google recommends hyphens over underscores between words in URLs. |
| HTTP headers | Train-Case | Content-Type | Header names are case-insensitive under RFC 9110. Train-Case is habit, not a requirement. |
| Translation keys, config paths | dot.case | auth.failed | Laravel, Rails i18n, and Spring properties all nest keys with dots. |
The code formats, camelCase through dot.case, break each line into words first, then rejoin them. Most surprises trace back to this step. These are the exact rules.
lastModified splits into last and Modified.XMLResponse splits into XML and Response.utf8Decode becomes utf8_decode and R2 stays whole. A word opening with a digit splits: 2FA turns into 2_fa. Check those by hand.dont, not don_t.input parseXMLResponse2 for user-id words parse | XML | Response2 | for | user | id snake parse_xml_response2_for_user_id camel parseXMLResponse2ForUserId acronyms kept camel parseXmlResponse2ForUserId acronyms off
Google's Java style guide writes XmlHttpRequest, treating an acronym as one ordinary word. The browser API itself is named XMLHttpRequest. Both styles ship in real code. The Keep acronyms box picks one and applies the choice to camelCase, PascalCase, Train-Case, Title Case, and Sentence case together.
Every style guide capitalizes nouns, verbs, and the first word. They split on short words. Headline mode lowercases articles, short conjunctions, and prepositions of three letters or fewer, unless the word opens or closes the line or follows a colon. AP and APA follow the same split. Chicago lowercases every preposition regardless of length, so Chicago writers should fix words like from and between by hand.
| Word mid-title | AP | Chicago | APA | Headline mode |
|---|---|---|---|---|
| the (article) | the | the | the | the |
| for (3-letter preposition) | for | for | for | for |
| from (4-letter preposition) | From | from | From | From |
| between (long preposition) | Between | between | Between | Between |
| is (short verb) | Is | Is | Is | Is |
Headline mode reads spelling, not grammar. In Log In to Your Account, the word In belongs to the verb log in, so AP capitalizes the word. The converter sees a short preposition and writes Log in to Your Account. Read the result once before publishing. Pick Every word instead when a channel wants every word capitalized, a common habit in YouTube titles.
Sentence case lowercases every word after the first, names included. Call with Priya Raman becomes Call with priya raman. The converter has no list of names, so fix them after copying.
iPhone, eBay, and McDonald's come out as Iphone, Ebay, and Mcdonald's in Title Case. Lowercase input such as json stays Json, since only words typed in capitals count as acronyms.
UPPER CASE turns Straße into STRASSE, one character longer. Lowercasing back gives strasse, not the original word.
Browsers uppercase i to I by default. Turkish expects İ with a dot. This converter uses the default rules, so Turkish copy needs a locale-aware editor.
Sentence case treats a period followed by a space as the end of a sentence. Dr. Malik survives by luck. e.g. this comes out as e.g. This.
With Keep acronyms on, a line written fully in capitals would never change. The converter spots lines with no lowercase letters and converts every word on them, acronyms included.
Short answers on title rules, acronyms, privacy, and lists.
Keep the Title Case style on Headline. Articles, short conjunctions, and prepositions of three letters or fewer (a, the, of, to, in, on) stay lowercase unless they open or close the line or follow a colon.
The Keep acronyms box is off. With the box off, every word gets one capital, the style Google's Java guide recommends (XmlHttpRequest). Tick the box to keep words typed in capitals intact.
No. Every conversion runs in JavaScript inside your browser. Copy link is the exception you control. The button puts your text into the URL, so the text then sits in any chat or browser history the link reaches. Skip Copy link for passwords or API keys.
Paste one name per line. Each line converts separately, so the snake_case or camelCase row returns the same number of lines in the same order, ready to paste back into a spreadsheet or an editor.
Only the separator. snake_case joins words with underscores, kebab-case with hyphens. Most programming languages read a hyphen as a minus sign, so kebab-case suits URLs, CSS classes, and file names, not Python or JavaScript identifiers.
Some characters expand. The German ß becomes SS, and ligatures such as the single character fi become two letters. Character counts after conversion differ from the original as a result.