Guide · Compliance

TIFA, LGUDID and WAID: advertising IDs on Smart TVs

Every TV platform handles identifiers differently: Samsung has a proper resettable advertising ID, LG only a device ID that needs the user's agreement, Whale TV passes its ID through ad macros, and Titan OS exposes several. Here is what each one is, how to read it, and how to stay on the right side of privacy rules.

The IDs side by side

As documented by each platform, October 2026
PlatformIDWhat it isResettableLimit Ad Tracking
Samsung TizenTIFAAdvertising IDYes (PSID reset, factory reset)Yes, isLATEnabled()
LG webOSLGUDIDDevice unique ID; user agreement requiredNot documentedNo public flag
Whale TVWAIDAdvertising ID in ad macrosYes, per Whalelmt in the VAST tag
Titan OSWhaleAdID, ifaAdvertising IDs in the Titan SDKNot documentedNot documented

Samsung Tizen: TIFA

The Tizen Identifier for Advertising is resettable by the user (a PSID reset or a factory reset), supports Limit Ad Tracking, and per Samsung is not linked to personal information or the device's DUID. The adinfo privilege is public and available since Tizen 2.4.

<!-- config.xml -->
<tizen:privilege name="http://developer.samsung.com/privilege/adinfo"/>
const tifa = webapis.adinfo.getTIFA();
const lmt = webapis.adinfo.isLATEnabled() ? 1 : 0;
// Ad request: ifa = tifa, ifa_type = "tifa", lmt = lmt

When Limit Ad Tracking is on, Samsung says no interest-based ads may be shown: send lmt=1 and expect contextual ads only.

LG webOS: LGUDID

LG offers no public advertising ID to third-party apps. LGUDID is a device unique ID, generated from the MAC address as a seed plus a random UUID, available from webOS TV 3.0. LG's reference says you must get the user's agreement to use their personal information before calling the API, and it doesn't document a reset.

webOS.service.request("luna://com.webos.service.sm", {
  method: "deviceid/getIDs",
  parameters: { idType: ["LGUDID"] },
  onSuccess: (res) => {
    const entry = res.idList.find((i) => i.idType === "LGUDID");
    // entry.idValue: use only with the user's agreement
  },
  onFailure: () => { /* use your own install ID */ },
});

Because it isn't resettable as far as LG documents, treat LGUDID as a persistent device identifier: ask first, and prefer your own resettable install ID where you can. How exchanges label it in bid requests varies; ask your demand partners.

Whale TV: WAID

Whale TV's ad macros include [whale_ad_id], the WAID: a "unique resettable ID" in UUID format, sent with ifa_type waid (or ppid when you use an app-level ID), plus an lmt parameter; a separate [device_lmt] macro controls IP obfuscation. The macros are filled through Whale's WhaleAds SDK.

We could not find a public API for a third-party HTML5 app to read the WAID directly. Whale's development guide says to use cookies if you need to identify a device. Until an API is public, use an app-level ID.

Titan OS: WhaleAdID and ifa

The Titan SDK's getDeviceInfo() returns, under Product: WhaleAdID ("the advertising ID"), and ifa with ifaType (example type dpid). It also returns deviceID and mac, which are hardware identifiers and shouldn't be used for advertising.

import { getTitanSDK } from "@titan-os/sdk";

const { Product } = await getTitanSDK().deviceInfo.getDeviceInfo();
const adId = Product.WhaleAdID && Product.WhaleAdID !== "unknown" ? Product.WhaleAdID : null;

Titan notes that the IFA is currently not returned on 2020 to 2022 Philips devices, so a fallback is required.

Fallback: your own install ID

Every app needs a fallback for devices without a usable platform ID: a random UUID generated on first launch and stored by the app. It is resettable (generate a new one), scoped to your app, and not tied to the hardware. In OpenRTB it is usually sent as a publisher-provided ID (ppid).

function installId() {
  let id = localStorage.getItem("my_install_id");
  if (!id) {
    const b = crypto.getRandomValues(new Uint8Array(16));
    b[6] = (b[6] & 0x0f) | 0x40; b[8] = (b[8] & 0x3f) | 0x80; // UUID v4
    const h = Array.from(b, (x) => ("0" + x.toString(16)).slice(-2)).join("");
    id = h.slice(0, 8) + "-" + h.slice(8, 12) + "-" + h.slice(12, 16) + "-" + h.slice(16, 20) + "-" + h.slice(20);
    localStorage.setItem("my_install_id", id);
  }
  return id;
}

Use it for your own analytics too: it keeps usage numbers stable even when the user resets the platform's advertising ID.

Early access

How SofAds handles IDs

The SofAds SDK reads TIFA with Limit Ad Tracking on Tizen, LGUDID on webOS, accepts a WAID getter on Whale TV, and reads WhaleAdID on Titan OS (treating "unknown" as missing, never using deviceID). IDs are passed unchanged. Under GDPR it sends no device ID without consent. Its fallback is its own resettable install ID, which also keys the free usage analytics; without analytics consent it runs cookieless and stores no ID. Our privacy policy lists each identifier. SofAds is in early access.

SofAds for publishers

Frequently asked questions

What is TIFA on a Samsung TV?

The Tizen Identifier for Advertising: Samsung's resettable advertising ID with a Limit Ad Tracking flag, read with webapis.adinfo.getTIFA().

Is LGUDID an advertising ID?

No. LG documents it as a device unique ID and requires the user's agreement before you use it. LG has no public advertising ID for third-party apps.

What is WAID?

Whale TV's advertising ID: a unique, resettable UUID passed to ad servers through the [whale_ad_id] macro.

What should I do when Limit Ad Tracking is on?

Send the flag with the ad request (lmt=1) and show only contextual ads. Samsung says no interest-based ads may be shown when it is on.

Sources

Checked on October 7, 2026. Platform rules change; when a source and this page disagree, the source wins.

  1. Samsung Developers: Tizen Identifier for Advertising (TIFA)
  2. Samsung Developers: AdInfo API reference
  3. LG webOS TV Developer: Device unique ID (LGUDID)
  4. Whale TV Partner Portal: Advertising
  5. Whale TV Partner Portal: Ad macros
  6. Whale TV Partner Portal: Development
  7. Titan OS docs: Titan SDK

Building a TV game or app? Join the early access.