I pulled up the first text I found from the site:
> according to its archive...
Let's say I mistype and don't double the first "c", but otherwise type entirely correctly.
> acording to its archive...
This would be counted as having everything wrong except the first 2 characters, which doesn't feel like a good reflection of my accuracy.
I know this is a hard problem because I don't think there's any simple guaranteed way to re-align the string to account for a possible deletion or insertion, particularly if there are more mistakes in the following text, but finding and using some sort of accuracy-maximizing alignment would be great to have.
Oh I see what you meant!
Yes - this is a very, very good point and something I actually spent so much time analyzing how I could implement a solution to this.
I think I spent over a week at one point. I refer to this issue as an off-by one or off-by two inaccuracy. Just as in the example you provided, the user only misses one character but types the rest of the word correctly (however because they missed one, the whole word is not mistyped).
This is indeed a very hard problem and in addition to the example you provided there are many other cases where this type of off-by one (or off-by two) mistyping can occur. At this time, I've put that problem on hold. I tried a few solutions but my friends said the UI was too confusing - the general initial feedback I received is to just keep typing as natural as possible; no stopping a user when they make a mistake, no guard-rails of any kind. Just mimic real typing as much as possible.
Issue is, it's one thing to implement the solution to this but another is how to correctly display this to the user. In essence, the text is just a collection with each character having an index. Per each character we measure everything; milliseconds taken to type, errors made for that character, whether it was corrected or not, etc. But if we're handling off-by one or off-by two, displaying this to the user in a non-confusing way is really hard. UX is hard haha