How this validator works
The tool splits your registered template into fixed text and variable slots — either legacy
[VARIABLE] placeholders or the typed {#numeric#} / {#var#} /
{#url#} tags now expected under TRAI's variable pre-tagging direction. It then checks,
in order, that every fixed chunk of text appears unchanged in your actual message, that no extra
wording has been inserted or appended, and — when typed tags are used — that each variable's value
actually matches its declared type (a numeric OTP variable shouldn't suddenly contain letters, for
example). Finally it estimates whether your message will be sent as GSM-7 or Unicode and how many
SMS segments that costs you.
Why a DLT template mismatch gets your SMS blocked
Every commercial and transactional SMS sent in India has to trace back to a Principal Entity (PE) registered on a telecom-operator DLT platform, using a registered Header (Sender ID) and a registered Content Template. The template registered with the content template registrar defines the exact fixed wording and the position and count of variable fields; operators run every outgoing message through automated matching against that registered template before allowing delivery. If the fixed wording has changed, if variables have moved, or if extra text (a promo line, a different sign-off, a stray link) has been added, the message no longer matches the registered Content Template ID and gets rejected by the scrubber — regardless of whether the PE ID and Header passed along in the message are valid.
TRAI's mandatory variable pre-tagging direction (Nov 2025)
On 18 November 2025 TRAI issued a direction mandating that every variable inside an SMS content
template be pre-tagged with one of six defined types — #numeric#, #url#,
#urlott#, #cbn#, #email# or #alphanumeric# —
instead of a generic, untyped placeholder. New templates registered from late November 2025 onward
already had to comply; existing templates got a further window to be updated, after which any
message whose variable content doesn't match its declared type is rejected outright rather than
merely logged. As of today, that grace period has passed, so pre-tagged, type-validated variables
are now the enforced norm across access providers.
Read the full breakdown, including the exact tag table and compliance timeline →
Registering a Principal Entity, Header and Content Template
Before any template can be validated against real traffic, three things need to exist on your telecom operator's DLT portal: a verified Principal Entity profile for your business, a Header (the 6-character Sender ID shown instead of a phone number, registered by category), and the Content Template itself, which is reviewed and approved by the content template registrar — typically within a couple of working days — before it can carry live traffic. The PE ID, Header and Content Template ID all have to be passed along with every message you send through your SMS gateway. See the full step-by-step registration walkthrough →
Quick FAQ
Does this tool submit anything to TRAI or my telecom operator?
No. Everything runs locally in your browser via JavaScript — nothing you type is uploaded anywhere, and this tool has no connection to the DLT registry.
Can it tell me if my PE ID or Content Template ID is actually registered?
No — there's no public API for that. It only does basic format sanity checks. Always confirm against your operator's DLT portal.
What variable formats are supported?
The classic [VARIABLE] bracket style most portals still show, plus TRAI's official six tags from Annexure-I of the November 2025 direction — #numeric#, #url#, #urlott#, #cbn#, #email#, #alphanumeric# — in either bare (#numeric#) or curly-brace ({#numeric#}) notation, since portals render them differently.