A number does not carry a "10DLC" label. 10DLC is an ordinary 10-digit local phone number that a business has registered to send application-to-person texts. So the question "is this number 10DLC?" is really two questions. What kind of line is it? And is it registered on an approved campaign? You can answer the first from outside with a line-type lookup. You can only answer the second if the number is yours, or if the business that owns it tells you.

This post covers what the acronym means, how to look up a number's type, how to check registration on numbers you control, and a glossary of the terms you will run into in carrier docs, rejection emails and provider dashboards.

What 10DLC stands for

10DLC = 10-Digit Long Code. "Long code" is the industry name for a normal phone number, as opposed to a 5- or 6-digit short code. A US 10DLC looks like any local number: (212) 555-0199, with a real area code.

The term exists because US carriers built a registration system for business texting on these numbers, called A2P 10DLC (application-to-person over 10-digit long codes). Before it, businesses texted from local numbers with little oversight. Now carriers expect every business sender on a local number to register a brand (the company) and a campaign (what it sends and why) through The Campaign Registry. Unregistered business traffic gets filtered or blocked. If TCR is new to you, read our explainer on The Campaign Registry.

A 10DLC is therefore a local number plus a registration. The digits are identical before and after registration. Only the carrier's record of the number changes.

The three kinds of US business texting numbers

Most "how do I tell" confusion clears up once you know the three options a business can text from.

Number typeWhat it looks likeHow to spot itRegistration it needs
10DLC (local long code)10 digits, ordinary area code, e.g. (415) 555-0142Any non-toll-free US area codeBrand + campaign through TCR
Toll-free10 digits starting 800, 833, 844, 855, 866, 877 or 888The area code alone tells youToll-free verification (a separate process from 10DLC)
Short code5 or 6 digits, e.g. 42424The length alone tells youIts own carrier application, separate from 10DLC

To identify a number by its format:

  1. 5 or 6 digits? It's a short code, not 10DLC.
  2. 10 digits with a toll-free prefix (8XX)? It's toll-free, not 10DLC.
  3. 10 digits with a regular area code? It's a long code. If a business is sending automated texts from it, it should be on 10DLC.

Step 3 says "should be" on purpose. A local number sending business texts is presumably a 10DLC, but format can't tell you whether anyone actually registered it.

How to look up a number's type from the outside

A line-type lookup (often called a carrier lookup or number validation) queries carrier data and returns what kind of line a number is. Typical categories:

  • Mobile: a cell phone. It can receive SMS.
  • Landline: a wired line. It can't receive SMS, so a text to it is wasted.
  • VoIP / non-fixed: an internet-based number. Many business texting numbers fall here, because 10DLC numbers are usually issued by VoIP-class providers.
  • Toll-free: identified by prefix.

The lookup also usually returns the current carrier, which reflects ports. A number that started on one carrier and moved to another shows the new one.

A lookup tells you what the line is. It does not tell you whether the number sits on a registered 10DLC campaign. TCR registration data isn't a public directory. You can't type a stranger's number into a site and see their brand, campaign and use case. Any tool that claims to show you that for an arbitrary number is guessing from line type.

If you received texts from a local number and want to know whether the sender is registered, the practical tells are indirect. Does the message identify the business? Does replying STOP actually stop texts? Is there a privacy policy and opt-in path on their site? Those are signs of a sender following the rules, not proof of registration.

How to check registration on numbers you control

Registration status is visible to you only for your own numbers. It lives with your messaging provider.

  • In a provider dashboard, look for a registration or compliance page showing brand status, campaign status and which numbers are attached to which campaign. A number that is purchased but not attached to an approved campaign is a long code that isn't sending as a registered 10DLC yet.
  • In Ready, each account (and each sub-account, if you are a platform texting for your own customers) has its own brand and campaign registration. The registration page shows where it stands, and the API exposes the same thing.

For platforms checking many sub-accounts, these are the relevant calls:

# Registration status for the account the key belongs to
curl https://api.tryready.com/v1/registration \
  -H "X-API-Key: $READY_API_KEY"

# Numbers on the account
curl https://api.tryready.com/v1/numbers \
  -H "X-API-Key: $READY_API_KEY"

# Line-type validation for one number
curl https://api.tryready.com/v1/validate/+12125550199 \
  -H "X-API-Key: $READY_API_KEY"

# Has this number opted out of your texts?
curl https://api.tryready.com/v1/opt-outs/+12125550199 \
  -H "X-API-Key: $READY_API_KEY"

The quickstart covers keys and setup, and the messages API docs cover sending once a number is registered. We're not reproducing response shapes here. The docs list what each call returns.

On timing: registration happens in-app, and most approvals take 2 to 7 days. Registration has no setup fee. The charge at submit is the first month, $25. After that the monthly cost is $25/mo for registration and $2 per number. For how those fees stack across brands and campaigns, see 10DLC cost: every fee explained.

Validating line type before you send: a worked example

The most useful lookup isn't the one you run on a stranger's number. It's the one you run on your own consented list, to catch landlines before you pay to text them.

Assumptions for this example: a 1,000-contact opted-in list, a one-segment message (under 160 plain characters, no emoji), Ready's Standard rate.

  • Base cost: 1,000 × 1 segment × $0.0075 = $8 plus 1,000 × $0.0045.
  • Landline validation switched on: Ready looks up each number at send and refuses the ones the lookup marks as landlines. It's off by default. A number Ready's own sends have already seen as a landline is refused on every account, with no charge, whether or not validation is on. When an account switches it on, it costs $0.003 extra per segment, which is 1,000 × $0.003 = $3 on these 1,000 one-segment texts.

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.

Whether that surcharge pays off depends on your list. A list collected from mobile web forms rarely has many landlines. A list imported from an old CRM, where "phone" might mean an office line, can have plenty. If you're unsure, validate a sample first and check what share comes back as landline.

Separately, opted-out and numbers on your Ban list are refused up front and aren't charged, whether or not validation is on. Campaigns, drips and automations wait up to 24 hours for the recipient's quiet hours to end; a one to one or API text is held only if the window opens within 6 hours, otherwise it is refused and must be sent again. A held text is charged only when it sends.

Plain-English 10DLC glossary

A2P (application-to-person). Texts sent by software on behalf of a business: reminders, alerts, campaigns. This is what 10DLC registration covers. A2P vs P2P goes deeper.

P2P (person-to-person). One human texting another, at conversational volume.

TCR (The Campaign Registry). The central registry where brands and campaigns are recorded and shared with carriers.

Brand. The legal business behind the texts: name, EIN, address, website. Registered once per business.

Campaign. One registered purpose for texting, such as appointment reminders or marketing. It includes sample messages, opt-in description and use case. One brand can have several.

Use case. The category a campaign is registered under. Picking one that doesn't match what you actually send is a common cause of rejection and throttling.

Trust score. A score the brand receives at registration. On T-Mobile it sets a daily brand cap, roughly ~2,000, ~10,000, ~40,000, ~100,000 or ~200,000 messages a day from lowest score to highest. AT&T throttles per second and per minute instead of with a hard daily cap.

Brand vetting. An optional external review ($79 Standard / $179 Enhanced, one-time) that can raise the trust score. It moves the daily cap only if the new score crosses a tier, and it doesn't change the per-second rate. Most senders don't need it.

TPS / MPS (throughput). Segments per second a campaign can send. Carriers publish no official card. As a rough approximation, a fresh standard campaign without vetting gets about 1 to 4, and higher tiers get roughly 10 to 75. See the TPS ceiling explained.

Segment. The billing unit. 160 plain (GSM-7) characters per segment, or 153 each once a message splits. One emoji drops it to 70 characters (67 when split), so a 140-character text with an emoji is 3 segments instead of 1.

Long code. Any standard 10-digit number. It becomes "10DLC" in practice once it's registered for A2P.

Short code. A 5 or 6-digit number with its own separate approval process.

Toll-free. An 8XX number with its own verification process, separate from 10DLC.

Line type. Mobile, landline, VoIP or toll-free, as returned by a lookup.

Opt-out. A recipient replying STOP (or similar). On Ready it's honored automatically and blocks future texts to that contact across campaigns.

Local presence. Sending from your registered number closest to the contact's area code. It picks among registered numbers and doesn't bypass registration.

The practical takeaway

You can tell what kind of number something is from its format and a line-type lookup. You can't tell whether a stranger's local number is registered, because that data isn't public. For your own numbers, registration status lives with your provider. On Ready you can see it in the app or with GET /v1/registration, per account or sub-account.

If you're setting up a new sender, register before you scale. The first 20 texts are free, they're one-to-one sends, and they end when you pay for registration, so use them before you register. To send, you add a card and get a number, which is $2 a month with the first month charged when you get it. You can sign up here, or read what is 10DLC first if you want the full background.