Duolingo coding flaw.


I discovered a pretty significant flaw in the Duolingo skill tree code, so I thought I would report it here in as much detail possible.

First some prerequisites, so we are all on the same page: As you know, the skill tree for a language consists of several sets of skills partitioned by checkpoints. In order to work on a skill, the skill must not be past a checkpoint that you haven't passed, and you must have completed the skills that are directly prior to the one you wish to work on. In order to pass a checkpoint, you must first complete all this skills in that section.

Now for two quick examples to show how this system is intended to work during normal operation: Say that I am just starting the Spanish tree, and I have completed Basics 1, and Phrases. Now suppose that I wish to work on Animals. At that time I would be unable to, because even though it is not past the checkpoint, I have not completed the skill directly prior to it, namely Basics 2. Now suppose that instead of wanting to work on Animals, I instead want to skip to Clothing, which just past the checkpoint. There are now two ways for me to do this: First, learn every skills in order in my current section to pass the check point, or take a single test, to test out of my current section and move past the checkpoint.

Now for the error: When you are on a skill page which has the lessons for that skill and the Tips and notes section, the page will have a URL such as: In this case the URL is for the skill Numbers 1, in the Hebrew language tree. I was messing around today, and discovered that you could type in the URL for a locked skill, and it would allow you to work on the lessons in it. Interestingly, this only works for locked skills past your current checkpoint. Now this doesn't seem like a significant error at all, however it gets more interesting. If you manage to complete the locked skill you jumped to, Duolingo will recognize it as completed, and additionally unlock all the skills up to the one you jumped to. In my case, I was Numbers 1 in the Hebrew skill tree, and jumped to Comparison (a skill with only one lesson). After I guessed my way through it using the hints, Duolingo unlocked all 22 locked skills that were between Numbers 1 and Comparison.

Now you may be thinking "What's the big deal, isn't this equivalent to taking a test to place out of those skills?" However, not only is a place-out test far longer than a single lesson, it also works to include vocabulary and grammar from all the skills in the sections that you which to place out of. In my case, I only had to go through a single very short lesson, which mostly consisted of the introduction of a few new words, and so was exceedingly easy to complete, even though it was far ahead in the tree.

Here are a few more details on the error: When I say it unlocked the skills that were between the current skill I was at, and the one I jumped to, I do not mean that it completed them, only that they turned from grey, to colored, and that I was allowed to work on their lessons. I ran another test on the Esperanto tree. I was on the skill Phrases, and I jumped to the skill Infinitive, which contained two lessons. I completed one of the lessons, and then went back to the skill tree, where it appeared highlighted and showing the numbers 1/2, indicating that it was unlocked and I had completed one of the the two lessons. Now that it was highlighted, I could click on it directly without having to type out the URL. I then logged out of my account and logged back in. Infinitives, was no longer highlighted, and did not show the 1/2. I jumped to it again using the URL and found that it showed that I had completed the first lesson. I then went back to the skill tree and Infinitive was highlighted again and showing the 1/2. I then clicked on it and completed the other lesson. I was given two lingots (which is normal when one completes a skill) and returned to the skill tree. Not only did the skill register as completed, all the other skills between Phrases and Infinitives were highlighted and unlocked.

I hope this information is useful for debugging. If you have any questions, ask me, and I will answer them to the best of my ability.

Edit: By the way, I did not post this to advocate cheating the system, but rather I wished to aid in the repair of the code by including as much relevant information as possible.

June 27, 2017


I suspect that the reason Duolingo hasn't bothered to fix this is that, even if you regard this as "cheating," the people doing it are only cheating themselves. Or confusing themselves, as the case may be.

People who want to follow Duolingo's protocol can just proceed the same way they would anyway.

June 28, 2017

Yes, I think you are right. Cheating the system in this way will only work to harm the user.

June 28, 2017

This bug has been around for ages and Duolingo has taken no action on it. It does not work for all languages, i used it to unlock the whole French course but could not unlock the Spanish or some of the other courses that I am working on.

June 27, 2017

Indeed, it has always been possible. ;)

June 27, 2017

I can confirm that accessing the link to a locked skill unlocks it on the en→sw tree.

June 27, 2017

Haha just unlocked two new Portuguese skills :D

June 28, 2017
Learn a language in just 5 minutes a day. For free.