A Windows desktop tool that visually calibrates the physical arrangement of a multi-monitor setup and exports an accurate layout for use with the Spanright multi-monitor wallpaper alignment tool (Spanright repo here). This is like a calibration companion app for Spanright.
Download the latest release from the Releases page:
| Format | Description |
|---|---|
.msi |
Standard Windows installer (recommended) |
.exe |
NSIS installer |
.zip |
Portable β extract and run, no installation needed |
.tar.gz |
Compressed archive |
Requirements: Windows 10 or 11. Multiple monitors must be connected during calibration.
Most multi-monitor setups have monitors of different sizes, pixel densities, and physical gaps between them. Windows only knows about pixel coordinates β it has no idea how your screens are physically positioned on your desk. Spanright Calibrate bridges that gap:
-
Discovers monitors β enumerates all connected displays, reads resolutions, pixel positions, and physical panel dimensions via EDID. For monitors where EDID size data isn't available, it can estimate from the model name or accept a manual diagonal input.
-
Calibrates physical layout β guides you through an interactive on-screen alignment process using colored overlay lines drawn directly on your monitors:
- Scale and offset step: align horizontal colored lines across adjacent monitors to establish vertical/horizontal alignment and offset, and relative pixel density.
- Gap step: align diagonal (45Β°) lines to measure the precise physical gap between monitors.
-
Shows your real layout β renders a physical layout visualization that reflects actual monitor sizes, calibrated gaps, and height offsets β matching what your desk actually looks like.
-
Exports to Spanright β generates a configuration matching Spanright's format and can open your calibrated layout directly in the Spanright editor via a compressed URL. Also supports copying JSON to clipboard or saving to a file. An Include virtual layout checkbox lets you embed the exact Windows virtual-desktop coordinates (pixel positions from Display Settings) so Spanright can reproduce imprecise monitor offsets without manual adjustment.
-
Detailed monitor info β each detected monitor has an info panel showing everything the OS and EDID data can provide: manufacturer, model, serial number, manufacture date, native resolution, color format, bit depth, gamma, refresh rate range, connection type, and more.
This uses a method like that of the k85 wallpaper tool.
Calibration runs pairwise between adjacent monitors:
-
Scale and offset calibration β two colored horizontal lines appear spanning both monitors. You drag each line so they visually align across the physical boundary. The vertical/horizontal distance between the lines, combined with each monitor's known PPI, determines the relative scale and vertical/horizontal offset.
-
Gap calibration β two diagonal lines (always at 45Β°) appear on the boundary monitors. You drag them until they form a continuous line across the physical gap. Since the angle is fixed at 45Β°, the pixel offset directly translates to the physical gap distance in inches.
The math relies on each monitor having a known diagonal size (from EDID, a name-based estimate, or manual entry) to compute pixels-per-inch. All measurements are derived from these PPI values and the pixel offsets you set during calibration.
The following screenshots are from the calibration of my setup: left to right, a 14" 1920x1200 laptop screen, a 24" 1920x1080 primary monitor, and a 34" ultrawide 2560x1080 monitor.
Scale calibration between displays 1 and 2
Gap calibration between displays 1 and 2

Scale calibration between displays 2 and 3
Gap calibration between displays 2 and 3

Once all the calibration steps are completed, the app will show you your measured layout (a 2D representation of the physical layout of your monitors). Then the layout can be loaded directly into Spanright (opens a web link to spanright.com with the layout encoded in the URL).

- Tauri 2 β desktop app framework (Rust backend + web frontend in a native OS webview)
- React + TypeScript β frontend UI
- Rust β backend: Win32 API calls, EDID parsing, fullscreen calibration overlay windows, display config queries
- Target: Windows 10/11
- Node.js (v18+)
- Rust (install from rustup.rs)
- Platform deps: Tauri prerequisites for Windows
npm install
npm run tauri devA window titled "Spanright Calibrate" will open.
To test against a local Spanright dev server (e.g. http://localhost:5173), run Spanright web first (npm run dev in the Spanright repo), then:
npm run tauri:dev:localThis starts Calibrate's frontend on port 1421 and points "Open in Spanright" at http://localhost:5173.
To build a production binary:
npm run tauri buildThe installer will be in src-tauri/target/release/bundle/.
- Create new branch with pattern
release/vX.X.X - Bump versions in relevant files (
package.json,tauri.conf.json,cargo.toml) - Update lock files with
cargo check --manifest-path src-tauri/Cargo.toml ; npm install - Push branch, create PR into main, and merge
- Checkout main locally, pull, add tag (
git checkout main ; git pull ; git tag vX.X.X ; git push origin vX.X.X) - Check release workflow in Actions
spanright-calibrate/
βββ src/ # React frontend
β βββ App.tsx # Main app component
β βββ components/ # UI components
β β βββ MonitorList.tsx # Monitor cards + info popup
β β βββ MonitorLayoutMap.tsx # Virtual layout SVG
β β βββ PhysicalLayoutMap.tsx # Physical layout SVG
β β βββ CalibrationPanel.tsx # Calibration controls + results
β β βββ ExportPanel.tsx # Export buttons
β β βββ StatusBar.tsx # Monitor count + refresh
β β βββ AboutDialog.tsx # About modal
β βββ hooks/
β β βββ useTauriCommands.ts # Tauri invoke wrappers
β βββ spanrightUrl.ts # Spanright URL encoder
β βββ types.ts # Shared TypeScript types
βββ src-tauri/ # Rust backend
β βββ src/
β βββ lib.rs # Tauri commands
β βββ monitors/
β β βββ discovery.rs # Win32 monitor enumeration
β β βββ edid.rs # EDID parsing (physical size + detailed info)
β β βββ models.rs # Monitor data structures
β βββ calibration/
β β βββ overlay.rs # Native fullscreen overlay (GDI drawing)
β β βββ mod.rs # Calibration flow + math
β βββ export/
β βββ mod.rs # Spanright JSON export
βββ docs/
βββ PLAN.md # Detailed project specification