Every list you import has numbers that will never receive a text. Some are landlines someone typed into a form. Some are typos. Some were disconnected and are waiting to be reassigned to a stranger. On most platforms, a text to any of them still costs a segment, still counts against your daily carrier cap, and still adds to the failure rate carriers watch when they decide how much to trust your traffic.
This guide covers what you can and can't learn about a number before you text it: whether it's formatted correctly, what kind of line it is, whether it can take an SMS, and whether it still belongs to the person who gave it to you. It also works through the math on when paying for validation saves money and when it doesn't.
The four questions a lookup can answer
"Is this number valid?" is really four separate questions, and each needs a different check.
- Is it a possible number? Correct length, a real area code, a real exchange. This is a syntax check, and it costs nothing to run.
- What type of line is it? Mobile, landline, VoIP or toll-free. This comes from numbering and porting data, and it is what decides whether SMS can work at all.
- Is it in service? Assigned to a carrier and active, not sitting disconnected in a pool.
- Does it still belong to your contact? A number can be valid, mobile and active and still belong to someone new. Only the FCC's Reassigned Numbers Database answers this one, and we cover it in our reassigned numbers guide.
Most free lookup sites answer the first question well and the second one partly. Very few answer the third reliably in the US, and none answer the fourth.
Line types and what each means for SMS
| Line type | Can it receive SMS? | What to do |
|---|---|---|
| Mobile (wireless) | Yes | Text it, if you have consent |
| Landline | Almost never | Call or mail instead. See can you text a landline? |
| Fixed VoIP (cable or office phone systems) | Sometimes, depends on the provider | Text it, but expect more failures |
| Non-fixed VoIP (app-based numbers) | Usually | Text it, and watch for throwaway signups |
| Toll-free | Only if text-enabled | Rare in consumer lists, often a business main line |
Line type comes from carrier data: which carrier the number was originally assigned to, and whether it has since been ported. A number that started as a landline and was ported to a wireless carrier is now mobile, which is why a lookup based only on the area code and exchange gets this wrong. If you want the carrier name too, phone carrier lookup explains how that data works and where it goes stale.
Why "active" is the hardest one
Outside the US, mobile networks often answer live reachability queries. US carriers mostly don't expose that to third parties, so tools marketed as "active or disconnected" checks are usually inferring from porting records and recent carrier activity rather than pinging the phone. They're useful but not definitive. Treat a "possibly disconnected" result as a reason to suppress or re-confirm, not as proof either way.
Lookup tools, from free to built-in
There are roughly three tiers.
Free web lookups. You type in one number at a time and get the carrier and line type. That's fine for spot-checking a handful of numbers. They can't handle a 5,000-row CSV, and the data is often months old.
Bulk lookup and validation services. You upload a file and get it back with line type, carrier, and sometimes a "reachable" flag on each row. This is the standard list-cleaning step before an import. Pricing and data quality vary a lot between vendors, so test a sample of numbers you already know before you commit.
Validation inside the sending platform. The check happens at the point of send or import, so a stale CSV never gets the chance to cost you. This is the tier we built into Ready.
How validation works in Ready
Two separate pieces are involved.
One-off and API validation. GET /v1/validate/:phone checks a single number. Platforms call it at form submission, which is the best moment, because the person is still there to fix a typo. Each lookup costs $0.003 per number checked:
curl https://api.tryready.com/v1/validate/+12125550199 \
-H "X-API-Key: <your key>" The number validation docs list what it returns, the messages docs cover how sends behave, and the quickstart covers getting a key.
Landline validation at send time. This is a per-account setting, and it's off by default. Ready already refuses texts to numbers it has seen as landlines, on every account and at no charge. When validation is on, it also looks up each number before the send to catch the rest, and every segment carries a $0.003 surcharge. A landline Ready has not seen yet is attempted and billed like any other text when validation is off.
A few related behaviors are worth knowing because they affect your bill:
- Numbers that have opted out and numbers on your Ban list are refused up front and not charged, whether or not validation is on.
- A text to someone inside their quiet hours is held and sent later if it comes from a campaign or drip. A one-to-one or API text is held only if sending reopens within 6 hours; otherwise it is refused and you send it again. A text is charged only when it actually sends.
- The litigator and DNC scrub is a separate service. The standalone scrub is $0.005 per contact, and per-send scrubbing is another $0.003 per segment when it's switched on. Validation tells you whether a number can get a text. Scrubbing tells you whether it's risky to send one.
The math: when validation pays for itself
Ready's Standard rate is $0.0075 per segment plus a $0.0045 carrier fee per segment. Take a worked example with stated assumptions:
- 10,000 contacts
- A 1-segment message (under 160 plain characters, no emoji)
- An assumed 8% of the list is landlines, which is plausible for a list that mixes web forms and older offline sources
Without landline validation: 800 texts go to landlines. That's 800 × $0.0075 of spend that reaches no one, or $6 plus 800 × $0.0045.
With landline validation on for the whole send: 10,000 segments × $0.003 = $30 in surcharge.
At an 8% landline share, then, turning validation on for this one send costs more than it saves. Per-send validation breaks even when the landline share reaches about $0.003 ÷ ($0.0075 + $0.0045), which works out to roughly a fifth of the list at today's carrier fee.
Ready's all-in prices per segment include the carrier fee but not screening: Scrub lists and Number validation, the two switches in Settings under Compliance, each add $0.003 per segment when switched on, shown as screening on your bill, and both are off by default. Unless you turn the opt-out footer off, the first text to each contact, and one again from time to time, also gets "Reply STOP to opt out" and your business name if the message does not already have them, so a text close to the segment limit can bill one more segment.
The math changes in three situations:
- Old or offline-sourced lists (event signups, paper forms, data from a previous CRM) can run well past a fifth landline. Validation earns its cost there.
- Recurring sends to the same list pay the per-segment surcharge every time. If you clean the list once, you can usually leave the setting off afterward.
- Deliverability matters beyond the per-text cost. A high failure rate is one of the signals carriers use to judge a sender. Wasted sends also count against your T-Mobile daily brand cap, which starts around 2,000 messages a day at the lowest trust tier. If you're near that cap, 800 dead sends is a real chunk of your day.
For a single send to a clean, recent, opted-in list, leaving validation off is a reasonable choice. For a list of unknown age, clean it first.
A practical list-cleaning order
Run these in order, cheapest first:
- Normalize the formatting. Strip punctuation, convert everything to E.164 (+1 and ten digits), and drop anything the wrong length. This is free and catches more than you'd expect.
- Deduplicate. The same number spelled three ways means three sends.
- Suppress known opt-outs. Import your opt-out history. Ready also refuses opted-out numbers automatically.
- Check line type. Move landlines to a call or mail list instead of deleting them, since they're still contacts.
- Scrub for litigators and DNC on anything that isn't a fresh, direct opt-in.
- Check reassignment for numbers whose consent is old.
- Re-run on a schedule. Lists decay, and how fast each list source rots covers how often to repeat this.
One caveat sits over all of this: validation tells you a number is textable, not that you're allowed to text it. A clean, mobile, active number from a purchased list is still a cold contact. Cold contact belongs on the phone or in the mail, and SMS goes to people who opted in or replied. Compliance stays the sender's responsibility. These checks reduce risk, but they don't remove it.
The short version
Separate the four questions (possible, line type, in service, still theirs) and use a check that fits each. Fix formatting for free, clean old lists in bulk before importing, and validate at the form when you control it. Turn on Ready's per-send landline validation only when the list's landline share justifies the $0.003 per-segment surcharge, and re-clean on a cadence instead of trusting January's file in June.
If you want to try validation against your own numbers, create an account. The first 20 one-to-one texts are free; the validation endpoint is $0.003 per number and is in the docs linked above.