How to Find the Internal Name of a SharePoint Online Column
If you've ever written a CAML query, a PnP PowerShell script, or a Power Automate flow against SharePoint, you've hit this problem: the column's display name isn't what the system actually uses internally. You need the internal name — and SharePoint doesn't show it to you directly.
Here are the ways to find it.
Method 1: List settings + URL inspection
- Go to the list, open List settings.
- Under Columns, click the column you need.
-
Look at the URL in your browser's address bar — it will contain a
Field=parameter with the internal name, usually URL-encoded (spaces become%5For_x0020_). - Decode it manually if needed —
_x0020_represents a space.
This works but is slow, and manually decoding encoded characters is error-prone, especially with special characters.
Method 2: SharePoint REST API
Query the list's fields endpoint directly:
https://yourtenant.sharepoint.com/sites/yoursite/_api/web/lists/getbytitle('YourListName')/fields?$select=Title,InternalName
This returns every field's display name next to its internal name in one call. It's reliable, but you need API access and it's not something you'll want to do every time you're mid-task in the browser.
Method 3: PnP PowerShell
If you're already in a PowerShell session:
Get-PnPField -List "YourListName" | Select Title, InternalName
Fast if you're already connected to the site, but it's a context switch away from the browser.
Method 4: One click, right on the page
The methods above all work, but they pull you out of what you're doing — into devtools, a REST client, or a PowerShell window. SPO-Assist surfaces internal names directly on the list settings page as you're viewing it, no URL decoding or separate query required. If you're doing this more than once a week, it's the fastest path.
Common gotchas
- Internal names are set once, at column creation, and don't change even if you rename the display name later — this is the single biggest source of confusion for new SharePoint admins.
-
Special characters and spaces get encoded (e.g., a space becomes
_x0020_), which is why the raw URL method requires manual decoding. - Internal names are case-sensitive in some API contexts, so copy them exactly rather than retyping.