I'm looking for a way of adding tone marks above characters. It's fairly easy to add Pinyin with tone marks, but I want to add only tone marks. I want to use this as a teaching tool, because even though most students don't have a big problem with the syllables, they do need to focus more on tones. Thus, adding the tone marks would mean that students can focus on the characters while still being able to see the tones if they need to and focus on them more.

Right now, I have to do this manually, which is quite tedious. However, I'm guessing that there might be a way of doing this automatically. Perhaps there are fonts that display the tone diacritic next to the character? The problem would be characters with multiple readings, of course, but perhaps there is a way around that. Does anybody know of any other way of adding tone marks above characters without having to do it manually?

This is done both in Practical Audio-Visual Chinese and New Practical Chinese Reader (can't remember exactly where it begins and where it stops, though), but I think they've done it manually using some kind of typesetting tool. The best solution would probably be to use Ruby annotation and somehow get rid of the Pinyin/Zhuyin and get only the tone mark. I don't know if that's possible, though.

  • I have been teaching my daughter Mandarin for 6 years. First I taught her pinyin. When she was able to read pinyin correctly, then I helped her read simple stories with pinyin (with tone marks) on each character. Now she can read stories to me without pinyin on characters. I have been learning English for more than 20 years, and my English is still far cry from close to native speakers. So from the 2 cases I mentioned above, I can draw a conclusion that the most effective easiest way to learn a foreign language is to following the way how you learn your own mother language. Commented Apr 16, 2013 at 17:51
  • Back to your question, I think you need to get your students able to read pinyin correctly, then give them texts with pinyin on each character. When they have mastered enough basic characters (100~200 maybe), then give them texts without pinyin. I don't know any tools which can put tone marks only on characters. One thing to consider: some characters are polyphones (probably different tones), and the tool, if any, won't know which tone mark to choose. If wrong tone marked on characters, it will mislead or cause confusions. Commented Apr 16, 2013 at 18:06
  • The reasons why I want to do this are slightly complicated, but since this is what several textbooks actually do (Practical Audio-Visual Chinese, and New Chinese Practical Reader, for instance), I'm not alone in thinking that this is a good idea. The thing is that if you have Pinyin next to the characters, it's hard for people used to the Latin alphabet to read the characters at all. Students eyes focus automatically on the Pinyin. This is not good. Adding only tone marks offers the support the students need without making them read the Pinyin instead of the characters.
    – Olle Linge
    Commented Apr 17, 2013 at 2:38
  • Regarding 破音字, that isn't necessarily a big problem. Choosing the most common tone would solve most problems and checking the rest manually would still be much quicker than adding each mark manually. Also, if the tool checked against any dictionary, most 破音字 could be sorted out.
    – Olle Linge
    Commented Apr 17, 2013 at 2:39
  • @OlleLinge also consider, I find numerical tones much more easy to remember than graphical tones. I stopped learning with graphical accents. I use numbers now. Probably because of visual memory. But intimately, I personnally think it's because the impact of the number that is bigger visually than a little ` or the other accents, that can be confused. Commented Apr 19, 2013 at 22:19

3 Answers 3


I'm not quite sure what your question actually is. Do you want to know how:

  1. to better teach Chinese tones? (cram specific tone recall quizzes)
  2. to automate adding pinyin with diacritical marks to your text? (google, find e.g. annotator.jiang-long.com)
  3. to use Ruby annotations in your typesetting environment? (which?)

If you use LaTeX, see e.g.: https://tex.stackexchange.com/questions/4448/tone-marks-above-chinese-characters-in-latex

You might also try combining Unicode characters with the program of your choice: http://en.wikipedia.org/wiki/Combining_character

The easiest solution to getting the tone marks out of pinyin is to use Regular Expressions. I have written a Javascript bookmark for you, which works with annotator.jiang-long.com:

javascript:(function(){var e,es,i;es=document.getElementsByTagName("acronym");for(i=0;e=es[i];i++){e.innerHTML=e.innerHTML.replace(/\w*[āɑ̄ēīōūǖĀĒĪŌŪǕ]\w*/g,' ˉ ').replace(/\w*[áɑ́éíóúǘÁÉÍÓÚǗ]\w*/g,' ˊ ').replace(/\w*[ǎɑ̌ěǐǒǔǚǍĚǏǑǓǙ]\w*/g,' ˇ ').replace(/\w*[àɑ̀èìòùǜÀÈÌÒÙǛ]\w*/g,' ˋ ');}})();

And an advanced version using XPath which also takes care of toneless pinyin:

javascript:(function(){var i,t,ts,e,at;at=parseInt(prompt("Which row is the pinyin in?",1))-1;ts=document.querySelectorAll( 'table.textblock' );for(i=0;t=ts[i];i++){e=t.querySelectorAll('acronym')[at];e.innerHTML=e.innerHTML.replace(/\w*[āɑ̄ēīōūǖĀĒĪŌŪǕ]\w*/g,' ˉ ').replace(/\w*[áɑ́éíóúǘÁÉÍÓÚǗ]\w*/g,' ˊ ').replace(/\w*[ǎɑ̌ěǐǒǔǚǍĚǏǑǓǙ]\w*/g,' ˇ ').replace(/\w*[àɑ̀èìòùǜÀÈÌÒÙǛ]\w*/g,' ˋ ').replace(/[^ˉˊˇˋ ]+/g,' · ').replace(/ /g,' ');}})();

Just create a new bookmark and past the Javascript as URL. It replaces any word containing an āíěòū etc. with the respective tone mark.
I picked annotator.jiang-long.com totally at random; you may need to adjust the code if you want it to work with your favorite annotator webservice.

Update: convert pinyin without tonemarks into dots

  • Thanks for the reply, but I think my description above is fairly accurate? I want to add tone marks (not pinyin, not anything else) above characters in a line of text. That's it. 1) Yes, that's the goal. But it's NOT for cramming or recall or any kind of quizzes, but for reading. 2) I don't want the Pinyin, that would defy the purpose since students would then read the Pinyin and not the characters. 3) Yes, that's what I think most people are doing, but I was looking for an alternative to adding all the diacritics manually. All automated versions I've seen have included Pinyin/Zhuin too.
    – Olle Linge
    Commented Apr 20, 2013 at 1:48
  • 1
    @Olle Linge: I don't do Office scripting, so I wrote you a Javascript which you can use with the annotator service I googled. Commented Apr 23, 2013 at 8:56
  • 1
    Feel free to do so, getting knowledge out to people is the purpose of Stackexchange after all =) Commented Apr 24, 2013 at 8:52
  • 1
    I changed the Javascript so neutral tones are displayed as dots. Commented May 9, 2013 at 14:25
  • 1
    I added a prompt to choose which row of annotation to substitute. If you only display hanzi and pinyin you should choose "1". Commented May 11, 2013 at 23:16

I have written some software that does, this https://code.google.com/p/tghz-word-tone-annotator/ . It is however a Microsoft word add-in.

  • Any Feedback would be much appreciated ^_^.
    – Twig
    Commented May 14, 2013 at 15:47

Check https://www.purpleculture.net/chinese-pinyin-converter/, this tool can add tone numbers only

  • Yeah, I've also found that tool, which is a lot easier to use. :)
    – Olle Linge
    Commented Apr 22, 2018 at 20:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.