Excel Color Palette: Three You Can Copy Today
By Mark Fulton · 2026-08-27 · 16 min read

Colour advice for spreadsheets nearly always stops at the level of principle. Limit yourself to a few colours. Stay consistent. Use restraint. All true, and none of it helps at the moment you are staring at Excel's colour picker with a deadline. A spreadsheet needs exactly six colour values: a header fill, a header text colour, a body text colour, a hairline rule for the grid, a banding tint for alternating rows, and one accent. Everything else on the sheet is either white or one of those six. Below are three complete sets you can paste in as hex codes, and every text pairing in them has been run through the WCAG contrast formula so you are not taking my word for whether they are readable.
That last part matters more than it sounds. Most published spreadsheet palettes assert that they are "accessible" without ever showing a number. I picked these values, so I had no business asserting anything. I wrote a short script implementing the WCAG relative-luminance formula and computed every pairing, then adjusted the hex codes until each one cleared the threshold. The ratios in the tables below are the output of that script, stated to one decimal place.
Which six colours does a spreadsheet actually need?
Six, because a formatted sheet only has six jobs for colour to do.
Header fill is the block behind your column labels. It is the single strongest signal in the whole sheet that a table starts here.
Header text sits on that fill. It is almost always white or near-white, and it is the pairing most likely to fail if you picked your header fill by eye.
Body text is the colour of every number and label in the data. It should not be pure black. Pure black on white is harsh at small sizes and makes the sheet look like a printout from 1998.
Hairline rule is the border colour that separates rows or columns where you actually need separation. It should be barely there. A rule you notice is a rule that is too dark.
Banding tint is the alternating row fill. Whether you want banding at all is a separate question that comes down to table width, and I have written about when banded rows help and when they clutter rather than repeat it here.
Accent is one colour, used for one thing. Totals, or the highlighted column, or negative values. Not all three.
Here are three complete sets. RGB values are included because not every Excel build gives you a hex box, which I get into in the next section.
Palette one: neutral slate
The default. Works for anything, offends no one, reads as competent rather than designed.
| Slot | Hex | RGB | Where it goes | Contrast check |
|---|---|---|---|---|
| Header fill | #1F2A37 |
31, 42, 55 | Fill behind the header row | Carries the header text below |
| Header text | #FFFFFF |
255, 255, 255 | Header row font colour | 14.5:1 on #1F2A37 |
| Body text | #24292F |
36, 41, 47 | All data cells | 14.7:1 on white, 13.3:1 on the band |
| Hairline rule | #D6DBE1 |
214, 219, 225 | Bottom border under header, outer table edge | 1.4:1 on white, non-text by design |
| Banding tint | #F2F4F7 |
242, 244, 247 | Every second data row | 1.1:1 against white, a whisper |
| Accent | #0B5CAD |
11, 92, 173 | Totals row text, one highlighted column | 6.7:1 on white, 6.1:1 on the band |
Palette two: financial green
For budgets, forecasts and anything a finance team will open. The deep green header reads as ledger without being literal, and the accent is a muted red reserved for negatives.
| Slot | Hex | RGB | Where it goes | Contrast check |
|---|---|---|---|---|
| Header fill | #0F3D2E |
15, 61, 46 | Fill behind the header row | Carries the header text below |
| Header text | #FFFFFF |
255, 255, 255 | Header row font colour | 12.2:1 on #0F3D2E |
| Body text | #1C2B24 |
28, 43, 36 | All data cells | 14.8:1 on white, 13.3:1 on the band |
| Hairline rule | #CBD8D1 |
203, 216, 209 | Bottom border under header, outer table edge | 1.5:1 on white, non-text by design |
| Banding tint | #EEF4F1 |
238, 244, 241 | Every second data row | 1.1:1 against white |
| Accent | #9A2A24 |
154, 42, 36 | Negative values only | 7.7:1 on white, 6.9:1 on the band |
A note on that accent. Colouring negatives red is a formatting choice, not a font choice, and the cleanest way to do it is inside the number format itself rather than by painting cells. The syntax for that lives in the guide to Excel number formatting.
Palette three: muted dark
For sheets that live on screen and never get printed. Dark sets are genuinely harder, because they need one value the light sets get for free: the sheet fill itself. On a light palette that is white and you never think about it. On a dark one you have to choose it, and everything else is measured against it.
| Slot | Hex | RGB | Where it goes | Contrast check |
|---|---|---|---|---|
| Header fill | #11161C |
17, 22, 28 | Fill behind the header row | Carries the header text below |
| Header text | #E8EDF2 |
232, 237, 242 | Header row font colour | 15.4:1 on #11161C |
| Body text | #DCE3EA |
220, 227, 234 | All data cells | 12.4:1 on the sheet fill, 11.1:1 on the band |
| Hairline rule | #303A46 |
48, 58, 70 | Bottom border under header, outer table edge | 1.4:1 on the sheet fill |
| Banding tint | #222B35 |
34, 43, 53 | Every second data row | 1.1:1 against the sheet fill |
| Accent | #6FB2E8 |
111, 178, 232 | Totals row text, one highlighted column | 7.0:1 on the sheet fill, 6.3:1 on the band |
The seventh value: sheet fill #1B222B, RGB 27, 34, 43. Apply it to every cell in the used range, or to the whole sheet if you want the dark to run to the edges. Skip this step and you get dark headers floating on a white grid, which looks like a mistake rather than a choice.
Where do you paste a hex code in Excel and Sheets?
Three different answers, and they have diverged enough that assuming the Windows path will send Mac and browser users in circles.
Excel on Windows desktop. Select the cells, then Home and the arrow next to Fill Color, then More Colors, then the Custom tab. The keyboard route is Alt+H, H. On current Microsoft 365 builds the Custom tab has a Hex box sitting alongside the red, green and blue fields, and you can type #1F2A37 straight into it. On older perpetual builds it may not be there. Microsoft's own help page for adding or changing the background colour of cells in Excel still documents only the RGB and HSL fields, which is exactly why the tables above carry RGB triplets. If there is no hex box, type the three numbers instead and you land on the identical colour.
Excel for Mac. Same ribbon path, and hex entry arrived on Mac ahead of Windows, so the field is there.
Excel for the web. Same Home then Fill Color then More Colors route. The one documented gap is that pattern fill effects are not available in the browser version, which does not affect a flat hex fill at all.
Font colour, all platforms. Home, then the arrow next to Font Color, then More Colors, then the same Custom tab. Your recent custom colours accumulate in a Recent Colors strip under the picker, which is the fastest way to apply the same six values across a sheet once you have entered them once.
Google Sheets. Select the cells, click the paint bucket Fill color in the toolbar, then under Custom click Add a custom color and type the hex code. Google's page on changing the colour of text, objects and backgrounds is explicit that once you create a custom colour it becomes available anywhere else in that file, which is the behaviour you want when applying six values across a dozen tabs. The eyedropper next to the hex field only works in Chrome and Edge. Hex typing works everywhere.
One path worth knowing but not using today: Page Layout, then Themes, then Colors, then Customize Colors sets the theme colour swatches for the whole workbook. That is the right tool when a whole organisation needs a palette, and the wrong tool when you need one sheet formatted by Thursday, because it changes chart colours and conditional formatting defaults at the same time.
Why do most spreadsheet palettes fail on contrast?
Because they are chosen on a bright laptop screen with the lid at a good angle, and then read on a projector, a printout, or a phone.
The threshold worth knowing is short. The W3C's minimum contrast criterion requires 4.5:1 between text and its background for normal text at Level AA, relaxing to 3:1 only for text at 18 point or 14 point bold. Spreadsheet body text is typically 10 or 11 point. It never qualifies for the relaxed threshold, so 4.5:1 is the number, always.
Two specific failures account for most of it.
The mid-tone header. Someone picks a pleasant medium blue for the header fill, puts white text on it, and it looks fine. Medium blues and medium greens sit in the zone where neither white nor black text clears 4.5:1. A colour like #00A3E0 gives white text 2.9:1 and dark text 5.1:1, so it needs dark text, which is not what anybody expects a header to look like. The fix is to go darker than feels necessary. Both light palettes above use header fills that clear 12:1 with white, and that headroom is what keeps them readable on a washed-out projector.
The banding tint that crept darker. A tint chosen to be "clearly visible" starts eating into the contrast of the text sitting on it. The tints above are deliberately faint, at 1.1:1 against white. That is enough to track a row across a wide table and light enough that body text loses almost nothing: 14.7:1 on white becomes 13.3:1 on the band. If you find yourself darkening a banding tint to make it show up, the actual problem is usually column width or row height rather than colour, which is covered in making a spreadsheet look professional.
There is a third failure that contrast maths cannot catch. WCAG's use-of-color criterion states that colour must not be "the only visual means of conveying information", and a sheet where red cells mean "over budget" and nothing else says so fails that regardless of how good the ratios are. Microsoft's guidance on making Excel documents accessible makes the same point. Pair every colour signal with a word, a symbol, or a number format. The spreadsheet accessibility checklist works through the rest of it.
How do you add a brand colour without wrecking the set?
This is the request that arrives about ten minutes after you finish formatting: can we make it our brand colour?
Usually yes, and the rule is one line. A brand colour can take one slot, and which slot it takes is decided by its contrast, not by preference.
Run the brand hex against white text and against your body text colour. Three outcomes:
It clears 4.5:1 with white text. It can be the header fill. Deep blues, purples and burgundies land here. A purple like #7B2CBF gives white text 7.1:1, which is plenty.
It clears 4.5:1 as text on white but not with white text on it. It becomes the accent instead. A bright orange like #FF6B00 gives white text only 2.9:1, so it fails as a header fill, but the same colour as text on white also sits at 2.9:1 and fails there too. Colours in this middle band cannot carry text in either direction. They can still be used as a thin rule, a small fill on a cell that contains no text, or a chart series.
It is a light colour like a yellow. #FFC72C gives white text 1.6:1 and dark text 9.4:1. It works as a highlight fill under dark body text and nowhere else. Do not put a header on it.
Then stop. Take the brand colour into one slot and leave the other five as they are. The failure mode with brand palettes is not picking the wrong colour, it is picking four of them and using all four, at which point the sheet has no visual hierarchy left because everything is emphasised. If you want colour that carries meaning rather than identity, that is a different tool, and the rules for it are in conditional formatting that actually helps.
What happens to your palette in greyscale print?
It gets flattened, and you can predict exactly how.
A mono printer converts each colour to a single grey level using roughly the same weighted formula as the contrast calculation. Running the palettes above through it gives numbers rather than guesses.
| Fill | Prints as | Ink coverage |
|---|---|---|
| White sheet | grey 255 | 0 percent |
Neutral band #F2F4F7 |
grey 244 | 4 percent |
Financial band #EEF4F1 |
grey 243 | 5 percent |
Neutral header #1F2A37 |
grey 41 | 84 percent |
Financial header #0F3D2E |
grey 50 | 80 percent |
Dark sheet fill #1B222B |
grey 33 | 87 percent |
Read that table as three decisions.
The banding tints all but vanish, and that is correct. At 4 to 5 percent ink they cost nothing and print as clean white on most office lasers. A banding tint that survives greyscale printing is a tint that was too heavy on screen.
The headers print as near-solid blocks, and white header text survives. 80 to 84 percent coverage is a lot of toner across a header row, but the text stays legible, which is the priority.
The dark palette must never be printed. The sheet fill alone would flood the page at 87 percent coverage. If there is any chance the file gets printed, use one of the light sets. The rest of the print decisions, margins, scaling and repeated header rows, are in printing Excel on one page.
One trap worth naming. Excel's standard red and standard green, the two swatches people reach for to mean bad and good, land at grey 54 and grey 92 in mono. That is a gap of 38 on a 255 scale, under 15 percent, on two colours the reader is being asked to tell apart at a glance. This is the use-of-color criterion again, arriving through the printer. Add a sign, a word, or a bracketed negative in the number format, and the meaning survives the trip.
When should a cell have no fill at all?
Most of the time, and this is the part palette articles skip because "here is a colour" is a more satisfying answer than "here is where to stop".
No fill is the correct choice for the entire data body. Every cell that holds an ordinary number gets white, or in the dark set the sheet fill, and nothing else. Colour in a table works by exception. The header is filled because it is not data. Every second row may carry a faint tint because tracking across a wide table is a real problem. The totals row may carry the accent because it is a conclusion. Everything else stays empty, and that emptiness is what makes the three filled things read as meaningful.
Two more places to leave the fill alone.
Input cells. The convention of shading cells a user is meant to type into is fine, but it needs to be one tint used consistently and explained in a legend, not a colour picked per sheet. If you are shading inputs, that tint is your accent slot spent. Choose accordingly.
Cells you are colouring because you are not sure what else to do with them. This shows up as a spreadsheet with seven fill colours and no key, where the person who made it can no longer remember what the pale orange meant. If a colour is doing a job you cannot state in one sentence, remove it. More on that structural side in Excel table design best practices.
Apply a palette instead of picking one
Six values, three tables, and roughly ten minutes of clicking through colour pickers to apply them by hand across a header row, a banding rule, a totals row and a set of borders.
Or skip that part. SuperSheet's five themes ship as complete palettes with these decisions already made, so you drop in your .xlsx or .csv, pick a theme, and download a file with the header fill, banding, rules and accent already applied along with real number formats and a frozen header. Everything runs in your browser and nothing is uploaded. Have a look at the five themes, or drop a file straight onto the formatter if you would rather see the result first.
Worth being straight about the limits. SuperSheet applies formatting. It does not unmerge cells or pull apart a tab that has three tables stacked on top of each other, because guessing at someone's data structure is how you quietly destroy a file. If your sheet has that going on, sort the structure out first, then bring it back for the colour.
Frequently asked questions
How many colors should a spreadsheet use?
Six named values, of which usually four are visible at any moment: the header fill, the header text on it, the body text, and one accent. The hairline rule and the banding tint are close enough to their backgrounds that most readers never consciously register them. If you are counting more than six distinct values on a sheet, some of them are almost certainly not doing a job you could name out loud.
Can I use my company's brand colors in Excel?
Yes, in one slot. Test the brand hex against white text and against your dark body text. If white text on it clears 4.5:1 it can be the header fill. If it fails there but works as text on white, make it the accent. If it fails both, which happens with mid-tone blues, greens and oranges, it can still be a rule, a chart series or a small fill on a cell with no text in it. What breaks a sheet is taking four brand colours and using all four.
Where do I enter a hex color in Excel?
Home, then the arrow next to Fill Color, then More Colors, then the Custom tab, where current Microsoft 365 builds on Windows and Mac show a Hex box next to the red, green and blue fields. Excel for the web uses the same path. Older perpetual builds may show only the RGB fields, which is why each palette above lists its RGB triplets. For font colour, the same route via the Font Color arrow. In Google Sheets it is the Fill color bucket in the toolbar, then Add a custom color under Custom.
Do custom colors survive when the file opens in Google Sheets?
Cell fills and font colours do. They are stored as explicit colour values in the file, so a header filled with #1F2A37 in Excel opens as #1F2A37 in Sheets. What does not travel cleanly is anything tied to Excel's theme system. Colours applied from the Theme Colors row of the picker, or a custom theme set through Page Layout and Customize Colors, can shift, and Excel table styles with banded rows turned on do not map to Google's alternating colours feature. This is the practical argument for entering the six values as explicit custom colours rather than building a theme, if the file is going to move between the two.