VERBAVIA

How to type Shanghainese

There is no Shanghainese keyboard in Gboard or on an iPhone, and there never has been. There is one real input method, it runs everywhere, and it takes twenty minutes to set up. This is how — and what to do on a device where you cannot.

Updated 19 September 2026 · 5 min read

Tap 🔊 to hear an example. Shanghainese examples play the recordings from Verbavia’s course, made with a Shanghainese voice; Mandarin examples play a Mandarin voice.

The honest summary

Most Shanghainese ever typed was typed on a Mandarin pinyin keyboard, by people who know which characters they want and reach them through their Mandarin readings. That works for a native speaker who can spell in two languages at once. It does not work for a learner, who knows the word as non ‘you’ and has no idea that the Mandarin reading of that character is nóng. For a learner the answer is an input method that takes Shanghainese romanisation and returns characters, and that exists: the Rime engine with the Wugniu schema.

Rime, and what it runs on

Rime is an open-source input-method engine — a framework that takes any spelling scheme you give it and turns keystrokes into candidate characters. It has a front end for every desktop and phone, each with its own name, which is the first thing that confuses people:

PlatformFront endWhere
WindowsWeasel (小狼毫)rime.im/download
macOSSquirrel (鼠鬚管)rime.im/download
Linuxibus-rime or fcitx5-rimerime.im/download
AndroidTrime (同文)github.com/osfans/trime
iOSHamster (仓输入法), a community buildgithub.com/imfuxiao/Hamster

Install the front end for your platform first. On its own it types Mandarin; the Shanghainese comes from a schema you add.

The Wugniu schema

The schema is rime-wugniu, the “Shanghai Wu input scheme”. Its README says it covers both the older and the newer Shanghai accent, and that it spells by the Wu Latin phonetic notation — the Wugniu romanisation used by wugniu.com and by most current reference works, which is set out on the romanisation page. On a desktop with Rime’s package tool installed, it is one line:

bash rime-install wugniu

Then redeploy Rime, switch to the Shanghainese schema, and type the romanisation: non hau offers 侬好 non hau ‘hello’, a la offers 阿拉 a la ‘we’. On Trime and Hamster the same schema files are copied into the app’s Rime folder by hand; both apps document where. Whether tone numbers are required or optional when you type is not stated in the README, and it depends on how the schema is configured — try without first.

Verbavia’s course spelling is not Wugniu. It is close — the vowels and most consonants agree — but the course writes the checked-syllable ending as -h where Wugniu writes -q, and drops the tone digits. The romanisation page has the correspondence. If you learn with the course and type with Wugniu you will be translating between two spellings of the same sound, and it becomes automatic quickly.

The workaround: Mandarin pinyin

Shanghai people type Shanghainese on the keyboard they already have, and they do it two ways. Where the Shanghainese word is a character with a Mandarin reading — and most are — they type the Mandarin: nong for 侬, yi for 伊, ala for 阿拉, sha for 啥. Where it is not, they type a Mandarin near-homophone. Wikipedia’s example is lemon, 柠檬 in standard Chinese, written 人门 — person-door — because that is what the Shanghainese word sounds like to a Mandarin ear.

For a learner the first method is a real option once you know the Mandarin readings of the two or three dozen most Shanghainese characters — 侬, 伊, 阿拉, 勿, 啥, 搿, 辰光, 事体 — and it is the only method that works on a phone you cannot install anything on. The second method produces text a Shanghainese reader parses by sound and a learner cannot. Read it when you meet it; do not write it.

Apple’s Mandarin keyboard has, since iOS 16, offered “dialect” options for Shanghainese and Sichuanese. That is a pinyin keyboard that biases its candidates towards dialect characters; it is not a Shanghainese romanisation keyboard, and it will not help you type from non hau.

The Unicode trap

Shanghainese uses a few characters that Mandarin does not, and one of them lives in a part of Unicode that many devices cannot draw. The question particle at the end of a yes/no question — 侬好伐? non hau va ‘how are you?’ — has a dedicated character, 𠲎, code point U+20C8E, which sits in CJK Unified Ideographs Extension B. Extension B is on Unicode’s supplementary plane, and a font that does not cover it shows a blank box. Wiktionary says as much: the character “is not correctly displayed on some systems and is not always easy to enter, so it is sometimes substituted with other characters, most commonly 伐”.

Which is why this site, and the course, write it va ‘(question particle)’: a character every device has, standing in for one that many do not. If a Shanghainese text you are reading shows an empty square at the end of a question, that is what it is. Installing a full CJK font such as Noto CJK fixes the display.

The other Shanghainese-only characters are safer. na ‘you (plural)’ is in Extension A, which almost everything supports; viau ‘don’t’, the contraction of 勿要, and geh ‘this’ are in the main block. If a device shows 伐 and 㑚 and 覅 but not the question particle, it is the Extension B gap and nothing is wrong with the text.

Looking a reading up

Two tools sit beside the keyboard. wugniu.com is a Wu dictionary: type a character, get its reading in Shanghainese and in over a hundred other Wu varieties. It does not type for you, but it tells you what to type. And the Verbavia word list gives the thousand commonest words with readings and recordings, which is a faster way to check a reading than a dictionary when the word is common.

A course at Swarthmore built its own keyboards on IBus for Linux, with Wu pinyin and IPA layouts; the files are on the college’s internal GitHub, and the recipe is essentially what Rime does in a more general form. For anyone not in that course, Rime is the route.

What to expect

Shanghainese has no official spelling, so even with the keyboard working you will make choices — whether to write the completed-action particle 仔 or 子, the progressive 勒海 or 辣海 — that the writing page explains. The keyboard offers the variants; the community has not settled on one, and neither need you.

Sources

  1. Rime: downloads — Weasel, Squirrel, ibus-rime, fcitx5-rime, Trime
  2. GitHub: rime/rime-wugniu — 上海吳語輸入方案, README (old and new accents; Wu Latin phonetic notation; rime-install wugniu)
  3. GitHub: osfans/trime — Rime IME for Android
  4. GitHub: imfuxiao/Hamster — librime for iOS
  5. Wiktionary: 𠲎 — U+20C8E, question particle; “not correctly displayed on some systems … most commonly 伐”
  6. Codepoints.net: U+20C8E — CJK Unified Ideographs Extension B
  7. Wiktionary: 㑚 — U+345A, CJK Unified Ideographs Extension A
  8. Wikipedia: Shanghainese — informal writing with Mandarin near-homophones (人门 for 柠檬)
  9. Apple Developer Forums: Shanghainese and Sichuanese dialect options in the iOS 16 pinyin keyboard
  10. Swarthmore LING073 wiki: Shanghainese keyboard (IBus, Wu pinyin and IPA layouts)
  11. wugniu.com — Wu Chinese dialect dictionary

Learn Shanghainese with Verbavia

Start the free Shanghainese course

Verbavia’s free Shanghainese course teaches the everyday words that make a sentence Shanghainese rather than Mandarin, shows the characters and the pronunciation side by side, and plays its examples in a Shanghainese voice. One lesson a day.

Read next

The Shanghainese course and word list