Sentiment and entity analysis answer two related but distinct questions about a piece of text: how does it emotionally read, and what is it actually about, in terms of the specific real-world people, places, organizations, and things it names. This tool runs both analyses using Google Cloud's Natural Language API — a trained machine learning model, not a keyword-matching heuristic — and returns the result live.
Sentiment: score and magnitude are two different measurements
It's worth understanding both numbers this tool returns, because they answer genuinely different questions and neither alone tells the full story. Score runs from -1.0 to 1.0 and captures overall emotional polarity — negative, neutral, or positive, and how strongly. Magnitude is a separate, non-negative number with no fixed upper bound that captures the total amount of emotional content in the text, independent of direction. A short, purely factual sentence has both a score near zero and a magnitude near zero — there's simply not much emotional content to measure either way. A long piece of writing that swings between strongly positive and strongly negative statements can end up with a score near zero (the positive and negative cancel out in the overall average) while still having a high magnitude, correctly reflecting that the text is emotionally intense even though its net direction is balanced. Reading only the score and ignoring magnitude can miss this distinction entirely — two pieces of text can share an identical, neutral-looking score for completely different reasons.
Why entity extraction is genuinely useful beyond "what does this mention"
A simple keyword count tells you how often a word appears; entity extraction tells you something meaningfully richer — which specific, real-world things a piece of text is actually about, disambiguated and typed (a person, an organization, a location, a product, a work of art, a date, a price), along with a salience score estimating how central each one is to the text's overall meaning rather than just how frequently it's mentioned. A name that shows up once in a passing aside gets correctly scored as low-salience; the actual subject the piece is centrally about gets a high salience score even if a more casual reference technically appears more often in raw count. This distinction between frequency and centrality is exactly the kind of understanding modern search engines and AI systems build about a page's content — not "does this page contain this word" but "is this page actually about this specific entity, and how confidently."
Why this connects directly to SEO and AI-SEO
Search engines moved past pure keyword matching years ago, building instead toward an entity-based understanding of the web — Google's Knowledge Graph is the most visible expression of this, but the underlying entity-recognition capability runs throughout modern search ranking and increasingly through the AI systems that summarize and cite web content. A page that discusses its subject using clear, consistent, specific entity references — naming the actual product, person, organization, or place by its real, disambiguated name rather than vague pronouns or inconsistent alternate phrasings — tends to be understood more precisely by these systems than one that stays vague. Running your own draft content through an entity extractor before publishing is a practical way to check this directly: does the tool correctly identify the entities you intended to be central to the piece, with reasonably high salience? If the entity you consider the actual subject of the piece comes back with low salience, or doesn't get recognized as a distinct entity at all, that's a genuine, actionable signal that the writing may be less clear about its own subject than it feels while drafting it.
Reading entity types correctly
The API classifies each detected entity into one of several types: PERSON, LOCATION, ORGANIZATION, EVENT, WORK_OF_ART, CONSUMER_GOOD, DATE, NUMBER, PRICE, PHONE_NUMBER, ADDRESS, and a catch-all OTHER for anything that doesn't fit the more specific categories. This typing is itself useful information beyond simply confirming an entity was detected — a piece of content meant to be organization-focused that comes back showing its highest-salience entities as PERSON types instead might be inadvertently centering an individual's name over the company or brand it was meant to be about, which is worth knowing before publication rather than after.
What sentiment and entity analysis can't tell you
Neither measurement judges factual accuracy, writing quality, or persuasiveness — a factually wrong but confidently and neutrally worded claim scores exactly the same as a correct one, since sentiment and entity analysis operate purely on language patterns, not on verifying truth. Neither measurement understands sarcasm particularly reliably either — sarcastic text that reads as positive on its surface wording but means the opposite is a well-known, genuinely hard problem for sentiment models generally, not just this specific tool. Use this analysis as one useful, mechanical signal about tone and topical focus, not as a complete substitute for careful human editorial review.
Setting this tool up requires a Google Cloud API key
Unlike most tools on this site, which run entirely in your browser with zero external dependency, sentiment and entity analysis at production quality requires a trained language model — something Google Cloud's Natural Language API hosts and serves, called here through a small server-side function so the credential that authorizes those calls is never exposed to a visitor's browser. If you're running this codebase yourself, see this tool's setup guide for exactly how to get a free-tier API key from Google Cloud and configure it.
Unlike this site's purely client-side tools, every analysis here makes a real, billable call to Google Cloud (within a generous free monthly quota, then billed beyond it). If you're self-hosting this codebase, keep an eye on usage and consider Google Cloud's own budget alerts — covered in this tool's setup guide — so unexpected traffic can't run up an unexpected bill.