A beautiful, open-source screenshot tool for macOS
Features • Installation • Usage • Shortcuts • Contributing • License
DodoShot is a lightweight, native macOS screenshot application built with SwiftUI. Inspired by CleanShot X, it provides a beautiful and intuitive interface for capturing, annotating, and managing screenshots — completely free and open source.
- Area capture — Select any region of your screen
- Window capture — Capture specific application windows
- Fullscreen capture — Capture your entire screen
- Scrolling capture — Capture long pages by automatically scrolling and stitching
- Compact corner overlay appears after capture for immediate actions
- Auto-dismiss with configurable timeout (pauses on hover)
- Drag-and-drop thumbnail directly into other apps
- Quick actions: copy, save, annotate, pin
- Swipe to dismiss
- Stacking overlays for multiple captures
- Pin any screenshot as an always-on-top floating window
- Adjustable opacity for reference images
- Click-through mode — interact with apps beneath the screenshot
- Resize and reposition freely
- Persists across app switches and spaces
- Arrows, rectangles, ellipses, and lines — Basic shapes
- Text annotations — Add labels and notes
- Callouts — Speech bubble annotations with customizable arrow direction
- Blur — Obscure sensitive information
- Pixelate — Privacy redaction with adjustable intensity
- Highlight — Draw attention to important content
- Freehand drawing — Sketch freely
- Step counters — Numbered markers for tutorials (supports 1,2,3 / A,B,C / I,II,III formats)
- Eraser — Remove parts of annotations
- Color picker — 9 preset colors plus on-canvas color sampling
- Adjustable stroke width — Fine-tune line thickness
- Layer management — Bring forward, send backward, arrange z-order
- Select any annotation to modify it
- Drag to reposition annotations
- Change color or stroke width of selected annotations
- Delete selected annotations
- Pixel ruler for measuring on-screen elements
- Color picker to sample any color on screen with hex code copy
- Auto-copy to clipboard after capture
- Capture history with grid/list views
- Hide desktop icons during capture
- Global keyboard shortcuts
- Customizable backdrop behind screenshots in editor
- OCR text extraction — Extract text from screenshots using Apple's Vision framework (no API key required)
- No telemetry or analytics — Your data stays on your device
- No network requests except for optional AI features (when API key is configured)
- Screenshots are stored locally only
- Native macOS look and feel
- Dark mode support (System/Light/Dark)
- Vibrancy and blur effects
- Smooth animations throughout
- macOS 14.0 (Sonoma) or later
- Screen Recording permission
- Accessibility permission (for global hotkeys)
brew tap DodoApps/tap
brew install --cask dodoshot
xattr -cr /Applications/DodoShot.appNote: The
xattrcommand removes the quarantine flag. This is required because the app is not signed with an Apple Developer certificate.
- Download the latest DMG from Releases
- Open the DMG and drag DodoShot to Applications
- Important: Run this command in Terminal to remove the quarantine flag:
xattr -cr /Applications/DodoShot.app
- Launch DodoShot from Applications
Note: The
xattrcommand is required because the app is not signed with an Apple Developer certificate. This is safe for open-source software where you can verify the source code.
-
Clone the repository:
git clone https://github.com/DodoApps/dodoshot.git cd dodoshot/DodoShot -
Open in Xcode:
open DodoShot.xcodeproj
-
Build and run (⌘R)
- Launch DodoShot — it runs in your menu bar
- Click the menu bar icon or use keyboard shortcuts
- Select a capture mode
- After capture, use the quick overlay to:
- Copy to clipboard
- Save to file
- Open annotation editor
- Pin as floating window
- Drag thumbnail to other apps
- Access capture history from the menu bar
| Action | Default shortcut |
|---|---|
| Area capture | ⌘⇧4 |
| Window capture | ⌘⇧5 |
| Fullscreen capture | ⌘⇧3 |
Shortcuts can be customized in Settings → Hotkeys.
DodoShot/
├── DodoShotApp.swift # App entry point
├── Models/
│ └── Screenshot.swift # Data models
├── Views/
│ ├── MenuBarView.swift # Menu bar interface
│ ├── Capture/ # Capture selection views
│ ├── Overlay/ # Quick overlay after capture
│ ├── History/ # Capture history panel
│ ├── Annotation/ # Annotation editor
│ ├── Settings/ # Settings window
│ └── Permissions/ # Permission request views
├── Services/
│ ├── ScreenCaptureService.swift
│ ├── ScrollingCaptureService.swift
│ ├── FloatingWindowService.swift
│ ├── MeasurementService.swift
│ ├── SettingsManager.swift
│ ├── HotkeyManager.swift
│ ├── OCRService.swift
│ └── LLMService.swift
└── Resources/
└── Assets.xcassets
Contributions are welcome! Here's how you can help:
- Report bugs — Open an issue describing the problem
- Suggest features — Open an issue with your idea
- Submit PRs — Fork, create a branch, and submit a pull request
- Fork and clone the repository
- Open in Xcode 15+
- Build and run
- Make your changes
- Test thoroughly
- Submit a PR
- Follow Swift API Design Guidelines
- Use SwiftUI for all new views
- Keep views small and composable
- Add MARK comments for organization
- Video/GIF recording
- Cloud sync
- Custom templates
- Watermarks
- Direct sharing to apps
- Browser extension
- Command-line interface
DodoShot is released under the MIT License. See LICENSE for details.