SharePoint column formatting

SharePoint status column color formatting

Turn a plain status column into green, yellow, and red pills so people can scan your list in a second — without writing JSON by hand.

By default, a SharePoint (or Microsoft Lists) Status column shows plain grey text: "Completed", "In Progress", "Blocked". With a small piece of column formatting JSON, you can render each value as a colored pill instead. This page shows what that looks like, the JSON behind it, and how to apply it in a couple of minutes.

Before and after

ItemStatus
Q1 launch planCompleted
Onboarding flowIn Progress
API migrationCompleted
Brand refreshBlocked
Completed = green · In Progress = yellow · Blocked = red
Build this status formatter → Opens the generator on the colored-pill template. Enter your field name, copy the JSON, done.

What the SharePoint choice pill JSON looks like

The generator produces clean JSON like the example below. Each if() matches a choice value and sets the pill's background color. You don't have to write this — it's shown so you know what you're pasting:

{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
  "elmType": "div",
  "txtContent": "[$Status]",
  "style": {
    "padding": "4px 10px",
    "border-radius": "12px",
    "color": "white",
    "background-color": "=if([$Status] == 'Completed', '#107c10', if([$Status] == 'In Progress', '#d29200', if([$Status] == 'Blocked', '#d13438', '#605e5c')))"
  }
}

This is standard SharePoint choice pill JSON: a single div with the field value as text and a conditional background color. The generator builds the nested if() for you from whatever choices you enter.

How to apply it

  1. Open the generator and pick the Click-to-Edit Pill template (or use the button above).
  2. Enter your column's internal field name — see the note below.
  3. Adjust the choice values and colors to match your list.
  4. Click Copy.
  5. In SharePoint: Column settings → Format this column → Advanced mode.
  6. Delete what's in the box, paste, click Preview, then Save.
Most common reason it doesn't work: the field name must match your column's internal name, which can differ from the display name (a column shown as "Project Status" might be ProjectStatus or Project_x0020_Status internally). See the internal field name guide to find yours.

Common questions

What column type do I need?
A Choice column works best, but a single line of text column also works as long as the values match what you put in the JSON.
Can I use my own colors?
Yes — the generator lets you set a color per choice. Use white text on dark fills (green, red) and darker text on light fills (yellow) for readability.
Why is the pill grey?
Grey is the fallback when a value doesn't match any of your choices. Check for spelling/case differences between your JSON values and the actual column values.