A very serious issue with all android versions (and maybe other platforms)

Can you tell what character this is? I cant, neither can my Chinese friends or anyone else. Yet, this is a perfectly fine character in skritter. After the next stroke (can you even tell what the next stroke is going to be?) I will get a perfect score for this character. Not even keyboards with handwriting function apps that are made to recognize sloppy written characters on your phone or pleco as I use in the example below will recognize this.

Now, when I ask a Chinese friend to use skritter, they never get the characters right because they might write like this:

I asked my Chinese friend to write the character 的 as quickly as she could in pleco, and look at the result. First character to pop up in the selection, same thing if she writes it on any keyboard with handwrite function (and yes, that is a perfectly fine way of writing that character with cursive writing 草书) .

This issue has been around from the beginning of skritter (has it been 10 years?) and it still has not been fixed. You can pretty much write any character like this and Skritter will say its ok. As long as the stroke order and the direction of the stroke is correct you can pretty much write them where ever you want and thats apparently fine.

This is not acceptable and its almost a bit shameful since Skritter not only is an app made for writing characters (skrittering) and takes pride in that fact, but it also costs a pretty hefty sum of money. But when it boils down to it, Skritter cant even compare to the most simple free apps when it comes to writing and recognizing characters.

Sorry for being so blunt about this, but this is a HUGE problem. Skritter forces advanced students to write stroke by stroke and limits them to writing the same way as a 1st year Chinese elementary school student, not giving them any opportunity to advance into a more fluid style of writing, while it allows beginners to place strokes wherever they want.

For advanced students, Skritter needs to evolve beyond the point of stroke by stroke recognition and see the character as a whole.

For basic stroke by stroke students, it needs to recognize the follow up stroke depending on the location of the previous stroke written. Sometimes skritter forces you to write the follow up stroke at the wrong location because it has no idea where the previous stroke was written.

This issue should have been resolved years ago, actually, it should never have been an issue to begin with. Please skritter team, resolve this issue once and for all because it really is a super serious problem.

Btw, the character in the first picture was 荷 Skritter is probably the only can recognize that one.

Just another example. Like I said, this is true for all characters:

Maybe it’s because I’m not a Chinese student but this doesn’t seem to be a huge problem to me. Students will compare their writing to Skritter’s and try to improve. This results in minor mistakes I feel it is unlikely for it to be as bad as that example. Also doing cursive Characters was never something Skritter claimed was able to do. They had to create a completely new algorithm to give it the ability to do Hiragana and it still needs more work on that. I don’t think you realize just how incredible it is that Skritter can do what it does.


I don’t feel what you’ve described is a serious problem or really an issue at all. Raw squigs has always been intended to add an extra layer of difficulty and rely more on the user comparing what they have written against the correct answer, then adjusting the grade if needed. Of course it still tries to recommend a grade and if you take too many errant swipes it’ll mark it wrong. It’s way more pleasant to have things be more lenient and have to self grade as wrong, rather than have it be overly strict and have to self grade as correct. In your example I would say if you can’t recognize the raw squig you wrote then manually adjust the grade to wrong. You are always going to be the best judge of whether or not what you wrote is something you actually know or not.

Pleco to Skritter is not really a fair comparison as they are accomplishing fundamentally different goals. Pleco uses a best guess algorithm and just displays results based on whatever character it thinks has been written, but it doesn’t evaluate how well that character has been written at all. I would not be able to read what your Chinese friend has written and my guess is if a beginner/intermediate student studying Chinese wrote that on a test for how to write 的 it would be marked wrong as it doesn’t really demonstrate an ability to write proper strokes.

As @ddapore99 mentioned, Skritter was never intended to support cursive or shorthand. It is a tool for learning to write characters so puts focus on writing individual strokes, not scribbling on paper quickly.


Just a minor addition to what Josh said, but handwriting input is very good at guessing sometimes. It will recognise much that is unrecognisable to a human, native speaker or otherwise. Here’s one example:

Well, let me put it to you like this. Skritter will give you a perfect score for the name written on top, but a wrong for the name written on the bottom (and it forces you to write it like that because it does not register the previous stroke you made, although you know that its completely wrong).

Skritter has a good algorithm (I am talking about the algorithm that chooses what character to study here), that is true, and thats why its hard for me to find something else, but justifying this and saying that its a small problem simply is not worthy a service like skritter that is made for practicing writing (skrittering, hence the the name).

So just because it can “guess” what you wrote makes it ok to write like that (completely wrong)? Now, sure, you can try to write it the way Skritter wants you to write it, meaning that without any regards to where you wrote the first stroke, it forces you to write the next stroke at a faulty location because it knows the "whereabouts“ of where you should write the next stroke, making the end result wrong. You can try writing like you wrote in that picture on your HSK exam, but I would not recommend it. Also, I dont know what app you used to write those dots, but that would be an exception. It probably was able it recognize it because of the fact that there are not that many characters with that many strokes (simplified) and strokes at that location split up to a left and right side character like 龍. Try that with a character thats has around 8-10 strokes (many more possible choices).

Really Josh? Come on man, I cant believe you are defending this. This is a problem with the app and Skritter in general and you wont even admit it? First of all, raw squigs is the only mode that actually lets you write the character, not just tap your screen somewhere nearby the area where the stroke should be and have skritter fill that in for us and tell us NICE, GOOD JOB.

Let me put it to you like this, Skritter is something of a teacher (or tool) that helps you learn how to write correctly and remember characters, right? If you had a piano program that would let you chose freely what notes to play with no regards to where you started playing making twinkle twinkle sound like a cat slicing its throat and tell you thats correct, does that mean that when you play it like that to an audience they will be able to recognize and enjoy what you play, I mean the app “evaluated” what I played correctly, right? Or even better, lets say skritter is a tool teaching you how to drive and forces you to take a left turn because it does not know what turn you just took, only that you turned and then force you to drive into a brick wall and then tells you GOOD JOB!

Skritter FORCES you to write strokes at the wrong location because it simply does not register where you wrote the first stroke and how you wrote it. I am at a pretty advanced level when it comes to Chinese, I used to have 4k known characters or something like that 5 years ago on Skritter before I had to reset everything because of Skritter being the way it is.

And you say that skritter “evaluates” how well my character has been written? It gave me a perfect score for that thing I wrote, is that Skritters evaluation? Actually, its the other way around, pleco (and pretty much any handwriting app) evaluates how your write your characters the way an actual person would evaluate it because it looks at the end result, it does not force you to write strokes at certain incorrect locations. It lets you finish the character and then tells you if its recognizable or not. If I am being the judge of what I write myself, then what exactly is the use of skritter? I might as well write my characters in ms paint and look at them myself and compare it to a picture then.

And writing like your are supposed to write after you reach a certain level is not “scribbling”, its actually how people write correctly in China, or are you telling me that Skritter knows how to write better than Chinese teachers and Chinese people in general? I have never had someone who can really write in Chinese get a good score in skritter, but I guess that is a good thing then? They are wrong and Skritter is right. The problem is that Skritter wont be the one evaluating any tests we take.

And for your remark about you getting a wrong on a test for that character that my friend wrote…? I did not mention that she works as a Chinese teach /facepalm so I am pretty sure that she knows how you can write and not write on a test. But sure, that is 草书, but skritter wont even allow you to write it 行书 or even 行楷书, which is how 8-9 years old might write, I.E people who have been studying how to write chinese for more than 2-3 years. How do you write in English? Do you write one stroke at a time for each letter, making each word you write take 30 seconds to finish? If you were forced to write like that and also forced to write your strokes at the wrong location making your T become an L, and also never be able to advance beyond that point, dont tell me it would not drive you insane.

Just because it would take you guys hard work to fix this issue, does not mean that it is not a serious issue and I am sure it would take a long time (I mean the beta has been in its beta stage for the last 5 years so I guess this would take around 150 years for you to implement).

I am one of the few users who have been your customer since the beginning and spent more than 1000$ on your product because Ive always had hope that it would evolve and become better with time, giving you guys the benefit of the doubt. But honestly, the things that have become better are small bugs, nicer looking UIs and stuff like that. NOTHING has been made to improve the writing recognition and requirements (which is the core of Skritter). Its way outdated and you know it, so please just admit that this IS a problem.

Now, as a possible and temporary solution that can be implemented quickly, give us the choice to write Chinese characters as a “fill in the blanks” mode so we can use our default keyboard apps to handwrite our characters since skritter is not up to par.

Hoping to help bring down the heat in here! I do understand where you’re coming from. Skritter wasn’t designed to be a cursive writing app (though some shortcuts are in place like in 糸 or 子 etc) which lets you combine strokes. It’s unfortunately not set up like an OCR to visually scan what you wrote and cross compare it as a best guess, which is why it’s stroke by stroke. If you’re using raw squigs, and have to reveal the character because you aren’t sure what to write, I recommend clearing the canvas and starting over from the beginning tracing over the font. If you aren’t happy with how your writing looks in raw squigs because you are writing fluently / sloppily, I recommend not using raw strokes. It’s meant to be a bit harder and not give you visual hints by revealing the font’s strokes as you write, not to be a cursive option. The thing you mention with a T becoming an L would happen if you revealed the character part way writing with raw strokes on, and if what you’re writing isn’t perfectly aligning to the font grid, it of course won’t match up. The system still uses relative placement based on what you wrote in raw squigs, and so if you continue writing to the end without revealing the character in raw squigs, there shouldn’t be a problem. It sounds like you’re looking for a cursive mode, or an OCR mode, and your very last suggestion about a possible solution is pretty good to be able to use something that does support a cursive / OCR mode, which is just not how Skritter is designed unfortunately.

I do hear what you’re saying about it being annoying that Skritter would accept something as correct when it’s clearly wrong, however in your examples it looks like you were purposefully writing it poorly opposed to accidentally writing it poorly. In the off chance you do write a character that poorly, you can mark it as incorrect giving you total control (I realize you know this). It is much better though to have the system think you’re correct when you’re not (less often), then for it to be very strict and think you’re wrong when you were correct (more often). I also hear your frustration about Skritter being around for so long and not having a cursive mode when it’s something you’ve really been hoping for.


I have also learned around 4k characters (starting from way back in 2009) and it has always been a tool to help me remember how to write characters using proper stroke order. We get a lot of feedback from users and what you are talking about here is just rarely a concern.

Skritter is not a replacement for perfecting pen/paper handwriting as it might appear in the wild. If you feel you already can remember the stroke order and meanings of everything then it’s possible you graduated beyond what Skritter can offer and might be better suited writing essays, having a teacher critique your character writing ability or some other more advanced method.

We won’t be supporting any other type of handwriting styles other than what is currently supported. We also have no plans of implementing any kind of solution that allows using the native device keyboard handwriting input as a replacement for writing cards.

We will continue to improve our current recognition using the existing input system. We already have flagged numerous characters and strokes that need improvement. We also recently overhauled our internal character editing tool which will help us better accomplish this goal.

Skritter forcing you to write things incorrectly is a serious issue though. You can report all specific instances to team@skritter.com so that we can get those added as bugs and fixed.

1 Like

Tangential, but interesting (at least in my mind) discussion regarding recognising something as correct in general:

There is no tool that can tell what a human would deem legible, even less what would be considered correct. There are probably many reasons for this, but the main one is probably that it can’t be modelled (no-one can describe in general what makes something readable and something not, which might also differ between people).

Perhaps someone could train an AI to do something like that, but the the second issue comes in: no serious effort has been invested in this area. Handwriting input took many, many years and enormous investments to get where it is today, but handwriting input doesn’t care about correctness, really, the goal is just to produce the most likely candidate. As we have seen, it can do that with input that is completely unreadable by a human… That is not a problem, because the goal of handwriting input is to guess what the person tried to write, which it is quite good at nowadays.

This is actually similar to speech recognition. I wrote a series of blog posts about using speech recognition on iOS and Android to practise pronunciation, and many of the same problems occur there, i.e. that given enough clues, the software is too good at guessing what the person is saying, meaning that you can have horrendous pronunciation which a human might not understand, but your phone can still type it out for you. In case anyone’s interested, the first article can be found here:

Using speech recognition to improve Chinese pronunciation, part 1


Skritter is designed to help you learn characters. It has to do that by breaking the characters down into strokes and providing feedback on a stroke by stroke basis. It therefore needs to allow quite significant lattitude with each stroke.

Inevitably this means that if you use raw squigs (and I wouldn’t use it any other way) the end product should look like you wrote it, not like a font.

Skritter relies on users to grade themselves on reading and definition cards and to correct gradings that are wrong on writing cards. If you’re writing cards like the examples shown then stop blaming skritter and grade the cards as wrong.


Well, it is sad that you have a " we will NOT improve" and a “we will force our students to write like 7 year olds for years and years” attitude, but sure, I can send you emails. Do you need one for each character? That will be about 5000 emails. The fact that the more fluent your writing become, the more difficult it will be to write correct characters in Skritter seems like a backward logic to me.

I dont know how skritter works, I did not program it and I have no idea what is happening behind the screen. But as a user, this is what I feel is happening:

Skritter has no idea what I am writing. It has some vague idea of the direction of a stroke, but does not care the least for the length of a stroke and not very much about the placement. Now here is the part that is the reason for 5000 emails: Since Skritter has no clue about how my first few strokes looks, it will at some point force me to make a stroke the way SKRITTER thinks that specific stroke should be done, the problem is that SKRITTER DOES NOT KNOW WHERE OR WHAT I HAVE WRITTEN PREVIOUS TO THAT STROKE, THUS IT WILL FORCE ME TO WRITE THE STROKE AT THE WRONG LOCATION IN RELATION TO THE CHARACTER!!!

Its like you have programmed skritter to only know the canvas and base everything on canvas placement and not how we write the character. Raw squigs is NOT free writing, it is “trace the invisible lines on the canvas writing”, except there are no lines, there are only dots, and as long as you do something around that dot, it will register that as a correct stroke and prompt you for the next stroke. Thats why I could write those insane characters above, all I did was do what ever I want as long as I did something at what skritter thinks is the correct canvas location.

Now, this is what I feel is happening as the user. Can you please confirm if I am correct or not?

If I am correct then WHY would you do that? Why would you not have skritter decide the correct location and size of a character based on the length and location of your first stroke and go from there instead???

1 Like

It’s been hard to tell based on your previous posts what problem you’re specifically trying to solve. You have jumped around to a lot of topics from wanting it to be more accurate when grading your raw squigs, but now it seems the issue is actually difficulty writing strokes after the first few strokes you’ve written are a bit off from how the they appear in the revealed character. Skritter does allow you to be a bit off and still complete things (see the below screenshot). We might need to make some tweaks, but we’ll need some specific examples of characters. For example, tell us one specific character, show us what you have written and which stroke it’s not letting you draw. It’s not helpful to just tell us to fix a vague problem without specific reproduction steps for a specific character.


1 Like

Actually, I dont completely agree with what you say. Chinese characters are very specific and needs to look a certain way, thus there is a certain set of rules you need to follow, like this line should not cross that line, or this line should not be longer than that line, if the length of line X is =3 then the length of line Y should be at least 6 but not longer than 8 etc, and this holds true if you write stroke by stroke the way skritter forces us to write and if you follow all those rules then the character would be written in a way that a human would deem legible. That is what I want skritter to do.

The reason I like hand writing input methods is not because they allow me to cheat and write sloppy and still get a a correct answer, it is because they allow me to write more fluently and in a more advanced manner.

Disagreeing with you and choosing not to do things your way is NOT “choosing NOT to improve”.

The team is clearly struggling to tread water on bringing functionality back to the level of the original iOS app while also adding some enhancements that they believe are important. While doing this they also need to cope with the day to day maintenance required on a system designed to work on multiple versions of multiple OS’s in an ever changing IT environment.

We all get frustrated at the slow pace of development and the long time it takes for our preferred enhancements to appear - if they ever do. But it’s important to remember that system development and maintenance is expensive and takes a long time - particularly when you’re trying to cater for so many platforms. Just trying to get and maintain acceptable performance in a system like this could easily occupy the equivalent of a full time developer. In a large organisation I’d be calling on a range of specialists (DBA, infrastructure SME, systems architect, peer developer for code review) to assist in tuning performance if the budget allowed.

It’s important to remember that skritter is a small team who would probably not have started this venture if they had appreciated the amount of work of involved. The subscriptions won’t see any of these guys driving Ferraris. Their charging model also sees a lot of users like me who haven’t paid for a long time because my due cards count is so out of control that I don’t dare add cards.

We (or more accurately you) contribute to the cost of development, maintenance, and operation but the team needs to take all the user input they receive and make their own decisions on which improvements to spend their limited money on. (And yours is a money pit.)

I don’t always agree with their decisions but I respect their right to make those decisions. I certainly won’t accuse them off not wanting to improve because they don’t want to implement one of my pet improvement requests.


Actually, the reason I created this thread was because I kept writing characters the way I write them by hand, I.E. cursive, making more than on stroke without lifting my finger and always getting them wrong although (in my mind) I wrote them correctly, and skritter kept told me that I was wrong, which made me frustrated to the point of creating this angry thread. I now understand that it will not happen.

The placement issue is true for some characters when you start out at the “wrong” part of the canvas, kind of like you did with 品 in your example and then skritter wants you to write the next stroke at what will be the wrong location according to the character, but I am happy to hear that you are working on that.

But let me come with some constructive criticism instead. First of all, where did the clock go in the beta? I cant seem to find the option to turn it on. I try to set certain skritter goals every day and the lack of a timer makes that difficult. Another way to track your daily skrittering would be to write x characters correctly, for example, my daily goal would for example be either 30 min of skrittering, or writing 500 characters/words correctly. I really feel that its something that needs to be added asap to the beta, because without it, its really hard to track how much you have skrittered in a day. It would also be cool if this would be in a “count down” mode. Lets say your goal is 60 min, instead of starting from 1 counting up to 60, it would be much better to count down from 60 so that you can see how much time you have left, this makes it more fun imho, same things for goal number of characters. Of course, you should always have the choice of customizing this to your own needs, like if you want the timer/character goal or not, and if you want it to count up or down. Also, it might not have to be a daily goal but a weekly/monthly goal, like this month I want to write 10000 characters correctly. For me, this would be something that would encourage me to write more characters each day. Also, perhabs some kind of encouragement could me added like “You have reached 50% of your weekly goal! Keep up the good work” or “You only need to write 10 more minutes today, dont give up!” etc.

Another thing that may or may not be included in the beta (and I simply dont know how to turn it on) would be the ability to cancel your last stroke(s) (not the whole character).

A third third thing would be the ability to customize what you want to see on your screen when you write the character. Now you can chose if you want to see the pinyin or not and the definition, it would also be nice to be able to add example words/sentences without having to press the (i) button. For example, If I am writing 品 it would be awesome if we could have the option to see some words using that character, like: "产~”,“~质”,“样~” etc, that would actually be super useful as it would let you understand the meaning of a character in a better way. Of course, there is only room above the canvas to add so much, but maybe the more you add, the smaller the canvas size could be.

A fourth thing would be a point system that could show up next to your profile, like the more characters you get write correctly, the more points you get. Maybe you could get 2 points for writing a character correctly, and then you might lose 1 point when you get it wrong, then maybe you could level up. It might sound childish but it works, just look at all video games these days, why do you think wow was so addicting? This instantly stimulates your reward system in your brain, and you will want to keep working to get to the next level so that you can show off in the community. But different from wow, you actually learn something from these level ups.

A fifth thing could be the ability to sort the order you study characters according to certain standards, maybe you could start with all the 1 stroke characters, then move on to 2 strokes, then 3 etc. As you know, many characters are built up of 2 or more smaller characters. Like if you have already learned the characters 京 and 尤,learning 就 will be much easier because that way the first time you see 就 as a new character, you will simply think, ahh, thats easy, its 京 and 尤 together. Or if you know 氵and 九 and 氿 and 木, learning 染 will be a piece of cake.

A sixth thing would be random test so that you can test your overall Chinese level. Maybe randomly pick a hundred words, characters and 成语 from one of the HSK levels and let us see how well we can do.

These are only a few things on the top of my head.


Hi Mike,

I worked as a software developer for more than 25 years now and it does not matter to me if a business is large or small and if the people are working hard or not. I’m a customer not a shareholder. Nowadays I hear a lot “we are working on it”, but I think Skritter should be clear to us what and when to expect. People are rightly frustrated if a company present a beta version to the users and then ask them to wait for future improvements.

1 Like

Agreed. I’ve made my views on the quality of their communication clear in the past and it’s not something they really understand. Newsletters and social media do not address the problem.

I’m a great believer in transparency in terms of defect status and priorities and timeframes in terms of both defect remediation and enhancements. Preferably with timeframes but I do appreciate that they can be challenging.

There are lots of tools such as Jira or github which can be set up properly to help get the user community involved in voting on defects and enhancements as well as providing feedback from the development on their priorities and the status of specific items.

Chatty forums don’t really do it for me and don’t give people a clear view of what’s happening.

Maintaining the status of large numbers of issues is time consuming, but I think it’s key to having your clients/users on your side.


Although this was not really one of the points I brought up here, but I must admit that this certainly is a problem. I dont understand the whole deal about the secrecy about release dates. I personally work as a supervisor at a Chinese company making designer clothes, and everytime I hold a meeting with the staff, making sure that they are on point and things are going in the right direction, I want to hear numbers and only numbers, I dont want to hear “around xx date” or “about xxx models” I want to know how many models we will be able to produce in x days and if we will be able to meet all deadlines, and if not, I always try to work out a way to solve the issues that causes delays.

Skritter is not my employee, but I am sure they have someone like my at their company that makes sure there is a plan in place and that everyone is sticking to that plan, and that all issues as soon as they arise, there is nothing worse than a lingering issue that keeps growing into a big issue causing all kinds of problems later on.

Anyway, I am pretty sure that the Skritter team has a fairly good estimate of when certain things will be complete and how the process is going, and if they dont, they need to get their act together and get organized.

The only reason I can think of for them to be reluctant to release information about release dates is that relieves a lot of pressure on the developers, but sometimes pressure is a great tool to make things happen. Not meeting a deadline is a big deal and a failure, but we are not talking about a factory expected to produce 15000 pair of pants before the 1st of decemeber so that they will be able to reach all the retailers in good time before christmas. I believe the Skritter uses are a bit more forgiving than that, and if you miss the deadline with a few days, its not the end of the world.

But the point is, GIVE US THE EXPECTED RELEASE DATES. It wont cost you anything and it will make the users happy. win win