When you are developing for SharePoint—whether you are writing a REST API call, building an SPFx web part, or crafting a Power Automate flow—you will quickly realize that the name you see on the screen isn't always the name the system uses behind the scenes. SharePoint uses a dual-naming system: the Display Name and the Internal Name (also known as the Static Name).
Understanding how to locate and manipulate these names is essential for any developer. Using the wrong name in a query will result in errors that can be difficult to debug. In this guide, you will learn exactly how SharePoint handles these identifiers and the most efficient ways to find them in any environment.
Understanding Display Name vs. Internal Name
In SharePoint, every list column has three distinct string properties that you should be aware of:
- DisplayName (Title): This is what the end user sees in the list view and on forms. It can be changed at any time without breaking the underlying data structure.
- InternalName: This is the unique identifier used by SharePoint for internal processing. It is generated when the column is first created.
- StaticName: This is typically identical to the Internal Name and is used during the deployment of features and site columns.
When you create a column named "Project Status," SharePoint sets the Display Name to "Project Status." However, it cannot use spaces in the internal identifier. Therefore, it converts the space into a hex code, resulting in an Internal Name like Project_x0020_Status.
The 32-Character Limit and Renumbering
A critical technical detail to remember is that the Internal Name is limited to 32 characters. This includes the characters used for hex encoding. If you create multiple columns with very long, similar names, SharePoint will truncate them and append a number to ensure uniqueness.
For example:
* Product Description 1 becomes Product_x0020_Description_x0020_
* Product Description 2 becomes Product_x0020_Description_x0020_0
* Product Description 3 becomes Product_x0020_Description_x0020_1
Method 1: The URL Shortcut (The Easiest Way)
The fastest way to find the internal name of a column without using any code or external tools is to check the column's settings page in your browser.
- Navigate to your SharePoint List.
- Click on the Settings (gear icon) and select List Settings.
- Scroll down to the Columns section and click on the name of the column you are interested in.
- Look at the URL in your browser's address bar. At the very end of the URL, you will see a parameter that looks like
&Field=....
For example, if the URL ends in:
/_layouts/15/FldEdit.aspx?List=%7BGuid%7D&Field=Product%5Fx0020%5FDescription
The value after Field= is your internal name. Note that the browser encodes the underscore (_) as %5F. So, Product%5Fx0020%5FDescription translates to the internal name Product_x0020_Description.
Method 2: Using the SharePoint REST API
If you are working in a modern environment or need to find names for a large number of columns programmatically, the REST API is your best friend. You can query the list schema directly through your browser or a tool like Postman.
Use the following URL format to see the raw XML or JSON data for your list items:
http://your-server/_api/lists/getbytitle('YourListName')/items
When you view the results, look for the m:properties section. You will see the internal names used as the XML tags. In some cases, especially with OData requirements, SharePoint may prepend names with OData_. For example:
<d:OData__x0031_394 m:type="Edm.Double">1874</d:OData__x0031_394>
<d:Total93toNow>57470.0000000000</d:Total93toNow>
<d:Modified m:type="Edm.DateTime">2016-08-28T15:06:56Z</d:Modified>
In the example above, OData__x0031_394 is the internal name used for that specific field in the OData context.
Method 3: Developer Tools and Inspection
For developers working on-premises or those who prefer a dedicated interface, several community tools can make this process easier:
- SharePoint Manager: This is a classic desktop application that allows you to browse the entire object model of a SharePoint farm. You can drill down into lists and fields to see every property, including the
InternalName,StaticName, andID(GUID). - U2U CAML Query Builder: If your primary goal is writing CAML queries, this tool helps you build the query visually and automatically retrieves the internal names for you.
- Browser Console: In modern SharePoint pages, you can often inspect the
ctxobject or use the_spPageContextInfoobject in the developer console to find metadata about the current list.
Best Practice: The "Create and Rename" Strategy
Because the internal name is set at the moment of creation and is very difficult to change later, experienced SharePoint developers use the "Create and Rename" strategy:
- Create the column using a short name without any spaces (e.g.,
ProductDescription). This ensures the Internal Name is clean and easy to type in code. - Save the column.
- Edit the column and change the Display Name to your desired formatted string (e.g.,
Product Description).
By doing this, your code remains clean (item['ProductDescription']), while your users still see the friendly, spaced name in the UI.
Frequently Asked Questions
Can I change the Internal Name of a column after it is created?
No. The Internal Name is permanent. If you must change it, you have to delete the column and recreate it. This is why the "Create and Rename" strategy is so important. Note that deleting a column will also delete all data stored in that column for existing list items.
Why does my internal name have "x0020" in it?
SharePoint uses Hexadecimal encoding for special characters in internal names. _x0020_ is the hex code for a space. Other special characters like hyphens or ampersands will also be encoded into similar hex strings.
Is the Internal Name the same as the Static Name?
In most cases, yes. However, if you are deploying Site Columns via XML features, you can technically define them differently. For general list columns created via the UI, they are almost always identical.
Wrapping Up
Locating the internal name of a SharePoint column is a fundamental skill for any developer. Whether you use the URL trick for a quick check or the REST API for a deeper dive into the metadata, knowing exactly which identifier to use will save you hours of troubleshooting. Always remember to check for encoding like %5F and _x0020_, and whenever possible, create your columns without spaces to keep your code maintainable.