Count the loaded words in your text
Paste English text and press the button. The result shows how many of the listed positive words and how many of the listed negative words were found, and whether the first number is larger, smaller or equal.
What it actually does
Two lists of English words are written into the page's script. The script lowercases your text and, for each of the 29 listed words, asks a single question: does this sequence of letters appear anywhere in the text? Every list word that appears adds one to its side's total, no matter how often it appears. Then it compares the two totals.
That is the whole method. It is useful for one narrow job: spotting that a draft is carrying obviously loaded vocabulary, or showing a class how word choice reads on the page. It is not a measure of tone, intent or emotion, and it should not be described as one. The text stays in your browser; nothing is sent to a server.
The two word lists in full
These 29 entries are the entire vocabulary. Nothing else is recognised, and nothing is added or learned over time.
| Side | Count | Entries |
|---|---|---|
| Positive | 14 | happy, joy, love, great, awesome, fantastic, wonderful, good, amazing, excellent, positive, smile, delight, peace |
| Negative | 15 | sad, angry, hate, terrible, awful, bad, horrible, ugly, negative, pain, cry, fear, upset, worst, depress |
Two consequences follow from the list itself. The entry depress is a stem, so it also matches "depressed", "depressing" and "depression". And because positive and negative are themselves entries, a sentence that merely discusses tone — such as this one — can register a match on both sides.
The matching rule
- The whole text is converted to lower case, so capitalisation is ignored.
- Matching is on raw substrings, not whole words. There is no check for a space or punctuation at the edges, so a list word hidden inside a longer word still counts.
- Each list word scores at most 1, however many times it occurs. "happy happy happy" gives a positive total of 1.
- The highest possible totals are therefore 14 positive and 15 negative, whatever the length of the text.
- More positive matches than negative gives "Positive"; more negative gives "Negative"; equal totals — including zero on both sides — gives "Neutral".
Worked examples
Each line below is the exact output of the function for that input.
| Input | Output | Comment |
|---|---|---|
| The team did a great job and the result was excellent. I love the new layout. | Mood: Positive | Positive Words: 3, Negative Words: 0 | Matches great, excellent and love. The kind of text it handles correctly. |
| The food was not good and the service was not great. | Mood: Positive | Positive Words: 2, Negative Words: 0 | Wrong. "not" is not in either list and negation is not detected. |
| She finished the painting of the bad weather in Spain. | Mood: Negative | Positive Words: 0, Negative Words: 2 | Partly wrong. "bad" is a real match; the second comes from "pain" inside "painting" and "Spain". |
| Great, another delay. | Mood: Positive | Positive Words: 1, Negative Words: 0 | Wrong. Sarcasm is invisible to a word list. |
| happy happy happy | Mood: Positive | Positive Words: 1, Negative Words: 0 | An edge case: repetition does not raise the total. |
| Es un dia maravilloso. | Mood: Neutral | Positive Words: 0, Negative Words: 0 | No match. "Neutral" here means "nothing recognised", not "balanced". |
The on-screen result also carries a face symbol and a colour — green, red or blue — after the word Positive, Negative or Neutral.
Where it goes wrong
- Negation. "not good", "never awful", "hardly amazing" and "no pain" all score as if the negating word were absent, so the result can be the exact opposite of the meaning.
- Sarcasm and understatement. "Fantastic, the server is down again" scores positive. Irony depends on context the script never sees.
- Words inside words. "painting" and "Spain" contain pain. "Badge" and "badminton" contain bad. "Crystal" contains cry. Each of those scores a match.
- Vocabulary outside the list. "Furious", "devastating", "appalling", "thrilled", "superb" and "grateful" are all invisible. A furious complaint using none of the 29 entries comes back Neutral.
- Non-English text. The lists are English, so Spanish, Hindi, Arabic or Chinese text normally returns 0 and 0 — unless an English letter sequence happens to appear inside a word.
- Who is being described. "I hate that she was treated badly" is about someone else's conduct, but it reads as negative wording from the writer.
Limits
There is no score, no percentage and no confidence figure — only two small integers and a comparison. The lists cannot be edited from the page, no weighting distinguishes "good" from "fantastic", and emoji, punctuation, intensifiers such as "very" and emphasis such as capital letters are all ignored. Sentence structure is ignored too: the text is treated as one undivided string, so the tool cannot say which sentence a match came from.
It also performs no spelling, grammar or readability check, and it does not rewrite your text or suggest alternatives.
Questions
Why does longer text not produce bigger numbers?
Because each list word is counted once. A 20-word note and a 20,000-word report are both capped at 14 and 15. That also means the totals are not comparable between texts of different lengths.
What does "Neutral" mean?
Only that the two totals are equal. Zero against zero and five against five both display as Neutral, and they mean very different things. Read the two numbers rather than the label.
Can I trust it to screen reviews, messages or applications?
No. A method that scores "the food was not good" as positive is not fit for any decision about a person or a piece of work. Use it to prompt a reread of your own wording, nothing more.
How would I check a result?
Search your text for each of the 29 entries listed above and count the ones you find. That is exactly what the script does, so your count and its count should agree. Where they differ, you have found a substring match inside a longer word.
Is my text uploaded or stored?
No. The counting and copying code runs on your device and contains no request to any server. Copying places the text on your system clipboard.
Reviewed October 1, 2026. Calculation methods and corrections
