SMS Compliance Checker for Sales and Marketing Texts
An SMS compliance checker reviews a text message for the issues that break TCPA, state law or carrier rules. ColdTexting scores your text from 0 to 100, flags a missing brand name, missing opt-out language, URL shorteners, restricted content, quiet-hours risk and segment count.
How the score works
One number from 0 to 100 with every deduction shown
A compliance score is a measure of how safe a text is to send, built from fixed rules rather than guesses.
Every message starts at 100. Each rule returns pass, warning or fail, and each warning or fail subtracts its weight. The checker runs the same way every time on the same text, with no network calls and no AI model, so a reviewer can trace any score back to the rules below.
- Blocking issues cap the score at 49. No consent on a marketing text, SHAFT content or a send time inside quiet hours means the message cannot go out at all.
- Ready to send means 85 or higher with no fail. A text at 88 with one failed rule still waits for a fix.
- Grades follow the number. A from 90, B from 80, C from 70, D from 50, F below that.
The rule set
Every rule the checker tests and the source behind it
Eighteen rules run on each draft. Weights are the points a fail or a warning removes from 100.
| Rule | What it looks for | Weight | Reference |
|---|---|---|---|
| Consent | A consent record for the contact, written consent for sales and promo use cases | Fail 30, warn 10, blocking | TCPA 47 CFR 64.1200(a)(2) and (a)(3), CTIA Messaging Principles and Best Practices |
| Restricted content | Sex, hate, alcohol, firearms and tobacco terms (SHAFT), plus cannabis, CBD and kratom | Fail 25, blocking | CTIA Messaging Principles and Best Practices, carrier 10DLC prohibited content |
| Brand name | Your business name in the text so the recipient knows who is writing | Fail 15 | CTIA sender identification, carrier 10DLC policy |
| Opt-out language | A clear way to stop, such as Reply STOP to opt out | Fail 15, warn 6 | CTIA Messaging Principles, 47 CFR 64.1200(a)(10) |
| High risk financial | Lending, payday, debt relief, crypto, forex, gambling and easy money wording | Fail 15 | Carrier 10DLC restricted content |
| Purchased list wording | Phrases such as we got your number, you were selected or dear homeowner | Fail 15 | TCPA 47 CFR 64.1200, CTIA (consent is not transferable) |
| Quiet hours | A planned send time outside the window for the recipient state | Fail 15, blocking | TCPA 47 CFR 64.1200(c)(1) and the state law |
| URL shortener | Public shortener domains such as bit.ly, tinyurl.com, t.co or rb.gy | Fail 12 | Carrier 10DLC content policy, CTIA |
| All caps | Words in capitals, mostly capitals fails, STOP and HELP excepted | Fail 12, warn 8 | Carrier spam filtering, CTIA |
| Spam phrases | Urgency and money bait such as act now, winner or click here | Warn 4 per phrase, up to 12 | Carrier spam filtering, CTIA |
| Punctuation | Repeated exclamation or question marks, or three or more exclamation marks | Warn 6 | Carrier spam filtering |
| First message context | A reason for the text, such as following up on your quote request | Warn 6 | CTIA (expected messages) |
| Length | More than 3 segments | Warn 6 | SMS segment billing, carrier delivery |
| Encoding cost | Emoji or curly quotes that switch the text from GSM-7 to UCS-2 | Warn 5 | GSM 03.38 character set |
| State rules | A recipient state with stricter sales text rules | Warn 4 | Fla. Stat. 501.059, Oklahoma and Maryland Acts, Tex. Bus. and Com. Code ch. 301 and 302, RCW 80.36.390, Conn. Gen. Stat. 42-288a |
| Phone number in body | A phone number other than the sending line | Warn 3 | Carrier 10DLC policy (content matches the campaign) |
| Personalization | A merge tag such as {first_name} | Warn 3 | Deliverability best practice |
| HELP keyword | Reply HELP for help in the first text of a campaign | Warn 2 | CTIA (HELP keyword) |
Content rules
SHAFT stands for sex, hate, alcohol, firearms and tobacco, the content classes carriers block on standard 10DLC campaigns. Cannabis and CBD sit in the same list. High risk financial wording does not block outright, but carriers only allow it on a campaign registered for it.
Form rules
Brand, opt-out and HELP lines tell the recipient who is texting and how to leave. Capitals, repeated punctuation and spam phrases are what carrier filters score first, so they cost points even when the offer is lawful.
Context rules
Consent, quiet hours and state rules depend on who receives the text, so they read the use case and recipient state you pick. Our page on TCPA compliance explains the consent types in detail.
Example input and output
A quote follow-up before and after two fixes
Same offer, same recipient in Florida. Adding the brand and an opt-out line and replacing the shortener moves the score from 52 to 94.
Before
Fix 3 issues before sending
After
Ready to send
The remaining 6 points come from two warnings: Florida limits sales texts to 8 am to 8 pm and three per subject per day, and the first text of a campaign should mention HELP. The scheduler applies the Florida window on its own, so neither warning stops the send.
Encoding and segments
Why one curly apostrophe can triple the cost of a send
GSM-7 is the standard SMS character set, and a single GSM-7 message holds 160 characters.
Longer texts split into segments of 153 characters each. One character outside GSM-7, such as an emoji or a curly quote pasted from a document, switches the whole message to UCS-2, where a segment holds 70 characters, or 67 when the text is split. In the example a single curly apostrophe turns one segment into three for every contact on the list. Every segment is billed, so the counter under the composer shows encoding and segment count as you type.
The same counter feeds the confirm screen of a campaign, which is where bulk SMS sends show the total before anything leaves. Carrier review also reads your sample messages, so passing drafts make good samples for 10DLC registration.
FAQ
Questions about the SMS compliance checker
It checks brand name, opt-out language, URL shorteners, restricted SHAFT content, all caps, spam trigger words, quiet hours by recipient state, consent status and the number of segments.
No. It uses fixed rules based on federal law, state mini-TCPA laws and carrier messaging guidelines, so the same text always gets the same result.
You can run several checks without an account. Paid plans include unlimited compliance checks on every message before it sends.
No checker can guarantee carrier delivery, but fixing every flagged issue removes the most common causes of filtering and complaints.
Score every text before it reaches a phone
Paid plans run unlimited compliance checks on every draft, campaign and sequence step. Starter begins at $24 per month billed yearly.