YouTube comment analysis: a method and the tools
Reading 50 comments gives you a feeling. Analyzing 5,000 gives you evidence. This is a method you can run on any channel, your own or a competitor's, with free tools or an API.
Step 1: decide the question
Pick one: What do viewers ask for? What do they complain about? How do they feel about a product shown in the video? Did a format change land well? The question decides your sample.
Step 2: sample the right comments
- Top comments (sorted by relevance) show what the audience agrees with.
- Newest comments show what people say now, after the first wave.
- For a channel, take the last 10 to 20 videos so one viral video does not dominate.
- Include replies only if you are studying debates. They double the volume and skew sentiment.
The Data API's commentThreads.list supports both sort orders and 100 threads per page at 1 unit. Google yt-dlp can collect comments with --write-comments. source
Step 3: clean
- Drop exact duplicates and comments under three words, unless you are counting emoji reactions.
- Drop the channel owner's own comments, and pinned promos.
- Flag spam patterns: links, "check my channel", repeated text across videos.
- Keep the like count. A comment with 2,000 likes speaks for many people.
Step 4: sentiment
For a quick, free baseline, VADER is an MIT-licensed, rule-based sentiment tool "specifically attuned to sentiments expressed in social media". Its README classifies a compound score of 0.05 or more as positive, -0.05 or less as negative, and anything between as neutral. VADER
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
an = SentimentIntensityAnalyzer()
def label(text):
c = an.polarity_scores(text)["compound"]
return "pos" if c >= 0.05 else "neg" if c <= -0.05 else "neu"
Rule-based tools miss sarcasm and in-jokes. For nuance, have a language model label a sample of 200 comments, check 50 of them by hand, then run it on the rest.
Step 5: themes and questions
- Questions: keep comments that contain "?" or start with how, what, why, where, can, does. These are your next video ideas or FAQ entries.
- Themes: group comments by topic. A simple start is counting the top two-word phrases after removing stop words. Better is asking a model to assign each comment to one of 8 to 12 themes you define after reading a sample.
- Products and names: count mentions of brands, tools and people. Spikes tell you what viewers noticed.
Step 6: weight and score
Weight each comment by its likes so popular opinions count more: weight = 1 + log10(1 + likes). Then report:
| Metric | Formula |
|---|---|
| Comment rate | comments / views |
| Weighted net sentiment | (sum of pos weights minus sum of neg weights) / sum of all weights |
| Question share | question comments / all comments |
| Theme share | weighted comments in theme / all weighted comments |
Compare these across videos, not as absolute numbers. A tutorial channel will always have a higher question share than a vlog.
Pitfalls
- Language mix. Run language detection first and analyze each language on its own. English-only tools score other languages as neutral.
- Emoji-only comments carry real sentiment. Map the common ones before you drop short comments.
- Sorting bias. Top comments lean positive and funny. If you need complaints, also sample by newest.
- Small samples. Below about 200 comments, one angry thread can swing the result. Report the count next to every number.
Step 7: write it up
One page: the question, the sample (videos, dates, comment counts), three findings with two or three quoted comments each, and one action. Quote comments without usernames.
Doing it with ScrapeIO
Pull the videos with the channel videos API, then the comments for each with the YouTube comments API and the comment replies API. If you work in Claude Code or Cursor, the hosted MCP server at /mcp lets the agent fetch comments and label them in one session; setup is on the agents page.
Sources
Checked on 8 November 2026 from each vendor's own pages. Prices and limits change; follow the links before you decide.
- https://developers.google.com/youtube/v3/docs/commentThreads/list
- https://github.com/yt-dlp/yt-dlp
- https://github.com/cjhutto/vaderSentiment
100 free credits, no card. Credits never expire.
Get API key