Accidently marked hundreds of words as "known": This can't be undone?

I started using Lingqs this week. Earlier today. I don’t know how it happened but I accidentally marked a whole lesson as known (many hundreds of words). I’ve looked through the forums, and it seems there isn’t a way to correct this as of a few months ago.

Is there any way to undo this without clicking through each word? Can anyone confirm?


This comes up often enough in the forums that you would think LingQ would consider this to be an opportunity to improve the user experience.


While i kind of agree with you, as i had the same incident happen to me when i started using lingq, learning curve i guess, i suspect the counter argument would be just keep reading and consuming material, and when you encounter a word you had marked as known that you don’t know, you can set it back to learning.

in the settings, i turn off paging moves to known and auto lingq creation.



see solution here


Thank you so much, everyone! That script looks so useful @roosterburton . I can’t comment on it’s effectiveness, as I just clicked each word, and set to “1” with the keyboard shortcut.

I understand that developing, testing, and deploying a code change is costly. An “undo” function can be impractical depending on how data is stored. I wish that Lingq offered better management of words (a list of “known” words seems like such a basic feature) and data (being able to import/export all Lingqs and known words… that would be a big ask.

A very reasonable and modest change Product Development could make to prevent this issue in the future is:

  1. Change the default setting for “paging moves to known” from ON to OFF.
  2. Change the caption to include a warning of the consequences of selecting this option.


You’re quite right, of course. I got caught by this twice myself.

It’s not hard to fix. It’s just a stubborn stupidity that the LingQ team insists upon.

There is no excuse IMO.


Great find with resetting the values. I’ve updated this slightly to take in words instead instead of resetting all known words. I don’t know if you were planning to do something with “headers”, but think this works a little better. Let me know what you think. I’ve done minimal testing, but also minimally editing your functions.

   async function processLessonWords(words, headers) { 
      for (const wordObj of Object.values(data.words)) {
        if (wordObj.status === "known" && words.has(wordObj.text)) { 
   async function main(words) {
     await processLessonWords(new Set(words.trim().split(" ")))
     console.log("All fixed!")
   main("abc def ghi")

If you have more than one line of known words on the “Lessons Complete” page,

  1. Click “Show all”
  2. right click and click “Search Google” (or whatever your browser equivalent is) to get rid of new lines
  3. copy all words in your search box
  4. run as main(“words you copied”)

Otherwise, copy the words selectively as you wish

  1. In the console, main(“space delimited list of words you wish to reset”)

It has an issue with the stats for the story, but I think that’s okay until LingQ figures something out.

1 Like

Thanks for the update @applegone

headers as a parameter is an oversight and not required

I think my solution is still preferable (because you don’t need to insert a word list) but there is a fault to it and there could be an optional use of inserting a word list built in.

The flaw is If the word was marked known from a different lesson without LingQing then it will be set to new.

There is no way to identify which lesson marked which word known. (To my knowledge) Even though this is a required parameter to mark words known.


Aye, this is why I considered the selective set instead of all known words in the story. I do have another thought about resolving this since I have an endpoint, but it’s late. :yawning_face:


I think it would be beneficial to add a feature “turn off finishing lessons makes words known”.
It happened to me as well sometimes that i accidently clicked one too many times on the next button and finished a lesson I didn’t meant to.


When you accidentally mark a lesson as known it tells you a list of words it marked known.

I have a screenshot, I will update with a photo of that when I can (at work, on a lunch break, so a don’t have it on me.)

Edit: Here’s that screenshot @roosterburton:

**Note: It does say “You’ve created___ LingQs” and “added ___ known words.”

This is what appeared when I accidentally clicked finished, but I’m not sure if this was the first time I accidentally clicked finished or the second time I accidentally hit finish (same lesson). So this might not be as helpful as I thought.


This is correct as long as you don’t navigate away from the “Lesson Complete” page. This is what my method was targeting. If you’re on the same page, follow my instruction set, and you’ll be able to reset those words.


In retrospect, I may have encountered “complete lesson moves to known” feature instead of “paging moves to known”. I was thumbing and skimming through a lesson, and likely clicked “lesson completed” which is the same location on the screen as “next page”. Took me way too long to figure out it was this and not a browser issue or issue with scripts.


No, I did that, but when listening to audio, it still racked up hundreds of known words that I don’t know. I still don’t even know the full alphabet, but according to LingQ, I have an amazing vocabulary. It’s not in any way a helpful metric, and is totally misleading. Correcting their mistake, penalizes the user, bringing your scores down, with no way to recover, unless you lie and say you’re more familiar with a word than you actually are. It’s not helpful. They shouldn’t have the default set to you knowing a word simply from seeing it once, and you unwittingly following the prompts to move forward, or ending the lesson. SO MANY people complain about this, but they refuse to address it. The issue has been listed in the forum countless times over multiple years.


The same issue. Added about 1k of new words to known))


But there is no real “penalization”: the artificially high score that the user got by accidentally marking the lesson as known was not a true achievement anyway, so when the error is corrected, the user is not losing anything that was real. Bringing the score back to reality is not penalizing the user: it’s merely correcting an error.

And there is an easy way to recover - not by trying to game the system in order to “reverse” the error - but instead by simply using the system as it was designed to be used. Even if a user has a thousand unknown words marked as known, reading some more stories and marking any false “known” words as LingQs will pretty quickly bring the system back into equilibrium.

But since this issue seems to come up fairly regularly, I think maybe the folks at LingQ do need to warn new users not to mark lessons as known before the lesson is actually known. The problem is, do they do this in a tutorial (which most new users will ignore) or with a bright neon flashing sign whenever a new user starts their first lesson?

What I’d hate to see, as a result of this, is, every time we click on “next page” is an unskippable “Are you sure?” warning, wasting everyone’s time in order to cater to those who haven’t figured out how to use LingQ properly.


So how does “bringing the score back to reality” work for the user? The user has to remember not learning all those words and clicking them back to Yellow 1 as well as regret the dopamine high of seeing a high score as a real achievement.

Which doesn’t mean that much in the Long Run, I suppose, except the user has been disappointed and learned not to trust LingQ in the most basic of matters – not changing one’s data behind one’s back.

Then there is the non-negligible matter of damaging a user’s efforts to build a Streak, which is a Big Deal in LingQ’s laudatory effort to encourage consistency in the quest to learn a language.

After LingQ has incompetently inflated a user’s Coin Score to 32x for one day, it’s going to be difficult to hit one’s Streak on that lesson’s text for the next month.

Best move on to the next lesson … because LingQ was incompetent.

1 Like

The user doesn’t “have to remember” anything. They just have to click on unknown words in any text to get a definition and to mark those words as unknown, as described in the knowledge base here: Vocabulary / SRS Review.

I mean, it’s what they’re doing anyway. It’s hardly rocket science.

And life is full of disappointments, major and minor. Most adults are mature enough to take tiny inconsequential disappointments like this in their stride, and are able to refrain from cutting their nose off to spite their face by ditching one of the best language-learning tools in existence.

If they can’t take such disappointments, maybe they should hide themselves away in their parents’ basement and not expose themselves to this awful world we live in where… checks notes… language learning software developers expect users to use their software as it was designed to be used, and as is clearly explained in the app’s knowledge base.

And the accusation that LingQ is “changing one’s data behind one’s back” is complete nonsense, unless you’re the kind of person who turns his back to the computer while he’s paging forward.

And if it damages a user’s streak, it’s almost certainly going to happen when the user is brand new to the system - on day one. It’s hardly going to happen on day 150 of a streak, now is it - I mean unless the user is completely stupid or clumsy with his/her mouse clicks.

1 Like

People really get in a tizzy over this. I understand it can be frustrating and unintuitive, but it just isn’t that big of a deal in the grand scheme of things. Even if a word is known you can make it a LingQ anytime, so just do that next time you see it. Not that I disagree that there isn’t room for improvement on the UX, but calling the app or the team building it “incompetent” over this is a bit much.