# Tanzania phone numbers: format, 06 and 07 prefixes, validation and messaging rules

> Tanzania phone number format: +255 and 9-digit 06/07 mobiles, TCRA operator prefixes (Vodacom, Yas, Airtel, Halotel, TTCL), tested code, porting and SMS rules.

Canonical: https://mobilevalidate.com/blog/tanzania-phone-number-format · Last updated: 2026-11-08

![A tall card with a +255 pill and nine digit dots over two columns of ten cells headed 06 and 07, one empty dashed cell with an x badge; a timeline marked 2017, 2020, 2023; a SIM card with an ID tile; a document under a shield.](https://mobilevalidate.com/images/blog/tanzania-phone-number-format.svg)

*Nine digits after +255, TCRA's 06 and 07 blocks, and the porting, SIM and data rules.*


By MobileValidate team (https://mobilevalidate.com/about) · Published: 2026-11-08 · Category: Guides · Tags: Tanzania, Phone validation, E.164, MNP, SMS, WhatsApp, Compliance

Tanzanian numbers use the country code +255. Mobile numbers have 9 digits after the code and start with 6 or 7 (06X or 07X when dialled at home), so in E.164 they look like +255 7XX XXX XXX or +255 6XX XXX XXX. The first three digits show which operator the Tanzania Communications Regulatory Authority (TCRA) gave the range to (Vodacom, Yas, Airtel, Halotel or TTCL), but numbers can be ported, so they don't prove the current network. Marketing SMS needs the customer's consent under TCRA's consumer protection rules.

This guide is part of our [phone numbers by country](/blog/phone-numbers-by-country) series. The tables are generated from libphonenumber's metadata, our [MNP atlas](/datasets/mnp-atlas-2026) and our public catalog. Example numbers are masked with X, or are the example numbers published in libphonenumber. We read TCRA's numbering plan, regulations and statistics, the portability regulations and the data protection law on 2026-11-07. Where we rely on press reports, we say so. This is a summary, not legal advice.

## What does a Tanzanian phone number look like?

A mobile number is `07XX XXX XXX` or `06XX XXX XXX` at home: the trunk prefix `0` and nine digits. From abroad it is `+255 7XX XXX XXX` or `+255 6XX XXX XXX`. TCRA's National Numbering and Signaling Point Codes Plan (version 1.16, June 2026) says numbers "have a total length of 9 digits (i.e. excluding country code), except for M2M, which has 12 digits" (section 4.1). The plan writes mobile numbers as `06YA XXXXXX` and `07YA XXXXXX`, where the first three digits are the operator's code ([TCRA numbering plan](https://www.tcra.go.tz/tcra-tovuti/2026/mamlaka-website/documents/communication-sector-guidbooks-and-plans/Reviewed_National_Numbering_and_Signaling_Point_Code_Plans_110964160895632383418247645780320214921782934304138_0327e62722.pdf), section 4.2.5).

<!-- country-data:TZ:format:start -->
<!-- generated by apps/web/scripts/gen-country-guide-data.mjs (libphonenumber metadata 9.0.41 via libphonenumber-js 1.13.15); edit the script, not this table -->

| Item | Value |
|---|---|
| Country calling code | `+255` |
| International call prefix (dialling out) | `00[056]` (pattern: more than one prefix is used) |
| Trunk prefix (dialling at home) | `0` |
| Mobile: digits after +255 | 9 |
| Fixed line: digits after +255 | 9 |
| Toll-free: digits after +255 | 9 |
| Premium rate: digits after +255 | 9 |
| Shared cost: digits after +255 | 9 |
| VoIP: digits after +255 | 9 |
| Mobile, national format (masked) | `062X XXX XXX` |
| Mobile, international (masked) | `+255 62X XXX XXX` |
| Mobile, E.164 (masked) | `+25562XXXXXXX` |
| Fixed line, national format (masked) | `022 XXX XXXX` |
| Fixed line, international (masked) | `+255 22 XXX XXXX` |
| Fixed line, E.164 (masked) | `+25522XXXXXXX` |
<!-- country-data:TZ:format:end -->

Store only the E.164 form, `+2557XXXXXXXX` or `+2556XXXXXXXX`, with no spaces and no `0` after `255`. Tanzanian forms often collect `07XXXXXXXX`, `2557XXXXXXXX` without a plus, `+255 07…` with a stray zero, or `00255…`. A numbering-plan library with the default region `TZ` handles most of these. The `00255` form needs one extra step.

### Why does 00255 fail validation, and what is 000?

Tanzania's international access code is `000`, not `00`. TCRA's plan defines the international prefix as "000 for Tanzania" and also lists short regional codes for East Africa: `005` Kenya, `006` Uganda, `004` Rwanda and `003` Burundi (definitions and table 2). libphonenumber accepts `000`, `005` and `006` as exit codes for Tanzania. So when it is told a number comes from Tanzania, `00255 7XX XXX XXX` doesn't start with an exit code, and both ports we test read the whole string as one long national number, which isn't valid. Row 3 of the test table below shows the result.

People still type `00255`, because `00` is the exit code in most countries. The fix is one line: rewrite a leading `00` followed by `255` to `+` before parsing. Don't rewrite every `00`: `005…` is a real Tanzanian exit code, and `000255…` already parses.

## Which prefixes are mobile numbers?

Every mobile number starts with `06` or `07`. For each 2-digit block, the generator counted every 9-digit number that libphonenumber's mobile pattern for `TZ` accepts:

<!-- country-data:TZ:prefixes:start -->
<!-- generated by apps/web/scripts/gen-country-guide-data.mjs (exact count over the mobile pattern, libphonenumber metadata 9.0.41); edit the script, not this table -->

| National prefix | International | Share of the block that is mobile (9-digit numbers) | 3-digit sub-blocks that aren't fully mobile |
|---|---|---|---|
| `060` | `+255 60` | 100% | — |
| `061` | `+255 61` | 100% | — |
| `062` | `+255 62` | 100% | — |
| `063` | `+255 63` | 100% | — |
| `065` | `+255 65` | 100% | — |
| `066` | `+255 66` | 100% | — |
| `067` | `+255 67` | 100% | — |
| `068` | `+255 68` | 100% | — |
| `069` | `+255 69` | 100% | — |
| `070` | `+255 70` | 100% | — |
| `071` | `+255 71` | 100% | — |
| `072` | `+255 72` | 100% | — |
| `073` | `+255 73` | 100% | — |
| `074` | `+255 74` | 100% | — |
| `075` | `+255 75` | 100% | — |
| `076` | `+255 76` | 100% | — |
| `077` | `+255 77` | 100% | — |
| `078` | `+255 78` | 100% | — |
| `079` | `+255 79` | 100% | — |
<!-- country-data:TZ:prefixes:end -->

The library treats all of `06` and `07` as mobile except `064`. The regulator's view differs in two places. TCRA lists `064` as assigned to Telxer Enterprise Limited but "Not Operational", and it lists `060` as reserved, not assigned. libphonenumber accepts `060` as mobile. We found no TCRA document that explains the gap, so treat a `060` number as unusual and log it rather than trust it.

### 06 and 07 prefixes by operator

TCRA's plan names the holder of each code (table 9). As of version 1.16, June 2026:

| National prefix | International | Range holder in the TCRA plan | Brand |
|---|---|---|---|
| `072`, `074`, `075`, `076`, `079` | `+255 72`, `74`–`76`, `79` | Vodacom Tanzania PLC | Vodacom |
| `065`, `067`, `070`, `071`, `077` | `+255 65`, `67`, `70`, `71`, `77` | Honora Tanzania PLC | Yas (formerly Tigo and Zantel) |
| `066`, `068`, `069`, `078` | `+255 66`, `68`, `69`, `78` | Airtel Tanzania PLC | Airtel |
| `061`, `062`, `063` | `+255 61`–`63` | Viettel Tanzania PLC | Halotel |
| `073` | `+255 73` | Tanzania Telecommunications Corporation | TTCL |
| `064` | `+255 64` | Telxer Enterprise Limited | not operational |
| `060` | `+255 60` | reserved | — |

The plan lists every code above except `064` and `060` as "Operational". The mobile network codes (MCC-MNC) in the same plan are `640-04` Vodacom, `640-05` Airtel, `640-02` and `640-03` Honora, `640-07` TTCL and `640-09` Viettel (table 20). Our [MCC-MNC lookup](/tools/mcc-mnc-lookup) decodes them.

### Tigo, Zantel and Yas: one company, same numbers

Two brand changes explain most of the confusion in old prefix lists:

- **Zantel's code moved.** Old lists show `077` as Zantel's own code. TCRA's current plan puts it under Honora Tanzania PLC, together with the former Tigo codes.
- **Tigo became Yas.** Tigo Tanzania rebranded to Yas on 26 November 2024, and Tigo Pesa became Mixx by Yas ([The Citizen, 2024](https://thecitizen.co.tz/tanzania/business/tigo-tanzania-rebrands-to-yas-in-shift-towards-pan-african-ambitions-4836754)). Yas says existing SIM cards keep working on the Yas network ([Yas](https://yas.co.tz/tigo-is-now-yas-your-guide-to-the-new-brand/)), and the licensee in TCRA's plan is Honora Tanzania PLC.

Nobody's number changed. If your CRM maps `065` or `071` to "Tigo", the mapping is still right about the network, only the brand is old. Halotel is the brand of Viettel Tanzania, so "Viettel" and "Halotel" in two different lists mean the same range holder.

TCRA's quarterly report for April to June 2026 counts 116.9 million mobile subscriptions: Vodacom 33.0%, Yas 28.6%, Airtel 20.5%, Halotel 16.4% and TTCL 1.5% ([TCRA sector report, June 2026](https://www.tcra.go.tz/tcra-tovuti/2026/mamlaka-website/documents/quarterly-statistics/Communications_Sector_performance_report_for_quarter_ending_June_2026_ad44159230.pdf)).

### What do the library's carrier names say?

libphonenumber also ships a carrier prefix file. For Tanzania it agrees with TCRA's plan on the operational codes when we checked it on 2026-11-07 with the Python port, version 9.0.40: "Vodacom", "Yas", "Airtel", "Viettel" and "Tanzania Telecom". It also names `060` "Airtel", although the plan lists `060` as reserved. In any case the carrier name is the original range holder, never the current network. For that you need a live lookup.

## What do 022, 0800 and the other ranges mean?

TCRA's plan gives every service its own first digits after the `0` (table 1):

| National prefix | What it is |
|---|---|
| `022` | Fixed line, Dar es Salaam |
| `023` | Fixed line, Coast, Lindi, Morogoro and Mtwara |
| `024` | Fixed line, Zanzibar |
| `025` | Fixed line, Katavi, Mbeya, Rukwa, Ruvuma and Songwe |
| `026` | Fixed line, Dodoma, Iringa, Njombe, Singida and Tabora |
| `027` | Fixed line, Arusha, Kilimanjaro, Manyara and Tanga |
| `028` | Fixed line, Geita, Kagera, Kigoma, Mara, Mwanza, Shinyanga and Simiyu |
| `03` | Machine-to-machine (M2M), 12 digits after `+255` |
| `04` | Corporate and VoIP numbers |
| `0800` | National toll-free |
| `0840`, `0860`, `0861` | Shared-cost and other special services |
| `090` | Premium rate |

None of these is an ordinary mobile, so a `MOBILE` check correctly leaves them out. The short codes are worth knowing too: `112` police and emergency, `106` to check that a SIM is registered, and `15040` to report fraud.

## How do I validate a Tanzanian number in code?

Use a libphonenumber port with full metadata and the default region `TZ`, rewrite `00255` to `+255` first, then keep only mobiles. To try a batch of inputs without writing code, paste them into our free [phone number validator](/tools/phone-number-validator).

**Python** (`pip install phonenumbers`):

```python title="tz_normalize.py"
import re

import phonenumbers


def normalize_tz(raw: str) -> str | None:
    """E.164 for a Tanzanian mobile number (06X or 07X), or None."""
    s = re.sub(r"^\s*00(?=255)", "+", raw)  # 00255… is foreign-style dialling; Tanzania uses 000
    try:
        n = phonenumbers.parse(s, "TZ")
    except phonenumbers.NumberParseException:
        return None
    if (not phonenumbers.is_valid_number(n) or phonenumbers.region_code_for_number(n) != "TZ"
            or phonenumbers.number_type(n) != phonenumbers.PhoneNumberType.MOBILE):
        return None
    return phonenumbers.format_number(n, phonenumbers.PhoneNumberFormat.E164)


for raw in ["0621 234 567", "+255 621 234 567", "255621234567", "00255 621 234 567",
            "000255 621 234 567", "0641 234 567", "022 234 5678", "0800 123 456"]:
    print(f"{raw!r:22} -> {normalize_tz(raw)}")
```

**JavaScript** (`npm install libphonenumber-js`):

```js title="tz-normalize.mjs"
import { parsePhoneNumberFromString } from "libphonenumber-js/max";

/** "0621 …", "+255 6…", "255…", "00255…" or "000255…" → E.164 for a Tanzanian mobile, or null. */
export function normalizeTz(raw) {
  const s = String(raw).replace(/^\s*00(?=255)/, "+"); // 00255… → +255…
  const phone = parsePhoneNumberFromString(s, "TZ");
  return phone?.isValid() && phone.country === "TZ" && phone.getType() === "MOBILE" ? phone.number : null;
}

for (const raw of ["0621 234 567", "+255 621 234 567", "255621234567", "00255 621 234 567",
  "000255 621 234 567", "0641 234 567", "022 234 5678", "0800 123 456"]) {
  console.log(JSON.stringify(raw).padEnd(22), "->", normalizeTz(raw));
}
```

The inputs are libphonenumber's own example numbers for Tanzania (mobile `0621 234 567`, fixed line `022 234 5678`, toll-free `0800 123 456`) plus one number in the non-operational `064` block, not real subscribers. We ran both on 2026-11-07 (Python 3.12 with phonenumbers 9.0.40, Node.js 24 with libphonenumber-js 1.13.13). Both printed the same answers:

```text
'0621 234 567'         -> +255621234567
'+255 621 234 567'     -> +255621234567
'255621234567'         -> +255621234567
'00255 621 234 567'    -> +255621234567
'000255 621 234 567'   -> +255621234567
'0641 234 567'         -> None
'022 234 5678'         -> None
'0800 123 456'         -> None
```

(The JavaScript version prints `null` instead of `None` and uses double quotes.) The fourth line only works because of the `00255` rewrite. Without it, both libraries return nothing for `00255…`. The shape regex column below tests the pattern most tutorials give, after spaces, dashes and brackets are removed:

<!-- country-data:TZ:tests:start -->
<!-- generated by apps/web/scripts/gen-country-guide-data.mjs (libphonenumber-js 1.13.15, region TZ); edit the script, not this table -->

| # | Case | Input (masked) | Shape regex `^(?:\+255\|00255\|0)?[67]\d{8}$` | libphonenumber (`TZ`) |
|---|---|---|---|---|
| 1 | National, with trunk prefix | `062X XXX XXX` | passes | valid, `MOBILE` |
| 2 | International, with spaces | `+255 62X XXX XXX` | passes | valid, `MOBILE` |
| 3 | International dialling prefix 00 | `00255 62X XXX XXX` | passes | invalid |
| 4 | E.164 | `+25562XXXXXXX` | passes | valid, `MOBILE` |
| 5 | Dashes and brackets | `(062X) XXX-XXX` | passes | valid, `MOBILE` |
| 6 | One digit short | `062XXXXXX` | fails | invalid |
| 7 | One digit too many | `062XXXXXXXX` | fails | invalid |
| 8 | Mobile shape, unused block 064 | `064XXXXXXX` | passes | invalid |
| 9 | Fixed line | `022 XXX XXXX` | fails | valid, `FIXED_LINE` |
| 10 | Toll-free range | `0800 XX XXXX` | fails | valid, `TOLL_FREE` |
<!-- country-data:TZ:tests:end -->

Rows 3 and 8 are the ones to remember. Row 3 is the `00255` trap above. Row 8, `064`, has the shape of a mobile number and passes the regex, but the block isn't in service, so an OTP sent to it is wasted. Our post on [why an E.164 regex is not enough](/blog/e164-regex-is-not-enough) shows the same problem in other countries, and our [Python](/blog/phone-number-validation-python) and [JavaScript](/blog/phone-number-validation-javascript) guides cover more cases. For a whole spreadsheet, our free [phone list cleaner](/tools/phone-list-cleaner) normalises and deduplicates a column in the browser.

### Which numbers can I use in tests and examples?

TCRA's plan has no block reserved for films, books or examples. Use libphonenumber's example numbers (`0621 234 567` for a mobile, `022 234 5678` for a landline) in parser unit tests, mask the rest with X, and never use a real customer's number. A sandbox or test key is the safe way to test lookups.

## Does number portability change the carrier?

Yes. Mobile number portability (MNP) started in Tanzania on 1 March 2017. A Daily News report of 2 March 2017 describes the official launch in Dar es Salaam the day before, where the minister responsible for communications warned operators not to harass customers who move, and said customers would not pay ([Daily News, 2017](https://hakipensheni.blogspot.com/2017/03/telcoms-warned-as-number-portability.html)). We found no TCRA document that states the start date, so this rests on the press report.

The current rules are the Electronic and Postal Communications (Mobile Number Portability) Regulations, 2018, G.N. No. 20 of 2018 ([GN 20 of 2018](https://media.tanzlii.org/media/legislation/328004/source_file/93f8f86b4f3cefe6/tz-act-gn-2018-20-publication-document.pdf)):

- **Two working days at most.** The whole process "lasts no longer than two working days" (regulation 7(5)(h)). The number is activated on the new network before it is deactivated on the old one, and that switchover "shall not exceed fifteen minutes" (7(8)).
- **The new operator runs it.** Porting is recipient-led: the subscriber goes only to the new operator (5(2)). Any active prepaid or postpaid customer can port (5(3)).
- **Free for the subscriber.** The new operator may not recover porting costs from the customer (11(3)).
- **Limits.** No limit on how often a number is ported, but only once in thirty days (5(10)). A newly registered subscriber must wait sixty days before porting (5(11)). A postpaid customer may port with at most one pending bill cycle (5(13)).
- **New SIM, balance lost.** The SIM isn't ported, so the subscriber gets a new one (5(9)), and unused prepaid credit is forfeited (5(15)).
- **Returning numbers.** When a ported number is given up, it goes back to the original range holder (regulation 6).

TCRA doesn't publish porting volumes: its June 2026 quarterly report has no portability figures, and the International Telecommunication Union's 2024 notice for Tanzania lists the ported-number database as "N/A" ([ITU, 2024](https://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000CB0008PDFE.pdf)). Without data, assume a share of numbers no longer sit with the prefix's operator.

The Tanzania row of our MNP atlas:

<!-- country-data:TZ:mnp:start -->
<!-- generated by apps/web/scripts/gen-country-guide-data.mjs (row from content/datasets/mnp-atlas-2026); edit the script, not this table -->

| Item | Value |
|---|---|
| Mobile number portability | Yes |
| Mobile porting since | 2017-03-01 |
| Maximum porting time | 2 working days (switchover ≤ 15 minutes) |
| Governing rule | Electronic and Postal Communications (Mobile Number Portability) Regulations, 2018 (G.N. No. 20) |
| Published porting volume | none published |
| Source | [media.tanzlii.org](https://media.tanzlii.org/media/legislation/328004/source_file/93f8f86b4f3cefe6/tz-act-gn-2018-20-publication-document.pdf) |
| Checked | 2026-11-07 |
<!-- country-data:TZ:mnp:end -->

The atlas row is older than this guide and doesn't yet carry the launch date or the time limit; from the sources above they are 1 March 2017 and two working days. Our [MNP atlas](/blog/mobile-number-portability-atlas) compares Tanzania with other countries, and our guide on [how to check if a number is ported](/blog/how-to-check-if-a-phone-number-is-ported) explains the lookup.

## How are SIM cards registered in Tanzania?

Every SIM must be registered to a person or company and verified biometrically: by fingerprint against the National Identification Authority (NIDA) database, using the national ID number.

- **The 2019-2020 drive.** TCRA required every existing SIM to be re-registered biometrically. The deadline of 31 December 2019 was extended to 20 January 2020 ([ITWeb, 2020](https://itweb.africa/article/tanzania-extends-biometric-sim-card-registration-deadline/Pero3MZxZy1vQb6m)). The President said it would be the last extension.
- **The 2020 regulations.** The SIM Card Registration Regulations, 2020 (G.N. No. 112) set the limit of "not more than one SIM Card from each licensed mobile network operator" per person for voice, SMS and data (regulation 18), and deactivation after 90 days without use ([GN 112 of 2020](https://www.tcra.go.tz/tcra-tovuti/2021/mamlaka-website/documents/regulations/en_1619088062_The_Electronic_and_Postal_Communications_SIM_Card_Registration_Regulations_2020_d97b1c325a.pdf)).
- **The rules in force now.** Regulations of 2023 replaced those of 2020 and were themselves replaced by the 2025 regulations, G.N. No. 59 of 31 January 2025, published in Swahili ([GN 59 of 2025](https://www.tcra.go.tz/tcra-tovuti/2025/mamlaka-website/documents/regulations/en_1738833136_Kanuni_za_Usajili_wa_Laini_za_Simu_za_Mwaka_2025_GN_Na_59_ya_31_Januari_2025_caf002d415.pdf)). They keep one voice SIM per person per network (regulation 35), plus up to five M2M SIMs; companies may hold up to 100 voice SIMs per network. Using a SIM registered with someone else's ID, or letting someone use yours, is an offence (regulation 21). An unused SIM is deactivated after 90 days (regulation 26).

What this means for your data: one person usually has at most one number on each network, which makes duplicates across networks a real customer with two SIMs, not fraud. Deactivated SIMs and reissued numbers still make old lists go stale. Re-check numbers you collected long ago before you send them an OTP. Our post on [number recycling and list decay](/blog/number-recycling-and-list-decay) explains how.

## What are the rules for SMS marketing and personal data?

These summarise TCRA regulations and the data protection law as we read them on 2026-11-07. Not legal advice; ask counsel how they apply to you.

### TCRA's consumer protection rules

The Electronic and Postal Communications (Consumer Protection) Regulations, 2018 (G.N. No. 61) say a licensee "shall not engage in unsolicited telemarketing, sms-marketing or any other electronic methods unless" three conditions are met (regulation 7(4), [GN 61 of 2018](https://www.tcra.go.tz/tcra-tovuti/2021/mamlaka-website/documents/regulations/en_1619087013_The_Electronic_and_Postal_Communications_Consumer_Protection_Regulations_2018_cc03743654.pdf)):

- **Consent.** The customer consented to the service.
- **Who and why.** At the start, the message names the licensee or the person it is sent for, and its precise purpose.
- **Full cost.** It gives the breakdown of the total cost of the product or service offered.

Unlike Kenya's rules, these regulations set no time-of-day window and no specific opt-out format. Brands usually send through a licensed operator or SMS provider, so ask yours how it applies the consent rule and what it needs to register your sender name. We didn't find a TCRA document that sets up a national sender ID register.

People can report fraud SMS to the short code `15040`, which TCRA's plan lists as "Report on Fraud" (table 16). TCRA counted 7,334 reported fraud attempts in the quarter to June 2026 ([TCRA sector report](https://www.tcra.go.tz/tcra-tovuti/2026/mamlaka-website/documents/quarterly-statistics/Communications_Sector_performance_report_for_quarter_ending_June_2026_ad44159230.pdf)). A message that looks like a scam, with a link and a request for money, can get your sender reported, so keep transactional and marketing traffic apart and make every message say who you are.

### The Personal Data Protection Act 2022 and the PDPC

The Personal Data Protection Act, No. 11 of 2022 (now Chapter 44), came into force on 1 May 2023 ([PDPA, English version](https://media.tanzlii.org/media/legislation/376041/source_file/b6ac2610a78cbbe3/tz-act-gn-2023-395b-1-publication-document.pdf)). It set up the Personal Data Protection Commission (PDPC), which publishes the regulations and guidance on its site ([PDPC publications](https://pdpc.go.tz/publications)). The points that matter for messaging lists:

- **Registration.** "A person shall not collect or process personal data without being registered as a data controller or a data processor" (section 14(1)). Registration lasts five years.
- **Direct marketing.** Anyone may require a data controller to stop processing their personal data for direct marketing (section 35(1)). The Act defines direct marketing as any advertising or marketing material "directed at an individual", by whatever means (35(3)).
- **Transfers abroad.** Sections 31 and 32 limit transfers of personal data outside Tanzania; the Commission can prohibit them.
- **Fines.** A penalty notice can impose an administrative fine of up to TZS 100 million (section 47).

Two regulations of 2023 fill in the detail: one on collecting and processing personal data and one on complaints. If you hold Tanzanian customers' numbers, put the stop request into your list hygiene: an opted-out number must stay suppressed on every channel, including WhatsApp.

## Which messaging apps and channels reach people?

SMS reaches every active mobile. For WhatsApp, Meta doesn't price Tanzania as a separate market: it is one of the "Rest of Africa" markets on its rate card ([Meta pricing](https://developers.facebook.com/docs/whatsapp/pricing), read on 2026-11-07). Our [WhatsApp cost calculator](/tools/whatsapp-cost-calculator) shows what a campaign would cost by region, and our [SMS character counter](/tools/sms-character-counter) shows how many parts a message takes; Swahili in plain Latin letters fits the 160-character GSM alphabet unless you add emoji or curly quotes.

We found no published source that measures messaging-app use in Tanzania in a way we can verify, so we don't quote shares. Measure your own opted-in customers instead: check which apps they are registered on, route each person to the channel they use, and keep SMS as the fallback. Our [channel-by-country guide](/blog/choosing-a-messaging-channel-by-country) shows the method.

### How do I check WhatsApp registration for a Tanzanian customer list?

Normalise every row with `normalize_tz()` first, then run one check per number. A check tells you whether a number is registered at the time of the check. It can't tell you whether the person wants your messages:

| Answer | What it means | What to do |
|---|---|---|
| `registered: true` | The number has a WhatsApp account at `checked_at` | Offer WhatsApp to customers who opted in to it |
| `registered: false` | No account at `checked_at` | Use SMS or another channel |
| `unknown` | No conclusive answer (not billed) | Keep the current channel; retry later |
| `invalid_number` | Failed format validation (not billed) | Fix the data at the source |

For lists, use a [bulk job](/docs/bulk-jobs). Upload a CSV with numbers written the Tanzanian way (`0712 XXX XXX`, `255…` and spaces also work) and `default_country=TZ`:

```bash title="Bulk WhatsApp and live-status check for a customer CSV"
curl https://api.mobilevalidate.com/v1/jobs \
  -H "Authorization: Bearer $MOBILEVALIDATE_API_KEY" \
  -F file=@customers.csv -F checks=whatsapp,hlr -F default_country=TZ
```

Send the same body to `POST /v1/jobs/estimate` first: it is free, checks nothing and shows the maximum cost and the per-country minimums before anything runs. To open a chat with one customer who wrote to you first, our [WhatsApp link generator](/tools/whatsapp-link-generator) builds the `wa.me` link from an E.164 number.

## What changed recently?

The rows for `TZ` and `+255` in our [numbering-plan changes dataset](/datasets/numbering-plan-changes-2019-2026), built from libphonenumber's release notes:

<!-- country-data:TZ:changes:start -->
<!-- generated by apps/web/scripts/gen-country-guide-data.mjs (rows of content/datasets/numbering-plan-changes-2019-2026); edit the script, not this table -->

| Change named in the release notes (2019-01-08 to 2026-09-23) | Releases |
|---|---:|
| Original-carrier prefix data | 10 |
| Numbering-plan metadata (validation, lengths, types) | 9 |
| Short numbers | 2 |
| Alternate formatting | 1 |
| All | 22 |

Latest numbering-plan updates for `TZ`: 2026-08-26 (v9.0.38), 2026-07-02 (v9.0.34), 2026-02-12 (v9.0.24), 2025-12-04 (v9.0.20), 2024-03-20 (v8.13.33).
<!-- country-data:TZ:changes:end -->

Tanzania's metadata has been busy lately: four numbering-plan updates between December 2025 and August 2026. On the regulator's side, the recent changes are:

- **2024:** Tigo became Yas on 26 November; Honora Tanzania holds the former Tigo and Zantel codes.
- **2025:** new SIM card registration regulations (G.N. No. 59, 31 January).
- **2026:** version 1.16 of TCRA's numbering plan (June), which lists `070` under Honora and `064` as assigned but not operational.

Update your library at least monthly, and log numbers it rejects instead of dropping them silently.

## What can MobileValidate check for Tanzanian numbers?

Generated from our public catalog:

<!-- country-data:TZ:coverage:start -->
<!-- generated by apps/web/scripts/gen-country-guide-data.mjs (public catalog https://api.mobilevalidate.com/v1/services, fetched 2026-11-07); edit the script, not this table -->

Catalog data as of 2026-11-07.

| Check | Accepts Tanzania numbers | Notes |
|---|---|---|
| Format and country (every lookup) | Yes | Each number is parsed first; an invalid number returns `invalid_number` and is never billed. |
| Carrier lookup (beta) | Yes | Line type and current network where data exists; no data means `unknown`, not billed. Real time and bulk. |
| US/CA carrier lookup (premium) | No (US, CA only) | Answers `unsupported_country` for other countries, not billed. |
| Live network status (HLR) | Yes | Live reachability, porting, roaming (true or false) and current network; `unknown` is free. Real time and bulk. |
| Number portability (MNP) | Yes | Ported or not ported, and the current network code; `unknown` is free. Real time and bulk. |
| Spam reputation | Limited access | All countries except sanctioned ones; report coverage is strongest in North America and Europe. |
| Messaging apps | Yes: WhatsApp, Telegram, Viber*, Signal*, iMessage*, RCS*, LINE*, Zalo*, Botim*, Facebook Messenger* | Registered, not registered or unknown; unknown is free. |
| Social networks | Yes: Facebook, Instagram, Threads, X (Twitter), TikTok*, Snapchat* | Not for Tanzania numbers: LinkedIn (US, IN only). |
| Online accounts (Apple, Amazon, Microsoft, Netflix) | Yes: Apple, Amazon, Microsoft, Netflix | Registered, not registered or unknown; unknown is free. |

\* bulk jobs only. The live list is at [`GET /v1/services`](https://api.mobilevalidate.com/v1/services).
<!-- country-data:TZ:coverage:end -->

A lookup returns network and registration facts. It never returns a subscriber's name, ID number or address, and we don't offer "number details" searches.

Because the prefix shows only the range holder, the useful Tanzanian lookup is the current network: a [live network status (HLR) check](/services/hlr-lookup) for reachability and porting, or an [MNP lookup](/services/mnp-lookup) for ported or not ported and the current network code. The [carrier lookup](/services/carrier-lookup) gives line type and current network in one call. For channels, WhatsApp and Telegram run in real time and in bulk; the starred checks in the table run in bulk jobs only.

### How do I start for free?

- **20 free real checks.** Every live account can run 20 phone numbers and 10 e-mail addresses through the real checks for free on the dashboard's Try it page. Use them on your own number first.
- **Free tools.** The [carrier lookup](/services/carrier-lookup) page has a public form for 3 lookups a day, no sign-up needed, and our [free tools](/tools) validate, clean and format numbers in the browser.
- **A free test key.** [Get a test key](/get-test-key) for the sandbox. It gives fixed test answers so you can build every branch of your code; see [test mode](/docs/test-mode).
- **A free estimate.** `POST /v1/jobs/estimate` takes the same body as a job, checks nothing and shows the maximum cost before you start.
- **Then add credit.** [Create your account](/request-access); approval is automatic. Top-ups of larger amounts get 5% to 10% bonus credit; see [pricing](/pricing). Unknown, invalid and duplicate results are never charged.

Here is a small reachability check against the real-time endpoint. It asks for the live network status and WhatsApp registration in one call. It uses the public sandbox key `mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym` and our [test values](/docs/test-values). The sandbox accepts only those UK drama numbers, so the example uses them; with a live key, pass the output of `normalize_tz()`.

```python title="tz_reach.py"
import os

import requests  # pip install requests

API = "https://api.mobilevalidate.com/v1/lookup"
KEY = os.environ["MOBILEVALIDATE_API_KEY"]


def reach(numbers: list[str]) -> dict[str, dict]:
    """Live status, porting flag and WhatsApp registration per number. None means we don't know."""
    r = requests.post(API, headers={"Authorization": f"Bearer {KEY}"}, timeout=15,
                      json={"numbers": numbers, "checks": ["hlr", "whatsapp"], "wait": 5})
    r.raise_for_status()
    out = {}
    for row in r.json()["results"]:
        hlr, wa = row["checks"]["number.hlr"], row["checks"]["whatsapp.registered"]
        attrs = (hlr["attributes"] or {}) if hlr["status"] == "completed" else {}
        out[row["e164"]] = {
            "status": attrs.get("status"),
            "ported": attrs.get("ported"),
            "whatsapp": wa["registered"] if wa["status"] == "completed" else None,
        }
    return out


for number, info in reach(["+447700900001", "+447700900002", "+447700900005"]).items():
    print(number, info)
```

We ran it against the sandbox on 2026-11-07. It printed:

```text
+447700900001 {'status': 'reachable', 'ported': False, 'whatsapp': True}
+447700900002 {'status': 'unreachable', 'ported': False, 'whatsapp': False}
+447700900005 {'status': None, 'ported': None, 'whatsapp': None}
```

The third test value stands for an unsupported country, so every field is `None` and nothing would be billed. Keep `None` apart from `False`: `None` means we don't know. Requests with 20 or more consecutive numbers are refused (`403 suspected_enumeration`), and our [acceptable use policy](/legal/acceptable-use) forbids finding recipients for unsolicited messages. People can object through our [opt-out form](/opt-out). See [WhatsApp number check](/services/whatsapp-number-check) for the fields.

## What are the key takeaways?

- Tanzanian mobiles are `+255` plus nine digits starting with `6` or `7`, written `06XX XXX XXX` or `07XX XXX XXX` at home. Store the E.164 form.
- Tanzania's exit code is `000`, so rewrite a leading `00255` to `+255` before parsing, or it will fail.
- TCRA's plan shows the range holder: Vodacom, Honora (Yas, formerly Tigo and Zantel), Airtel, Viettel (Halotel) and TTCL. `064` isn't in service and `060` is reserved in the plan, though the library accepts `060`.
- Porting has run since 1 March 2017, is free, and must finish within two working days, so look up the current network when it matters.
- SIMs are registered by fingerprint against NIDA, one voice SIM per person per network. Marketing SMS needs consent, the sender's identity and the full cost, and the PDPA lets anyone stop direct marketing.
- Check WhatsApp registration only for customers you hold lawfully, keep `unknown` apart from `false`, and never treat registration as consent.

Platform, regulator and company names are used descriptively. MobileValidate is not affiliated with any of them.

## Sources

1. [National Numbering and Signaling Point Codes Plan, TCRA/DICT/CRTM/PLA-NMSP/002, Version 1.16 (June 2026)](https://www.tcra.go.tz/tcra-tovuti/2026/mamlaka-website/documents/communication-sector-guidbooks-and-plans/Reviewed_National_Numbering_and_Signaling_Point_Code_Plans_110964160895632383418247645780320214921782934304138_0327e62722.pdf) — Tanzania Communications Regulatory Authority (TCRA), 2026
2. [The Electronic and Postal Communications (Mobile Number Portability) Regulations, 2018 (G.N. No. 20 of 2018)](https://media.tanzlii.org/media/legislation/328004/source_file/93f8f86b4f3cefe6/tz-act-gn-2018-20-publication-document.pdf) — TanzLII (Tanzania Legal Information Institute), 2018
3. [Telcoms warned as number portability service begins (Daily News report, 2 March 2017, reprint)](https://hakipensheni.blogspot.com/2017/03/telcoms-warned-as-number-portability.html) — Daily News (Tanzania), via the Haki Pensheni blog, 2017
4. [The Electronic and Postal Communications (Consumer Protection) Regulations, 2018 (G.N. No. 61 of 2018)](https://www.tcra.go.tz/tcra-tovuti/2021/mamlaka-website/documents/regulations/en_1619087013_The_Electronic_and_Postal_Communications_Consumer_Protection_Regulations_2018_cc03743654.pdf) — Tanzania Communications Regulatory Authority (TCRA), 2018
5. [The Electronic and Postal Communications (SIM Card Registration) Regulations, 2020 (G.N. No. 112 of 2020)](https://www.tcra.go.tz/tcra-tovuti/2021/mamlaka-website/documents/regulations/en_1619088062_The_Electronic_and_Postal_Communications_SIM_Card_Registration_Regulations_2020_d97b1c325a.pdf) — Tanzania Communications Regulatory Authority (TCRA), 2020
6. [Kanuni za Mawasiliano ya Kielektroniki na Posta (Usajili wa Laini za Simu) za Mwaka 2025 (G.N. No. 59 of 31 January 2025, SIM card registration regulations, in Swahili)](https://www.tcra.go.tz/tcra-tovuti/2025/mamlaka-website/documents/regulations/en_1738833136_Kanuni_za_Usajili_wa_Laini_za_Simu_za_Mwaka_2025_GN_Na_59_ya_31_Januari_2025_caf002d415.pdf) — Tanzania Communications Regulatory Authority (TCRA), 2025
7. [Tanzania extends biometric SIM card registration deadline (January 2020)](https://itweb.africa/article/tanzania-extends-biometric-sim-card-registration-deadline/Pero3MZxZy1vQb6m) — ITWeb Africa, 2020
8. [The Personal Data Protection Act, Cap. 44 (Act No. 11 of 2022), English version, G.N. No. 395B of 2023](https://media.tanzlii.org/media/legislation/376041/source_file/b6ac2610a78cbbe3/tz-act-gn-2023-395b-1-publication-document.pdf) — TanzLII (Tanzania Legal Information Institute), 2023
9. [Publications: regulations and guidelines](https://pdpc.go.tz/publications) — Personal Data Protection Commission (PDPC), Tanzania, 2026
10. [Communications Sector Performance Report, quarter ending June 2026](https://www.tcra.go.tz/tcra-tovuti/2026/mamlaka-website/documents/quarterly-statistics/Communications_Sector_performance_report_for_quarter_ending_June_2026_ad44159230.pdf) — Tanzania Communications Regulatory Authority (TCRA), 2026
11. [Tigo Tanzania rebrands to Yas in shift towards pan-African ambitions (27 November 2024)](https://thecitizen.co.tz/tanzania/business/tigo-tanzania-rebrands-to-yas-in-shift-towards-pan-african-ambitions-4836754) — The Citizen (Tanzania), 2024
12. [Tigo is now Yas: your guide to the new brand](https://yas.co.tz/tigo-is-now-yas-your-guide-to-the-new-brand/) — Yas Tanzania, 2024
13. [Numbering resources of Tanzania: communication of 1.XI.2024 (ITU-T E.164 national numbering plan notice)](https://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000CB0008PDFE.pdf) — International Telecommunication Union (ITU), 2024
14. [WhatsApp Business Platform pricing (pricing regions, read 2026-11-07)](https://developers.facebook.com/docs/whatsapp/pricing) — Meta for Developers, 2026
15. [libphonenumber PhoneNumberMetadata.xml (region TZ), carrier prefix data and release notes](https://github.com/google/libphonenumber/blob/master/resources/PhoneNumberMetadata.xml) — libphonenumber project (Apache License 2.0), 2026

## Frequently asked questions

### How many digits is a Tanzanian mobile number?

Nine digits after the country code +255, or ten when written at home with the leading 0. A Tanzanian mobile looks like 07XX XXX XXX or 06XX XXX XXX nationally and +255 7XX XXX XXX or +255 6XX XXX XXX in E.164, twelve digits in all after the plus. TCRA's numbering plan fixes nine digits after the country code for all services except machine-to-machine numbers.

### What is the Tanzania country code for WhatsApp?

+255. Drop the leading 0 of the national number: 0621 234 567 becomes +255 621 234 567, stored as +255621234567. Don't keep the 0 after 255. The same E.164 form works for WhatsApp, SMS APIs and every other platform.

### Which network is 074, 065, 068, 062 or 073 in Tanzania?

In TCRA's numbering plan of June 2026, 072, 074, 075, 076 and 079 are Vodacom; 065, 067, 070, 071 and 077 are Honora Tanzania, which trades as Yas (formerly Tigo and Zantel); 066, 068, 069 and 078 are Airtel; 061, 062 and 063 are Viettel Tanzania (Halotel); and 073 is TTCL. That is the range holder only, because numbers can be ported.

### Is Tigo now Yas in Tanzania?

Yes. Tigo Tanzania rebranded to Yas on 26 November 2024, and Tigo Pesa became Mixx by Yas. The licensee behind it is Honora Tanzania PLC, which TCRA's plan also lists for the former Zantel code 077. Numbers didn't change: 065, 067, 071 and 077 numbers kept their digits, and TCRA's plan lists those codes and 070 under Honora.

### Can I keep my number if I change network in Tanzania?

Yes. Mobile number portability started on 1 March 2017 and is free for the subscriber. Under the 2018 portability regulations the new operator runs the process, which must take no longer than two working days, with a switchover of at most fifteen minutes. A number can be ported once in thirty days, and a newly registered number must wait sixty days.

### What are the rules for marketing SMS in Tanzania?

TCRA's Consumer Protection Regulations 2018 ban unsolicited telemarketing and SMS marketing unless the customer consented, the message names the sender and its purpose, and it states the total cost of what it offers. The Personal Data Protection Act 2022 lets anyone require a business to stop using their data for direct marketing. Fraud SMS can be reported to 15040.

### Can I check whether Tanzanian customers are on WhatsApp?

Yes, for numbers you hold with a lawful basis, such as your own customers or sign-ups. A MobileValidate check answers registered, not registered or unknown with a checked_at date. Unknown answers are not billed. It never returns a name or profile, and we refuse requests that look like scans of number ranges.
