Turn screenshots into polished visuals. Free, open-source, offline. Built with Tauri + React.
23
stars
161
commits
TypeScript
primary language
Apr 12, 2026
updated
Turn raw screenshots into polished, shareable visuals in seconds. Free, open-source, and completely offline.
OpenShots is a cross-platform desktop app built with Tauri (Rust + React). Capture screenshots, add beautiful backgrounds, annotate with shapes and text, blur sensitive areas, and export polished results without leaving the app or sending data anywhere.
Built by the TraceKit team — the makers of TraceKit APM.
Capture
Beautify
Annotate
Export
Automation
--preset flag for beautificationDownload the latest release for your platform:
| Platform | Download |
|---|---|
| macOS (Apple Silicon) | .dmg |
| macOS (Intel) | .dmg |
| Windows | .msi |
| Linux (AppImage) | .AppImage |
| Linux (deb) | .deb |
The macOS builds are code-signed and notarized with an Apple Developer ID certificate.
Prerequisites:
# Clone the repo
git clone https://github.com/Tracekit-Dev/openshots.git
cd openshots
# Install dependencies
npm install
# Run in development
npx tauri dev
# Build for production
npx tauri build
macOS: Requires Screen Recording permission for capture. The app will prompt on first use.
Linux (Wayland): Global hotkeys are unavailable on Wayland. Use the system tray to trigger captures.
Windows: No special requirements.
| Action | macOS | Windows/Linux |
|---|---|---|
| Capture Full Screen | Cmd+Shift+4 | Ctrl+Shift+4 |
| Capture Region | Cmd+Shift+3 | Ctrl+Shift+3 |
| Capture Window | Cmd+Shift+5 | Ctrl+Shift+5 |
| Undo | Cmd+Z | Ctrl+Z |
| Redo | Cmd+Shift+Z | Ctrl+Shift+Z |
| Delete selected | Delete / Backspace | Delete / Backspace |
| Reset zoom | Cmd+0 | Ctrl+0 |
| Tools | V A R E T M B P | Same |
OpenShots includes a CLI (openshots-cli) for batch processing and automation.
macOS (Apple Silicon):
curl -L https://github.com/Tracekit-Dev/openshots/releases/latest/download/openshots-cli-darwin-arm64 -o /usr/local/bin/openshots-cli && chmod +x /usr/local/bin/openshots-cli
macOS (Intel):
curl -L https://github.com/Tracekit-Dev/openshots/releases/latest/download/openshots-cli-darwin-x64 -o /usr/local/bin/openshots-cli && chmod +x /usr/local/bin/openshots-cli
Linux:
curl -L https://github.com/Tracekit-Dev/openshots/releases/latest/download/openshots-cli-linux-x64 -o /usr/local/bin/openshots-cli && chmod +x /usr/local/bin/openshots-cli
Windows (PowerShell):
Invoke-WebRequest -Uri https://github.com/Tracekit-Dev/openshots/releases/latest/download/openshots-cli-windows-x64.exe -OutFile "$env:LOCALAPPDATA\openshots-cli.exe"
These URLs always point to the latest release. To pin a specific version, replace latest with the tag:
https://github.com/Tracekit-Dev/openshots/releases/download/v2.0.4/openshots-cli-darwin-arm64
Verify the installation:
openshots-cli --version
Presets define the beautification style: background, padding, corner radius, shadow, and inset border. 7 built-in presets ship with OpenShots. User presets are stored in ~/.openshots/presets.json.
# List all available presets
openshots-cli list-presets
# Show full config of a preset
openshots-cli show-preset ocean
# Copy a built-in preset for customization
openshots-cli copy-preset ocean --new-name my-ocean
# Create a new preset from scratch
openshots-cli create-preset my-brand
# Open presets file in your $EDITOR
openshots-cli edit-presets
Apply a preset to one or more screenshots. Adds background, padding, corner radius, shadow, and inset border.
# Single image
openshots-cli beautify --preset ocean --input screenshot.png --output ./out --format png
# Batch process with glob
openshots-cli beautify --preset clean-dark --input "screenshots/*.png" --output ./out --format png
# Export as WebP
openshots-cli beautify --preset vibrant-sunset --input shot.png --output ./out --format webp --quality 85
Add text annotations to images. Use --preset to also apply beautification.
# Text on raw image
openshots-cli annotate --input shot.png --output annotated.png \
--text "Draft" --text-x 50 --text-y 50 --font-size 48 --color "#ff0000"
# Text + preset beautification
openshots-cli annotate --input shot.png --output styled.png \
--text "v2.0" --text-x 20 --text-y 20 --font-size 32 --color "#ffffff" \
--preset ocean
Pixelate regions to hide sensitive content. Coordinates are x,y,width,height. Use ; to separate multiple regions.
# Pixelate a region
openshots-cli privacy --input shot.png --output redacted.png \
--regions "100,100,300,200" --intensity 20
# Multiple regions + preset
openshots-cli privacy --input shot.png --output styled.png \
--regions "100,100,300,200;500,50,150,100" --intensity 25 \
--preset clean-dark
Convert format, adjust quality, or scale. Use --preset to beautify during export.
# Convert PNG to WebP
openshots-cli export --input shot.png --output shot.webp --format webp --quality 80
# Export at 2x scale
openshots-cli export --input shot.png --output shot@2x.png --format png --scale 2
# Convert + beautify
openshots-cli export --input shot.png --output styled.webp --format webp --quality 85 --preset ocean
Render an .openshots project file to an image.
openshots-cli render --input project.openshots --output final.png --format png --quality 90
Join the TraceKit Discord for questions, feedback, and discussion.
See CONTRIBUTING.md for development setup and guidelines.
Built by TraceKit
161 commits
TypeScript
74.2%
Rust
20.2%
HTML
4.9%
Turn screenshots into polished visuals. Free, open-source, offline. Built with Tauri + React.
23
stars
161
commits
TypeScript
primary language
Apr 12, 2026
updated
Turn raw screenshots into polished, shareable visuals in seconds. Free, open-source, and completely offline.
OpenShots is a cross-platform desktop app built with Tauri (Rust + React). Capture screenshots, add beautiful backgrounds, annotate with shapes and text, blur sensitive areas, and export polished results without leaving the app or sending data anywhere.
Built by the TraceKit team — the makers of TraceKit APM.
Capture
Beautify
Annotate
Export
Automation
--preset flag for beautificationDownload the latest release for your platform:
| Platform | Download |
|---|---|
| macOS (Apple Silicon) | .dmg |
| macOS (Intel) | .dmg |
| Windows | .msi |
| Linux (AppImage) | .AppImage |
| Linux (deb) | .deb |
The macOS builds are code-signed and notarized with an Apple Developer ID certificate.
Prerequisites:
# Clone the repo
git clone https://github.com/Tracekit-Dev/openshots.git
cd openshots
# Install dependencies
npm install
# Run in development
npx tauri dev
# Build for production
npx tauri build
macOS: Requires Screen Recording permission for capture. The app will prompt on first use.
Linux (Wayland): Global hotkeys are unavailable on Wayland. Use the system tray to trigger captures.
Windows: No special requirements.
| Action | macOS | Windows/Linux |
|---|---|---|
| Capture Full Screen | Cmd+Shift+4 | Ctrl+Shift+4 |
| Capture Region | Cmd+Shift+3 | Ctrl+Shift+3 |
| Capture Window | Cmd+Shift+5 | Ctrl+Shift+5 |
| Undo | Cmd+Z | Ctrl+Z |
| Redo | Cmd+Shift+Z | Ctrl+Shift+Z |
| Delete selected | Delete / Backspace | Delete / Backspace |
| Reset zoom | Cmd+0 | Ctrl+0 |
| Tools | V A R E T M B P | Same |
OpenShots includes a CLI (openshots-cli) for batch processing and automation.
macOS (Apple Silicon):
curl -L https://github.com/Tracekit-Dev/openshots/releases/latest/download/openshots-cli-darwin-arm64 -o /usr/local/bin/openshots-cli && chmod +x /usr/local/bin/openshots-cli
macOS (Intel):
curl -L https://github.com/Tracekit-Dev/openshots/releases/latest/download/openshots-cli-darwin-x64 -o /usr/local/bin/openshots-cli && chmod +x /usr/local/bin/openshots-cli
Linux:
curl -L https://github.com/Tracekit-Dev/openshots/releases/latest/download/openshots-cli-linux-x64 -o /usr/local/bin/openshots-cli && chmod +x /usr/local/bin/openshots-cli
Windows (PowerShell):
Invoke-WebRequest -Uri https://github.com/Tracekit-Dev/openshots/releases/latest/download/openshots-cli-windows-x64.exe -OutFile "$env:LOCALAPPDATA\openshots-cli.exe"
These URLs always point to the latest release. To pin a specific version, replace latest with the tag:
https://github.com/Tracekit-Dev/openshots/releases/download/v2.0.4/openshots-cli-darwin-arm64
Verify the installation:
openshots-cli --version
Presets define the beautification style: background, padding, corner radius, shadow, and inset border. 7 built-in presets ship with OpenShots. User presets are stored in ~/.openshots/presets.json.
# List all available presets
openshots-cli list-presets
# Show full config of a preset
openshots-cli show-preset ocean
# Copy a built-in preset for customization
openshots-cli copy-preset ocean --new-name my-ocean
# Create a new preset from scratch
openshots-cli create-preset my-brand
# Open presets file in your $EDITOR
openshots-cli edit-presets
Apply a preset to one or more screenshots. Adds background, padding, corner radius, shadow, and inset border.
# Single image
openshots-cli beautify --preset ocean --input screenshot.png --output ./out --format png
# Batch process with glob
openshots-cli beautify --preset clean-dark --input "screenshots/*.png" --output ./out --format png
# Export as WebP
openshots-cli beautify --preset vibrant-sunset --input shot.png --output ./out --format webp --quality 85
Add text annotations to images. Use --preset to also apply beautification.
# Text on raw image
openshots-cli annotate --input shot.png --output annotated.png \
--text "Draft" --text-x 50 --text-y 50 --font-size 48 --color "#ff0000"
# Text + preset beautification
openshots-cli annotate --input shot.png --output styled.png \
--text "v2.0" --text-x 20 --text-y 20 --font-size 32 --color "#ffffff" \
--preset ocean
Pixelate regions to hide sensitive content. Coordinates are x,y,width,height. Use ; to separate multiple regions.
# Pixelate a region
openshots-cli privacy --input shot.png --output redacted.png \
--regions "100,100,300,200" --intensity 20
# Multiple regions + preset
openshots-cli privacy --input shot.png --output styled.png \
--regions "100,100,300,200;500,50,150,100" --intensity 25 \
--preset clean-dark
Convert format, adjust quality, or scale. Use --preset to beautify during export.
# Convert PNG to WebP
openshots-cli export --input shot.png --output shot.webp --format webp --quality 80
# Export at 2x scale
openshots-cli export --input shot.png --output shot@2x.png --format png --scale 2
# Convert + beautify
openshots-cli export --input shot.png --output styled.webp --format webp --quality 85 --preset ocean
Render an .openshots project file to an image.
openshots-cli render --input project.openshots --output final.png --format png --quality 90
Join the TraceKit Discord for questions, feedback, and discussion.
See CONTRIBUTING.md for development setup and guidelines.
Built by TraceKit
161 commits
TypeScript
74.2%
Rust
20.2%
HTML
4.9%