How to type Turkish letters: ç ğ ı ö ş ü

Igor R.

September 22, 2026

Short answer: Turkish adds six letters to the Latin alphabet — ç ğ ı ö ş ü — and splits i into two separate letters, dotted and dotless. Install the Turkish Q layout and they’re all on the keyboard. For occasional use, copy them from the keys below: only ç, ö and ü have Windows Alt codes, because the rest sit above the legacy range.

Tap to copy

Typing accents across several languages? The Accent Keyboard has the full set with per-language presets.

The alphabet, and the one that isn’t a letter you know

Turkish uses the Latin alphabet with six additions and two removals — there is no q, w or x, and i is split in two:

LetterNameCode pointWindows Alt code
çLatin small letter c with cedillaU+00E7Alt + 0231
ğLatin small letter g with breveU+011Fnone
ıLatin small letter dotless iU+0131none
İLatin capital letter i with dot aboveU+0130none
öLatin small letter o with diaeresisU+00F6Alt + 0246
şLatin small letter s with cedillaU+015Fnone
üLatin small letter u with diaeresisU+00FCAlt + 0252

Only three have Alt codes, and the reason is mechanical: ç, ö and ü fall inside the Windows-1252 range the legacy Alt codes cover, while ğ, ş, ı and İ sit above it. For those, use hex plus Alt + X in Word, or copy them. Alt codes vs Unicode vs HTML explains the boundary.

The two i’s are the part that matters. In Turkish, dotted and dotless are different letters, not styling:

  • i (U+0069) capitalises to İ (U+0130) — capital I with a dot.
  • ı (U+0131) capitalises to I (U+0049) — the plain capital you already know.

So İstanbul is correct and Istanbul is a different word in Turkish. Typing a plain i where the language wants ı can change a word’s meaning outright, which is why this isn’t a cosmetic detail.

Windows

  1. Settings → Time & Language → Language & region → Turkish → Options → Add a keyboard → Turkish Q. Switch layouts with Windows key + Space.
  2. On the Turkish Q layout, the top row still starts QWERTY, with the extra letters added down the right-hand side — ğ and ü after P, ş and i after L, ö and ç after M. The dotless ı takes the position English uses for i, and the dotted i moves one key over. Shift works as normal: shift the dotted key for İ, shift the dotless key for I.
  3. For three letters without switching layouts: hold Alt and type 0231 (ç), 0246 (ö) or 0252 (ü) on the numeric keypad.
  4. In Word, any of them: type the hex code — 011F — then Alt + X. See symbols in Word.

If you only need Turkish occasionally and don’t want a second layout at all, a text replacement shortcut per letter is less disruptive — see text replacement for symbols.

Turkish Q keyboard layout showing the six extra letters

Q or F? A genuine choice

Turkey standardised two layouts, and you’ll be offered both.

  • Turkish Q is QWERTY-based and what almost everyone uses. If you already touch-type on QWERTY, your muscle memory mostly survives.
  • Turkish F is a different design, arranged around the actual letter frequencies of Turkish rather than adapted from English. It was the national standard for typewriters, and for a period Apple was the only manufacturer shipping F-keyboards on computers sold in Turkey. It’s genuinely faster for sustained Turkish typing — and useless to you if you switch between Turkish and English all day.

Pick Q unless you type Turkish for hours and are willing to relearn the keyboard.

Mac

Add it under System Settings → Keyboard → Input Sources → + → Turkish, where you’ll find both Turkish Q and Turkish F. Apple also offers a Turkish Q Legacy variant, which keeps a US-style arrangement and reaches the Turkish letters through the Option layer — useful if you mostly type English and only occasionally need Turkish.

There is no standard Option shortcut for ğ, ş, ı or İ on a US layout, so don’t go looking for one. Without a Turkish input source, use the Character Viewer (Control + Command + Space, search the Unicode name) or copy from above. The Option shortcuts that do exist for ç, ö and ü are the usual US-layout accent combinations covered in accents on a US keyboard.

iPhone and Android

Both handle this well, and it’s the easiest route of the lot.

  • iPhone: Settings → General → Keyboard → Keyboards → Add New Keyboard → Turkish. Switch with the globe key.
  • Android (Gboard): Settings → Languages → Add keyboard → Turkish.

Without adding a keyboard, press and hold works for most of them: hold c for ç, o for ö, u for ü, s for ş, g for ğ. The dotless ı is the exception — hold i and you’ll be offered accented dotted forms, not the dotless letter, on most keyboards. For that one, add the Turkish keyboard or use a text replacement.

Linux

Add the Turkish layout in your desktop’s keyboard settings, or type code points directly: Ctrl + Shift + U, then 011f, then Enter or Space for ğ. The same works for 0131 (ı), 0130 (İ) and 015f (ş). See typing symbols on Linux.

The dotless i breaks software — here’s how

This is the part worth reading even if you never type a word of Turkish, because it will eventually land on your desk as a bug report from a Turkish user.

Most programming languages have a toLowerCase that respects the system locale. Under a Turkish locale, it applies Turkish rules — so "INFO".toLowerCase() returns ınfo, with a dotless ı, not info. Any code that lowercases a header name, a file extension, a protocol keyword or an SQL identifier and then compares it against a plain ASCII string stops matching, on that machine only. It’s documented in Java, .NET, PHP and Oracle, and it’s known as the Turkish locale bug — or, more often, “it works on my machine.”

The mirror case is stranger, and verifiable in one line. Lowercasing İ under the standard Unicode rules doesn’t give you i. It gives you i followed by U+0307 COMBINING DOT ABOVE — two code points where you had one. The string is now one character longer, looks identical on screen, and silently fails every comparison. Neither NFC normalisation nor case folding collapses it.

The fix is the same in every language: never let the ambient locale decide the meaning of a comparison. Pass an explicit invariant locale — Locale.ROOT in Java, InvariantCulture in .NET — whenever you’re comparing identifiers rather than displaying text to a person. Use locale-aware casing only for text a human reads.

java

"INFO".toLowerCase()              // "ınfo" under a Turkish locale — a bug
"INFO".toLowerCase(Locale.ROOT)   // "info" everywhere — correct for identifiers

Windows has carried a flag for this since Vista, NORM_LINGUISTIC_CASING, which tells the relevant functions to apply Turkish and Azerbaijani casing deliberately rather than by accident. Azerbaijani shares the same dotted/dotless distinction, so anything you fix for Turkish covers it too.

ş is not ș

A lookalike with real consequences. Turkish ş U+015F is officially a letter with a cedilla — the hook attached to the bottom of the s. Romanian uses ș U+0219, a letter with a comma below, which is a separate character.

They look nearly identical at text sizes and are routinely substituted for each other, usually because an older font or legacy encoding only had the Turkish one. The consequence is ordinary and annoying: Romanian text sorts incorrectly, search misses half the results, and spell-checkers flag correct words. If you’re setting Romanian, the comma-below forms are the right characters; if you’re setting Turkish, the cedilla forms are. Not knowing which you’ve got is what the Symbol Identifier is for.

The same pairing exists for t: Turkish has no ţ, but Romanian ț U+021B is likewise comma-below, not cedilla.

On the web and in code

html

<p lang="tr">Güneş &#287;ün&#252; — &#304;stanbul</p>

In HTML, numeric references work everywhere: &#231; (ç), &#287; (ğ), &#305; (ı), &#304; (İ), &#246; (ö), &#351; (ş), &#252; (ü). Set lang="tr" on the element — it tells browsers, screen readers and spell-checkers which language they’re reading, and it’s what makes CSS text-transform: uppercase apply Turkish casing rather than English.

In LaTeX, the dotless ı has its own command, \i, because the dot is normally added by the accent macros.

Font coverage is rarely an issue for the six letters, but check İ specifically in condensed or display faces — the dot above a capital is the first thing a cramped design drops. If it renders as a box, see symbols showing as boxes.

Accessibility

Screen readers announce these by Unicode name, so ı is read as “latin small letter dotless i” and ğ as “latin small letter g with breve” — accurate and useless in running prose.

The fix is lang="tr", which switches a multilingual screen reader to Turkish pronunciation rules and makes the text read naturally instead of character by character. This matters more for Turkish than for most languages, precisely because the two i’s are distinct letters that an English voice can’t distinguish. How screen readers pronounce symbols covers the pattern.

Troubleshooting

ProblemFix
Alt code doesn’t work for ğ, ş, ı or İThere isn’t one — they’re above the legacy Alt code range. Use hex + Alt + X in Word, or copy.
Holding i on a phone won’t give ıPress-and-hold offers dotted variants. Add the Turkish keyboard, or use a text replacement.
Typed Turkish, got Q W X where letters should beWrong layout active. Windows key + Space on Windows, globe key on a phone.
Uppercasing turns i into I instead of İThe app is applying English casing. Set lang="tr", or use a Turkish-locale function.
Lowercasing İ adds an invisible characterStandard Unicode behaviour — it becomes i + U+0307. Use an invariant locale for comparisons.
Search misses words containing şYou may have Romanian ș U+0219 rather than Turkish ş U+015F. Check with the Symbol Identifier.
İ shows as a box in a display fontFont gap on the capital-with-dot. Pick a font with fuller Latin Extended-A coverage.

Recap

SituationDo this
Typing Turkish regularlyInstall Turkish Q
Typing Turkish for hoursConsider Turkish F
Occasional ç ö ü on WindowsAlt + 0231 / 0246 / 0252
Occasional ğ ş ı İCopy above, or hex + Alt + X in Word
On a phoneAdd the Turkish keyboard — press-and-hold won’t give you ı
Writing HTMLNumeric references plus lang="tr"
Writing code that compares textInvariant locale, always

Frequently asked questions

How do I type Turkish letters without a Turkish keyboard?

Copy them, or use Alt codes for the three that have them — Alt + 0231 for ç, Alt + 0246 for ö, Alt + 0252 for ü. For ğ, ş, ı and İ there are no Alt codes; type the hex code then Alt + X in Word, or copy the character.

What’s the difference between ı and i in Turkish?

They’re two different letters. Dotted i capitalises to İ, and dotless ı capitalises to plain I. Swapping them can change a word’s meaning, so it isn’t a matter of style or font.

Should I use the Turkish Q or F keyboard?

Q for almost everyone — it’s QWERTY-based, so existing muscle memory mostly carries over. F is arranged around Turkish letter frequencies and is faster for sustained Turkish typing, but it means relearning the keyboard.

Why does my code break with Turkish text?

Under a Turkish locale, lowercasing “INFO” produces “ınfo” with a dotless ı, so comparisons against ASCII strings fail. Pass an explicit invariant locale — Locale.ROOT or InvariantCulture — whenever you’re comparing identifiers rather than displaying text.

Why does lowercasing İ add a character?

Unicode’s default lowercase of U+0130 is “i” followed by U+0307 COMBINING DOT ABOVE — two code points instead of one. It looks identical on screen but no longer matches, and normalisation doesn’t collapse it.

Is Turkish ş the same as Romanian ș?

No. Turkish ş (U+015F) has a cedilla; Romanian ș (U+0219) has a comma below. They look almost identical but are separate characters, and mixing them breaks sorting, search and spell-checking.

Written by Igor R. Tested on Windows 11, macOS, iOS, Android, Linux and Word. Last updated September 2026. Symbol code points follow the Unicode Standard.

Leave a Comment