Email Spam Score Checker

Paste a raw email, an HTML body, or plain copy and get a 0-100 spamminess score with the exact rules, weights, and counts behind it — computed in your browser, never uploaded.

Try:
Spam score report

About this tool

Email Spam Score Checker gives you a private, deterministic pre-flight score for suspicious or draft email copy. Paste a raw RFC 5322 message, an HTML body, or plain text and it reports a 0-100 spamminess score where higher is worse.

The report is intentionally transparent: every fired rule is listed with its point value, so you can see whether the risk came from trigger phrases, uppercase shouting, link density, shorteners, suspicious headers, authentication failures already present in Authentication-Results, hidden HTML, or other explainable signals. It does not contact DNS, blacklists, seed inboxes, SMTP servers, or any reputation service.

Worked example

Paste this message and keep the default format=auto, report=detailed, and check_headers=true:

From: "[email protected]" <[email protected]>
Return-Path: <[email protected]>
Reply-To: [email protected]
Subject: Verify your account
Authentication-Results: mx.example.com; spf=fail; dkim=none; dmarc=fail

We detected unusual activity. Please confirm your account within 24 hours or your account will be closed.
http://192.0.2.9/login

The output highlights the score band, message stats, and rules such as authentication failure, From/Return-Path mismatch, Reply-To detour, credential-pressure phrases, suspicious TLDs, insecure links, and IP-address URLs.

Limits and edge cases

FAQ

Is this the same as SpamAssassin or an inbox placement test?

No. It is a local heuristic checker with a published set of rules and weights. SpamAssassin, DNS reputation, RBL checks, and seed-inbox placement require server-side data or network lookups, which this browser-local tool intentionally does not use.

Why can a legitimate newsletter get a non-zero score?

Marketing email often contains some spam-like signals: many links, promotional phrases, unsubscribe headers, images, and tracking pixels. A non-zero score is not automatically bad; use the rule list to decide which signals are expected and which ones are worth changing.

What does the header checker actually verify?

It inspects pasted headers such as Authentication-Results, From, Return-Path, Reply-To, Message-ID, Date, Received, and List-Unsubscribe. It does not query DNS or validate cryptographic signatures itself; it only reads results already stamped by a mail gateway.

When should I use `format=html` or `format=text` instead of auto?

Use format=html when you paste only an HTML body and want HTML-specific rules such as image-heavy content, hidden text, tracking pixels, and anchor/href mismatches. Use format=text when the paste is plain copy with no headers and any angle brackets should be treated as text.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool email-spam-score 'From: Deals <[email protected]>
Subject: FINAL NOTICE!!

ACT NOW to claim your FREE GIFT of $50,000 CASH!!!'

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/email-spam-score/?email=From%3A%20Deals%20%3Coffers%40grabber.top%3E%0ASubject%3A%20FINAL%20NOTICE%21%21%0A%0AACT%20NOW%20to%20claim%20your%20FREE%20GIFT%20of%20%2450%2C000%20CASH%21%21%21&subject=Your%20invoice%20for%20March&format=auto&report=detailed&check_headers=true

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.