Identity and Privacy

    TCF 2.3 decoder: read any TC String, including the Disclosed Vendors segment

    Published · Last updated
    Next scheduled review:

    This TCF consent string decoder reads any IAB Europe TC String and shows every field in plain English: the core segment, the Disclosed Vendors segment that TCF 2.3 made mandatory, and the Publisher TC segment. It flags strings that break the 28 February 2026 rule. Decoding runs in your browser and nothing is stored.

    Decode a TCF string

    Your string is decoded in your browser. We do not receive or store it.

    Paste a string from the user.consent field of a bid request, from a gdpr_consent URL parameter, or from your consent management platform's API output. The decoder names each purpose and vendor from the current Global Vendor List and tells you which checks the string fails.

    Contents

    Key facts

    • TCF 2.3 made Disclosed Vendors mandatory. IAB Europe released v2.3 on 19 June 2025 and ended the transition on 28 February 2026. Strings created after that date without the segment "will be considered invalid", while older strings stay valid until users renew their choices (IAB Europe, updated 15 December 2025).
    • TCF 2.4 changed the vendor list, not the string. IAB Europe published the v2.4 specifications on 23 July 2026, with CMP deadlines of 23 October 2026 for web and 23 February 2027 for app and CTV (IAB Europe letter, 16 July 2026). The specification's version history lists v2.4 as a change to the GVL format (IAB Tech Lab, TC String specification, May 2026 entry).
    • Old policy versions are invalid. TCF v2.2 raised the policy version to 4, and strings with a lower version are "deemed invalid" after 30 September 2023 (IAB Tech Lab, TC String specification).
    • The vendor list keeps moving. On 9 November 2026 the Global Vendor List was at version 184, with policy version 5 and 1,037 active vendors, last updated on 5 November 2026 (IAB Europe, GVL v3, fetched 9 November 2026).
    • The string is personal data in many cases. The Court of Justice of the EU held on 7 March 2024 that a TC String is personal data when it can be linked to an identifier such as an IP address (CJEU, C-604/22). That is why this decoder keeps nothing.
    Jump to the table

    How to use the decoder

    1. Paste the string. Any TC String works, with or without its optional segments. If you paste a Global Privacy Protocol string (it starts with D and contains ~), the decoder offers to open section 2 here or send you to the GPP consent string decoder.
    2. Read the summary card. It shows the version, the CMP, the dates, the policy version and a pass, warning or error badge for each check.
    3. Open the segments. Each segment lists its fields in order, with the raw bits on hover and a plain-English label for every purpose and special feature.
    4. Look up a vendor. Type a vendor ID or name to see its consent bit, its legitimate interest bit, whether the CMP disclosed it, and any publisher restriction that names it.
    5. Copy or share. Copy the decoded JSON, or copy a link. The link keeps the string in the URL fragment, which browsers do not send to our server.

    What a TC String contains

    A TC String is a compact record that a consent management platform (CMP) writes after a user makes choices in a banner. It follows the IAB Europe Transparency and Consent Framework (TCF). Vendors decode it to learn what the user agreed to, and the string travels with the ad request as a consent string.

    The string is URL-safe base64. Each character carries six bits, and the fields are read left to right in a fixed order (TC String specification). Segments are joined with a dot. The core segment always comes first; the other segments carry a three-bit type so that they can appear in any order.

    The core segment holds 16 fixed fields before the vendor sections. The table below lists them in decoding order, which is the order the decoder shows.

    TCF 2.3 changes and the 28 February 2026 deadline

    Before version 2.3, a vendor that relied only on special purposes could not tell two cases apart. A zero in its legitimate interest bit might mean the CMP never showed it, or it might mean the user objected. IAB Europe fixed the ambiguity by making the Disclosed Vendors segment mandatory (IAB Europe, updated 15 December 2025).

    The rule now has three parts. Strings created after 28 February 2026 without the segment are invalid. Strings created before 1 March 2026 without it remain valid until users renew or change their choices. Vendors must check their own bit in the segment before processing for special purposes. The specification adds that the old workaround, setting the legitimate interest bit for special-purpose-only vendors, was removed in April 2026 (IAB Tech Lab, TC String specification).

    The decoder applies the date rule automatically. It reads the Created field, compares it with 1 March 2026, and reports the result in the summary card. A string without the segment and created on 13 January 2026 gets a note. The same string created on 13 March 2026 gets an error.

    Worked example: the specification's own string

    The IAB Tech Lab specification shows this three-segment example (TC String specification, "TC String Format"):

    CQSbk4AQSbk4ANwAAAENAwCgAAAAAAAAAAYgACPAAAAA.IDKQA4AAgAKAGQAygAAA.YAAAAAAAAAAA

    Two things stand out. The structure is a clean TCF 2.3 string, with the Disclosed Vendors segment present and every consented vendor disclosed. But the policy version is 2, so the decoder marks the string invalid under the 30 September 2023 rule. The specification uses it to show the format, not as a live consent record. That is a useful habit to copy: decode first, then read the warnings.

    Official test strings you can try

    Every string below comes from the IAB Tech Lab specification or from IAB test code on GitHub. Paste any of them to see the full decode.

    The fifth string is the most instructive. Four vendors have consent, yet the CMP disclosed none of them. A vendor that reads only its consent bit would process; a vendor that also reads the Disclosed Vendors bit would stop. The decoder reports the mismatch for each vendor.

    What the checks mean

    The decoder separates errors, warnings and notes. An error means the string cannot be read or the specification calls it invalid. A warning means a vendor that follows the specification should not rely on the string as it stands. A note is information.

    The decoder does not decide whether you have a legal basis to process data. It reports signals. What those signals allow under the GDPR and the ePrivacy Directive is covered in GDPR, ePrivacy and the bidstream. How to wire the string through OpenRTB, Prebid and GPP is covered in GPP and TCF implementation for engineers and in OpenRTB 2.6 explained.

    Methodology and limits

    The decoder follows the IAB Tech Lab TC String specification as published on GitHub on 9 November 2026. Purpose, feature and vendor names come from the GVL version the string names when that file is still published, and from the current GVL otherwise. The decoder tells you which one it used.

    It checks only what the specification defines. It cannot tell whether the CMP showed a fair banner, whether the user saw the vendors it lists, or whether a country's rules on cookie banners differ. For those questions, see cookie banner rules by country and the EU Digital Omnibus tracker, which follows proposed changes to the consent rules themselves.

    The hub for consent, identity and legitimate interest topics is identity and privacy.

    FAQ

    What is a TC String?
    It is the encoded record a registered CMP writes under the IAB Europe Transparency and Consent Framework. It lists the user's choices per purpose and per vendor, the publisher's restrictions, and the vendors the CMP disclosed. Vendors read it before they process personal data or access a device.
    What changed in TCF 2.3?
    TCF 2.3 made the Disclosed Vendors segment mandatory, so vendors can tell "not shown" from "objected". IAB Europe released it on 19 June 2025 and closed the transition on 28 February 2026 (IAB Europe). The fields inside the core segment did not change.
    What happens to strings without Disclosed Vendors after 28 February 2026?
    Strings created after that date without the segment are invalid. Strings created before 1 March 2026 stay valid until users renew or change their choices (IAB Europe). The decoder reads the Created date and tells you which case applies.
    Does TCF 2.4 change the TC String?
    Not its bit layout. Version 2.4 adds standard texts and feature illustrations to the GVL and renames special feature 2. CMPs had to adopt it by 23 October 2026 for web and must do so by 23 February 2027 for app and CTV (IAB Europe, 16 July 2026). A v2.4 string decodes exactly like a v2.3 string.
    Is it safe to paste a real user's TC String here?
    The decoding runs in your browser and the string is not sent to our server or stored. Treat the string as personal data anyway, because the CJEU held on 7 March 2024 that it can be (C-604/22). Prefer test strings when you can.
    Can I decode a GPP string here?
    Partly. If you paste a GPP string, the decoder extracts section 2, which carries the TC String, and decodes it. For the header and the US or Canadian sections, use the GPP consent string decoder.

    How this works on owned infrastructure

    The question this decoder answers, what a single TC String allows, is asked millions of times a day inside bidders and exchanges. Where that check runs matters. If consent evaluation happens in a third-party service, the string and the IP address that makes it personal data leave your environment before any decision is made. AdSovereign is an on-premise RTB stack whose exchange and bidder are designed to read the TC String, the Disclosed Vendors bit and publisher restrictions inside infrastructure you control, and to keep the decision log under your own retention policy. The security page lists the controls it supports; the architecture page shows where consent is evaluated in the request path.

    Sources

    1. IAB Tech Lab, "Transparency and Consent String with Global Vendor & CMP List Formats" (TCF specification, version history through May 2026; accessed 9 November 2026). https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/TCFv2/IAB%20Tech%20Lab%20-%20Consent%20string%20and%20vendor%20list%20formats%20v2.md
    2. IAB Europe, "All You Need to Know About the Transition to TCF v2.3" (updated 15 December 2025). https://iabeurope.eu/all-you-need-to-know-about-the-transition-to-tcf-v2-3/
    3. IAB Europe, "TCF Policies v5.0.b and Specifications v2.4: confirmation of the timeline" (letter, 16 July 2026). https://iabeurope.eu/wp-content/uploads/TCF_V-CMP_comms_TCFpoliciesV5.0.bAndSpecificationsV2.4ConfirmationOf-theTimeline_160726_IABEurope.pdf
    4. IAB Europe, Global Vendor List v3 (vendorListVersion 184, lastUpdated 5 November 2026; fetched 9 November 2026). https://vendor-list.consensu.org/v3/vendor-list.json
    5. IAB Tech Lab, TCF Implementation Guidelines ("What changed in v2.3?"; accessed 9 November 2026). https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/TCFv2/TCF-Implementation-Guidelines.md
    6. IAB Tech Lab, iabtcf-es reference library, core test file ReportedIssues.test.ts (repository state of 1 September 2026). https://github.com/InteractiveAdvertisingBureau/iabtcf-es/blob/master/modules/core/test/ReportedIssues.test.ts
    7. IAB Tech Lab, iabtcf-es CLI README (accessed 9 November 2026). https://github.com/InteractiveAdvertisingBureau/iabtcf-es/blob/master/modules/cli/README.md
    8. IAB Tech Lab, iabtcf-es CMP API test file ReportedIssues.test.ts (accessed 9 November 2026). https://github.com/InteractiveAdvertisingBureau/iabtcf-es/blob/master/modules/cmpapi/test/ReportedIssues.test.ts
    9. IAB Tech Lab, iabgpp-es reference library, GppModel.test.ts (repository state of 3 August 2026). https://github.com/IABTechLab/iabgpp-es/blob/master/modules/cmpapi/test/GppModel.test.ts
    10. Court of Justice of the European Union, Case C-604/22, IAB Europe (judgment of 7 March 2024). https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:62022CJ0604
    Changelog
    • 9 November 2026. First edition: decoder specification for TCF 2.2, 2.3 and 2.4 strings, 12 test vectors, TCF 2.3 date rule. Next review 9 February 2027.