User Rating 0.0 β˜…β˜…β˜…β˜…β˜…
Total Usage 0 times
0 characters
0 characters
Is this tool helpful?

Your feedback helps us improve.

β˜… β˜… β˜… β˜… β˜…

About

Case conversion errors propagate silently through data pipelines. A mismatched key in a case-sensitive database lookup returns zero rows instead of throwing an error. This tool applies the Unicode Simple Uppercase Mapping to every code point in your input. For standard ASCII, each lowercase letter from a (0x61) through z (0x7A) is shifted by subtracting 32 (0x20) to yield A (0x41) through Z (0x5A). Non-alphabetic characters pass through unchanged. The conversion handles the full BMP range, so accented characters like Γ© correctly become Γ‰.

Limitation: locale-specific mappings (e.g., Turkish dotless i β†’ Δ°) follow the browser’s default locale, not a user-selected one. For bulk normalization tasks, verify your target locale matches.

uppercase converter text to uppercase ascii uppercase case converter text formatting capitalize text

Formulas

For any character c within the ASCII lowercase range, the uppercase equivalent C is computed by a fixed integer offset:

C = c βˆ’ 32

This works because the ASCII table places uppercase letters at code points 65 - 90 and lowercase at 97 - 122. The gap is exactly 0x20 (32 in decimal). In binary, this is equivalent to clearing bit 5:

C = c ∧ 0xDF

The general condition for this offset to apply:

0x61 ≀ charCodeAt(c) ≀ 0x7A

Where c = the input character, C = the resulting uppercase character, 0x20 = the fixed decimal offset of 32 between ASCII cases, and 0xDF = the bitmask that clears bit 5. For characters outside this range (digits, punctuation, already-uppercase, extended Unicode), the JavaScript engine applies the full Unicode Simple Uppercase Mapping table internally.

Reference Data

CharacterLowercase CodeUppercaseUppercase CodeOffset
a97 (0x61)A65 (0x41)βˆ’32
b98 (0x62)B66 (0x42)βˆ’32
c99 (0x63)C67 (0x43)βˆ’32
d100 (0x64)D68 (0x44)βˆ’32
e101 (0x65)E69 (0x45)βˆ’32
f102 (0x66)F70 (0x46)βˆ’32
g103 (0x67)G71 (0x47)βˆ’32
h104 (0x68)H72 (0x48)βˆ’32
i105 (0x69)I73 (0x49)βˆ’32
j106 (0x6A)J74 (0x4A)βˆ’32
k107 (0x6B)K75 (0x4B)βˆ’32
l108 (0x6C)L76 (0x4C)βˆ’32
m109 (0x6D)M77 (0x4D)βˆ’32
n110 (0x6E)N78 (0x4E)βˆ’32
o111 (0x6F)O79 (0x4F)βˆ’32
p112 (0x70)P80 (0x50)βˆ’32
q113 (0x71)Q81 (0x51)βˆ’32
r114 (0x72)R82 (0x52)βˆ’32
s115 (0x73)S83 (0x53)βˆ’32
t116 (0x74)T84 (0x54)βˆ’32
u117 (0x75)U85 (0x55)βˆ’32
v118 (0x76)V86 (0x56)βˆ’32
w119 (0x77)W87 (0x57)βˆ’32
x120 (0x78)X88 (0x58)βˆ’32
y121 (0x79)Y89 (0x59)βˆ’32
z122 (0x7A)Z90 (0x5A)βˆ’32

Frequently Asked Questions

Yes. The converter uses JavaScript's native String.prototype.toUpperCase(), which follows the Unicode Simple Uppercase Mapping defined in the ECMAScript specification. Characters like Γ© become Γ‰, Γ± becomes Γ‘, and ß becomes SS (the standard German uppercase mapping). However, locale-specific rules (e.g., Turkish dotless Δ± β†’ I vs. Δ°) depend on the browser's default locale, not a user-configurable setting.
They pass through completely unchanged. The uppercase mapping only affects characters classified as Unicode Lowercase_Letter (category Ll). Code points for digits (0x30-0x39), spaces (0x20), tabs (0x09), and all standard punctuation have no uppercase variant and are returned as-is.
The ASCII table was designed intentionally so that lowercase and uppercase Latin letters differ by exactly one bit - bit 5 (value 32). This made case-insensitive comparison trivial on early hardware: clear bit 5 with a single AND 0xDF instruction. The offset of 32 is a deliberate engineering choice from the 1963 ASCII standard, not a coincidence.
JavaScript's toUpperCase() operates in O(n) time and is implemented natively in the engine (V8, SpiderMonkey), so it runs at near-C speed. Texts up to several megabytes convert in under 50ms on modern hardware. For texts exceeding 10MB, consider splitting input into chunks. The textarea in this tool has no artificial character limit.
Per Unicode rules, ß maps to the two-character sequence SS when uppercased. This means the output string can be longer than the input. For example, "straße" (6 characters) becomes "STRASSE" (7 characters). The capital Eszett (ẞ, U+1E9E) was added to Unicode in 2008 but is not the default mapping result.
No. Uppercase conversion is a lossy operation. Once applied, the original case information is destroyed. "Hello World" and "hello world" both produce "HELLO WORLD". If you need reversibility, store the original text before converting.