Skip to main content
SFDC Developers
Admin

How do you convert 15-digit record ID to 18-digit ID in the formula and validation rule?

Vinay Vernekar · · 2 min read

Short answer

Use the built-in CASESAFEID() function in Salesforce formulas to convert a 15-character (case-sensitive) ID to its 18-character (case-insensitive) equivalent. In validation rules, use CASESAFEID() for comparisons or REGEX/LEN to validate 18-character IDs.

Why 15 vs 18 characters?

Salesforce stores record IDs in two formats: a 15-character case-sensitive ID (used in the Salesforce UI) and an 18-character case-insensitive ID (used by the API and external systems). The extra 3 characters are a checksum that makes the ID case-insensitive.

Formula examples

  1. Formula field (Text) that returns the 18-character ID of the current record:

CASESAFEID(Id)

  1. Convert a custom text field that contains a 15-character ID (e.g., Custom_Id__c) to 18 characters:

CASESAFEID(Custom_Id__c)

  1. Compare a user-entered ID (which may be 15 or 18 chars) to the record Id in a formula (safe, case-insensitive):

CASESAFEID(Id) = CASESAFEID(Custom_Id__c)

Validation rule examples

If you want to enforce that a text field stores the 18-character version, use one of these approaches.

a) Block saving unless the field is exactly 18 alphanumeric characters:

NOT(REGEX(Custom_Id__c, "^[A-Za-z0-9]{18}$"))

b) Block saving if the field looks like a 15-character ID (force users to provide the 18-char value):

AND(NOT(ISBLANK(Custom_Id__c)), LEN(Custom_Id__c) = 15)

c) Compare ignoring case — convert both sides to 18-char and then compare (useful when validating against another Id):

CASESAFEID(Id) <> CASESAFEID(Custom_Id__c)

When to use CASESAFEID()

- In formula fields to display or normalize IDs to the 18-character form.
- In validation rules when comparing Ids or ensuring case-insensitive equality.
- In reports, integrations and lookups where external systems expect 18-character IDs.

Notes & tips

  • CASESAFEID() returns an 18-character string. It is the simplest and most reliable method in formulas to normalize IDs.
  • For integrations, always prefer 18-character IDs to avoid case-sensitivity issues with external systems (Windows file systems, Excel, etc.).
  • If a custom field may contain non-ID values, add defensive checks (ISBLANK, LEN, REGEX) before using CASESAFEID() to avoid unexpected results.

If you need a formula-only implementation of the 15->18 conversion algorithm (checksum-based) without CASESAFEID(), that is possible but very long and error-prone — prefer CASESAFEID() unless you have a specific restriction.

Share this article

Vinay Vernekar

Vinay Vernekar

Salesforce Developer & Founder

Vinay is a seasoned Salesforce developer with over a decade of experience building enterprise solutions on the Salesforce platform. He founded SFDCDevelopers.com to share practical tutorials, best practices, and career guidance with the global Salesforce community.

Get weekly Salesforce dev tutorials in your inbox

Comments

Loading comments...

Leave a Comment

Trending Now