DEV Community

justin li
justin li

Posted on • Originally published at matrix.sellertools.dev

How I Built a Free Amazon Listing Compliance Checker (75-Char Rule & Scoring)

How I Built a Free Amazon Listing Compliance Checker

Amazon rejects or suppresses listings for reasons most sellers don't see coming: titles a few characters too long, ALL-CAPS words, promotional phrases, keyword stuffing. The rules are scattered across style guides, and sellers find out the hard way — after the listing is already live.

So I built a free listing compliance checker that runs a deterministic scoring pass over any listing and tells the seller exactly what would fail, before they publish.

What It Checks

The checker evaluates a listing across the rules that actually matter:

Check Rule Why
Title length ≤ 75 characters Amazon's new title limit (2026) — the top rejection reason
Title minimum ≥ 30 characters Too short = wasted keyword space, lower ranking
Keyword density ≤ 25% top-word Stuffing triggers suppression
ALL-CAPS abuse < 85% uppercase ratio Format abuse flag
Bullets 5 recommended, ≤ 20 words each Structure + mobile readability
Description ≥ 120 characters Thin content
CTA buy now / shop now / etc. Conversion basics
Hype words no best/perfect/guaranteed/#1 Compliance + ad policy risk

The Scoring Logic

Every rule maps to a deduction, so the score isn't a mystery number — each point loss is explained:

function scoreListing({ title, bullets, description }) {
  let score = 100;
  const warnings = [];
  if (title.length > 75) { score -= 30; warnings.push('Title over 75 chars'); }
  else if (title.length < 30) { score -= 10; warnings.push('Title too short to rank'); }

  const density = topKeywordDensity(title);
  if (density > 0.25) { score -= 15; warnings.push('Keyword stuffing risk'); }

  if (uppercaseRatio(title) > 0.85) { score -= 10; warnings.push('ALL-CAPS abuse'); }
  if (bullets.length < 5) { score -= 10; warnings.push('Need 5 bullets'); }
  if (bullets.some(b => b.split(/\s+/).length > 22)) { score -= 5; warnings.push('Bullet too long'); }
  if (description.length < 120) { score -= 5; warnings.push('Description too thin'); }
  if (!/\b(buy now|order now|shop now|add to cart)\b/i.test(description)) { score -= 5; warnings.push('Missing CTA'); }
  if (/\b(best|perfect|guaranteed|#1|top-rated)\b/i.test(description)) { score -= 5; warnings.push('Hype word detected'); }

  return { score: Math.max(0, score), warnings };
}
Enter fullscreen mode Exit fullscreen mode

The UI color-codes the result — green ≥ 80, amber ≥ 60, red below — and lists every warning in plain language.

Why a Checker (Not Just a Generator)

We already built an AI listing generator. But sellers have existing listings they've written by hand, and they need to know why one underperforms. A deterministic checker is:

  1. Trustworthy — no AI hallucination, every rule is explicit
  2. Educational — sellers learn the rules by seeing them applied to their own text
  3. Instant — no API key, no login, paste and check

It also feeds back into our generator: the same scoring function runs on every AI output, so generated listings ship with a compliance score attached.

What I Learned

  1. The 75-char rule is the #1 pain point — most rejected titles are simply too long, and sellers don't realize spaces count.
  2. Specific warnings beat a score — "Score: 45" is useless; "Title is 82 chars (over 75)" is actionable.
  3. Deterministic tools build trust — for compliance, sellers trust a fixed rule engine more than "AI vibes".
  4. Free tools are the top of the funnel — the checker is free and open; it's what gets sellers in the door before they ever touch the paid generator.

Try It

Free, no signup:

👉 Amazon Listing Checker

And if you need a new listing generated with compliance baked in:

👉 ListingAI — AI Listing Generator

Part of the SellerTools platform — AI tools for Amazon & TikTok Shop sellers.

Top comments (0)