Suisai水彩
A color toolbox for macOS. Sample colors from anywhere on screen or out of a picture, build palettes and harmonies from them, and mix color that behaves like paint rather than light.
Palettes out of pictures
Open a picture and take up to sixteen colors from it. Dominant reads what the frame is mostly made of, Vibrant the saturated colors that still cover ground, and Spread the colors furthest apart, so a harbor photograph isn't five blues. The picture is read into memory and never stored: saving keeps the colors, never the picture.
Out in the format you work in
Copy in any of forty-one formats across web, Apple, Android, Java, .NET and OpenGL. Export the whole palette as code and data (CSS, SCSS, Sass, Less, JSON, XML, HTML, Markdown, SVG), as a PNG, or as a palette file another app reads: Adobe Swatch Exchange, GIMP palette, Apple color list.
What a job looks like
The parts are above. This is what they are for: four pieces of work, start to finish, each of them entirely on your own Mac.
Building one from nothing
- Start an empty palette; it offers four ways in
- Paste values straight down the list: hex, rgb() or oklch()
- Or take them off the screen one at a time with the dropper
- Every color is named, and one you already have is refused
- Drag to reorder, and edit any swatch in place
A color you saw somewhere
- Take it off the screen with a keystroke, from any app
- Build a harmony or a ramp on it
- Adjust the seeds until it sits right
- Save it as an .ase
- Drag it into Affinity, Illustrator or Photoshop
A palette out of a photograph
- Drop the picture in; it is read in memory and never stored
- Take the colors three ways and keep the reading you like
- Click the picture to pin anything the reading missed
- Change the count without losing the pins you placed
- Save the colors, never the photograph
A palette somebody sent you
- Open their .ase, .aco, .gpl or .clr where it sits
- Read every color, its name and its values
- Install it into the Mac color picker
- It appears in the color panel of every app on the machine
- Export the same palette as CSS custom properties
Deciding between two of them
- Press B over any swatch to send it to the Bench
- Read the difference in the gutter: hue, lightness and ΔE
- Open a mix well between two and sweep the ratio across
- Mixing is spectral, so blue and yellow make green
- Keep the mix as its own column, or send it to the palette
Straight into code
- Pick a color, or open a palette you already have
- Step a ramp through OKLab so the middle does not bunch
- Set the format once, in Settings
- Click any swatch, or drag it into the file
- Export the set as CSS, SCSS, JSON or Swift
Privacy first, no exceptions
Too many applications and services track what we do these days, even the ones we pay for. This is, to me, unacceptable. So Suisai is built the other way: I don't need to know how you use it, I don't need to know what applications you interact with, and I certainly don't need to know what websites you visit.
Suisai runs sandboxed, with the hardened runtime on. It has no analytics, no tracking, and requires no account. Any images you load in for color extraction are read locally. Nothing is uploaded. No color you sample is recorded anywhere except in your own palettes.
Suisai contains no crash reporter and sends nothing itself. Crash reporting on macOS is Apple's, and what reaches me depends on which version you have and what you have switched on. The privacy page has the detail.
The one and only thing the app does over the network is check for updates, and only in the direct purchase version. Suisai has no permission to reach the network itself, so a separate sandboxed helper makes a single request to check the latest version. The App Store version doesn't even need to do that.
If you want to tell me how you use the app, or how it has helped your work, I would love to hear it. Ideas for improvement too. But that is yours to offer, not mine to collect.
Color, as your code wants it
One palette, the same five colors, written out four ways. Nothing here was retyped.
/* indigo-ramp */
:root {
--tristesse: #080d1c;
--hắi-sư-black: #181e2e;
--blue-coal: #2a3141;
--rhino: #3e4555;
--storm-rising: #525969;
}{
"name": "indigo-ramp",
"colors": [
{
"name": "Tristesse",
"hex": "#080d1c",
"rgb": [8, 13, 28],
"hsl": [225, 56, 7],
"cmyk": [82, 74, 47, 72],
"alpha": 1.00
},
…
]
}# indigo-ramp | Name | Hex | RGB | CMYK | | --- | --- | --- | --- | | Tristesse | `#080d1c` | 8 13 28 | 82 74 47 72 | | Hắi Sư Black | `#181e2e` | 24 30 46 | 87 75 39 60 | | Blue Coal | `#2a3141` | 42 49 65 | 86 73 43 40 | | Rhino | `#3e4555` | 62 69 85 | 81 69 44 23 | | Storm Rising | `#525969` | 82 89 105 | 74 61 40 11 |
NSColor(srgbRed: 0.03, green: 0.05, blue: 0.11, alpha: 1.00)
Names come from a list of 31,914, matched in OKLab, and are made safe as identifiers. CMYK is converted through the profile you chose in Settings, so it's the same number your print workflow will see.
| macOS | 14 Sonoma or later |
|---|---|
| Architecture | Universal (Apple silicon and Intel) |
| Permissions | None |
| Network | Update checks only, and only in the direct download |
| Languages | English (British) and English (US) |