Template lint // free tool

Paste a template.
See why Meta is rejecting it.

WhatsApp template approval rejects without explanation. This checker runs the same lint rules Meta applies behind the scenes: variable formatting, category mismatch, opt-in language, URL shorteners, and the silent ones. Get a pass/fail and a specific fix.

  • Lints variable formatting and sample data.
  • Detects category mismatch (Marketing posing as Utility).
  • Flags opt-in language gaps and forbidden URLs.
  • Shows the exact fix, not a vague reject reason.
01 // Run it
106 / 1024 chars3 variables
Sample templates
Likely to pass
0 blocking · 0 warnings · 0 info

No issues detected. Template should pass Meta's automated checks. Manual review can still flag things this linter does not (sample data quality, sender quality rating, business verification status).

02 // What the number means

Why Meta rejects templates without explaining

Meta's template review system is automated, fast, and infuriatingly opaque. A rejected template returns either "TAG_CONTENT_MISMATCH", "INVALID_FORMAT", or worst of all, "POLICY_VIOLATION" with no further information. The actual rules they apply are public, just spread across half a dozen Meta documentation pages.

This linter consolidates the rules we have learnt from operating NuvenarHub at scale across 100+ WhatsApp accounts and hundreds of submitted templates. It catches roughly 85% of the rejections we have seen.

The five rejection reasons that account for 80% of failures

  • Category mismatch: Marketing language in a Utility template, or vice versa. Most common rejection by a wide margin.
  • Variable adjacency: Two placeholders touching with no separator. Surprisingly common in copy-pasted templates.
  • URL shorteners: Bit.ly and friends are hard-blocked. Use full URLs on your own domain.
  • Body at edge: Variable at the very start or very end of the body. Meta's sample-data validator struggles with these.
  • Aggressive caps: More than 60% capital letters reads as spam to the classifier.

What the linter does not check

  • Business verification status. Unverified businesses get rejected more aggressively. The linter cannot see your verification status.
  • Sender quality rating. A Red-rated number gets templates blocked regardless of content.
  • Sample data realism. Meta wants believable sample values when you submit. {{1}} = "Smith" passes; {{1}} = "XXX" fails.
  • Brand similarity. Templates impersonating major brands get rejected manually.
03 // FAQ

What rules does this checker run?

Variable formatting (consecutive numbering, no adjacency, no body-edge), category mismatch (Marketing language in Utility templates), URL shorteners (Meta blocks all major ones), all-caps spam detection, suspicious phrasing (click here, act now, fraud-adjacent language), missing opt-out wording on Marketing templates, and BCP-47 language code validation. Same rules Meta's automated reviewer applies.

Does this guarantee approval?

No. It catches the automated-rejection reasons. Meta also does manual review on a sample of templates, where they assess sender quality rating, business verification status, sample-data realism, and category appropriateness. A passing lint is necessary but not sufficient.

Why does my template need an opt-out if it is just a reminder?

Utility templates (reminders, order updates, transactional) do not need opt-out language. Marketing templates do, both per Meta policy and per UK PECR. The linter flags this only for MARKETING category.

Can I paste in WhatsApp's media headers, buttons, and footers?

The linter checks the body text only. Header media and button text are validated by Meta separately and rarely cause rejection compared to body content. Footer text follows the same rules as body text.

Why did my approved template get downgraded later?

Meta runs a quality rating on every sent template. Low open rates, high block rates, and customer reports drop the quality from Green to Yellow to Red. A Red template stops sending. The linter checks the static content; quality is a runtime signal.

Stop guessing why Meta rejects your templates.

Blast handles the full template approval + WhatsApp campaign workflow end-to-end. Anti-ban warmup built in. Approved templates ship at the cheaper Utility rate when eligible.

See Blast