Skip to main content

How to Hide the Title Column of a SharePoint List with the REST API

· 7 min read
Jagdish Kumawat
Founder @ Dewiride

Every SharePoint list has a Title column, and you can't delete it. When a list uses its own columns instead, the usual answer is to make Title optional and hide it from the forms and the view. This guide does that with five REST requests from Power Automate, and checks the view before changing it, so the flow can run again safely.

Why Not Rename It​

A list's Title keeps the internal name Title even if you change its display name, which is confusing for anyone who reads the list later. The Career Development Plan lists use their own Competency column and hide Title instead, as Part 2 explains.

Prerequisites​

The example is the setup flow from Part 11 of the Career Development Plan series. Every Uri below starts with the list, from the loop's current item:

The start of every Uri
_api/web/lists/getbytitle('@{items('For_each_list')?['title']}')

Step 1: Make Title Optional​

Make Title optional is a MERGE on the field (How to Change SharePoint List Settings with the REST API explains MERGE):

FieldValue
MethodPOST
Urithe list + /fields/getbyinternalnameortitle('Title')
HeadersAccept, Content-Type: application/json;odata=verbose, IF-MATCH: *, X-HTTP-Method: MERGE
Body
{
"__metadata": { "type": "SP.Field" },
"Required": false
}

The Make Title optional pane with Method POST, the Uri ending in /fields/getbyinternalnameortitle('Title'), the four headers and the SP.Field body with Required false

Step 2: Hide It from the Forms​

Three requests, one per form, each a POST with only the Accept header and no body:

ActionUri ends with
Hide Title in new forms/fields/getbyinternalnameortitle('Title')/setshowinnewform(false)
Hide Title in edit forms/fields/getbyinternalnameortitle('Title')/setshowineditform(false)
Hide Title in display forms/fields/getbyinternalnameortitle('Title')/setshowindisplayform(false)

The Hide Title in new forms pane with Method POST, the Uri ending in setshowinnewform(false), and only the Accept header

They match the field methods SetShowInNewForm, SetShowInEditForm and SetShowInDisplayForm in Microsoft's SharePoint client reference. I built one and copied it for the other two (How to Copy and Paste an Action).

Step 3: Check Whether the View Shows It​

In a view, Title appears as LinkTitle. Find Title in the view reads the default view's columns:

FieldValue
MethodGET
Urithe list + /defaultview/viewfields
HeadersAccept: application/json;odata=nometadata

The Find Title in the view pane with Method GET, the Uri ending in /defaultview/viewfields, and the Accept header

The response lists them in Items, such as ["LinkTitle"] on a new list. A Condition called If Title is in the view compares this with true (How to Check Whether an Array Contains a Value):

Expression
contains(body('Find_Title_in_the_view')?['Items'], 'LinkTitle')

Step 4: Remove It from the View​

In the condition's True branch, Remove Title from the view is a POST with only the Accept header:

Uri
_api/web/lists/getbytitle('@{items('For_each_list')?['title']}')/defaultview/viewfields/removeviewfield('LinkTitle')

The Remove Title from the view pane with Method POST, the Uri ending in /defaultview/viewfields/removeviewfield('LinkTitle'), and the card inside the True branch of If Title is in the view on the canvas

Don't skip the check. Removing a column that isn't in the view fails with Invalid field name., and Power Automate retries the failure for minutes (Fixed: "Invalid Field Name" BadGateway). The other four requests set values, so they can run any number of times.

The Result​

The list's view shows its own columns, and the New item form doesn't ask for Title:

The test RoleCompetencies list with the columns Competency, JobTitle, Level and IsActive, and no Title

The New item form of the test RoleCompetencies list with Competency, JobTitle, Level and IsActive, and no Title field

Part 2's hand-built lists hide Title through their content type instead, with SharePoint's settings pages. Under the hood it's stored differently, but the forms and views look the same.

Common Mistakes​

MistakeWhat happensDo this instead
Looking for Title in the view's ItemsIt's listed as LinkTitle, so the check never finds itCheck for LinkTitle
Removing it without checkingA rerun fails after long retriesCheck Items first
Hiding it but leaving it requiredItems saved without a title, such as the app's, need it optionalMake it optional too

Troubleshooting​

SymptomLikely causeFix
Invalid field name. from removeviewfieldTitle isn't in the viewCheck with contains() before removing
Title still shows in the formOne of the three form steps didn't runCheck each step's result in the run

FAQ​

Can I delete the Title column?​

No. It's built into every list, so you hide it instead.

What if someone shows Title again?​

Run the flow again. I put Title back in a test list's view with Show or hide columns, and the next run removed it.

Conclusion​

Make Title optional with a MERGE on the field, hide it from the three forms with setshowinnewform, setshowineditform and setshowindisplayform, and remove LinkTitle from the default view only when contains() finds it there. The list then looks and behaves as if Title weren't there.

Additional Resources​

Stay Updated

Subscribe to our newsletter for the latest tutorials, tech insights, and developer news.

By subscribing, you agree to our privacy policy. Unsubscribe at any time.