Virtual painting for pros.
Fast. Accurate. Mobile‑ready.

Capture or upload a room, match colors automatically, and save palettes by building & room with address and on‑hand paint supply. Works on Android & iOS.

On‑device privacyCamera + UploadGoogle Maps addressIndexedDB storageCSV export
See Features

Sherwin‑Williams® is a registered trademark of The Sherwin‑Williams Company. XM Color Checker is not affiliated with or endorsed by Sherwin‑Williams.

Privacy‑first • Runs in the browser • Nothing uploaded
Built for phones • Camera & touch friendly
CSV export • Bring data to Sheets/Excel

Everything you need to spec, buy, and track paint.

From capture to checkout — keep every room and palette organized by building, with address and inventory.

🎥
Upload or use the camera

Start camera on mobile or drop in photos. Great lighting? Instant results.

🎨
Auto color match

One click extracts 3–5 dominant colors to seed your palette.

🧱
Scene painting

Try colors on ready‑made rooms with precise click‑to‑fill surfaces.

📍
Address from Google Maps

Get a human‑readable address (with your API key) instead of raw lat/lng.

🗂️
Save by building & room

Keep a local database of palettes, matched colors, photos, and items.

📦
Inventory tracking

Record item details (e.g., brand/code/finish) and gallons on hand.

How it works

  1. Capture a room or upload a photo.
  2. Tap Match Colors to auto‑extract your palette.
  3. Fill building, room, and use Get Location for the address.
  4. Add item details & gallons, then Save Session.
  5. Open View Saved to browse cards or a spreadsheet‑like view; export CSV.
  • Mobile optimized for Android & iOS.
  • Local‑first: palette in LocalStorage; sessions in IndexedDB.
  • No cloud by default — nothing leaves the device unless you export.
  • Vendor‑friendly: track exact brand codes in your items.

Simple, transparent pricing

Commercial license with annual updates and priority support.

Solo

$89 /year
  • 1 user • 2 devices
  • Single‑file app (HTML)
  • Camera + Upload + Match
  • Local DB & CSV export
  • Email support

Enterprise

Custom
  • Unlimited users
  • On‑prem guidance
  • SSO & admin controls
  • SLAs & custom terms
  • Dedicated success

Why XM Color Checker?

CapabilityXM Color CheckerGeneric color apps
Mobile camera + uploadVaries
Address via Google Maps✔ (key required)✖/Varies
Local database (IndexedDB)
CSV export
Single‑file deploy
Works offline after load✖/Varies

Loved by contractors & designers

“Perfect for job walks. I snap a room, match colors, and save the palette with the address. No more guessing at the store.”

— Contractor, Miami

“Clients see options instantly. The spreadsheet view and CSV export make ordering painless.”

— Interior Designer, Austin

“Zero setup. It just runs in the browser on our phones.”

— Property Manager, Phoenix

Frequently asked questions

Does the app work offline?
Yes. After the page loads, most features work offline. Camera/geocoding need permissions; geocoding requires internet.
Is my data uploaded?
No. Palettes live in LocalStorage and sessions in IndexedDB on your device. Nothing is uploaded unless you export.
How do I get the address instead of lat/lng?
Enter your Google Maps Geocoding API key in the app’s Location panel, then tap “Get Location.” The request happens from your browser.
Can I preload vendor color libraries?
Yes. The app includes a sample and can be extended with licensed catalogs. Sherwin‑Williams® and other brands remain the property of their owners.
What is the license?
Commercial license for your organization. You may host and use the single‑file app internally with the number of users in your plan.

Get started

Try XM Color Checker free — instantly download a single‑file HTML trial you can open locally or host over HTTPS.

Camera requires HTTPS on mobile. Hosting on Netlify, GitHub Pages, Vercel, or S3 works great.

Prefer to talk?

Email sales@yourdomain.com or call +1 (555) 123‑4567.

  • Setup help for HTTPS hosting
  • Branding & palette preload
  • Volume pricing
`; function downloadTrial(){ const blob = new Blob([TRIAL_HTML], {type:'text/html'}); const a=document.createElement('a'); a.href=URL.createObjectURL(blob); a.download='xm-color-checker-trial.html'; a.click(); URL.revokeObjectURL(a.href); } document.getElementById('downloadTrial').addEventListener('click', downloadTrial); document.getElementById('downloadTrial2').addEventListener('click', ()=>{ downloadTrial(); close(mod('ctaModal')); });