Razee4315/snipflag

Capture, annotate, and send multiple screenshots to one Linear issue. A focused desktop app for Windows, macOS, and Linux.

TypeScript

0

75 commits

updated Sep 27, 2026

See the code

See what people are saying

SourceMessageScoreDate

Snipping Tool, but it creates the Linear issue. I built this because my team kept skipping bug reports (QA guys!) (r/SideProject)

I work at a small startup and we track everything in Linear. Every time I found a UI bug it was the same routine: Snipping Tool, paste into Paint, draw a red box, Save As, find the file, open Linear, new issue, drag the file in. Then again for the second screenshot. I was opening Linear again and…

1

Sep 27, 2026

README

Snipflag logo

Snipflag

Snip it. Mark it. Flag it.
Turn one or more screenshots into one clear Linear issue.

Features · Getting started · Connecting Linear · Privacy · Contributing


Snipflag is a focused desktop app for reporting visual problems. Capture a region of your screen, mark what matters, capture another, add a title, and send everything to Linear as a single issue with the screenshots in order. It runs on Windows (primary), macOS, and Linux, and is built with Tauri 2, Rust, React, and TypeScript.

Website: razee4315.github.io/snipflag · v1.2.0: Download the release (unsigned installers). Native runtime acceptance and signing are still pending; see verification status.

See it in action

Snipflag in action: capture a checkout page, number and box the problems, pixelate the email and card, create the Linear issue, and open it in Linear

A real recording: capture, annotate, pixelate private fields, create the issue, and open it in Linear.

More screenshots (light and dark)

UI rendered on CI with synthetic sample content. Native window controls and the connected Linear state differ slightly in the desktop app.

Snipflag daylight workspace: a billing screenshot with the email pixelated and the wrong total boxed, next to the issue form

Snipflag after-hours workspace with the same annotated billing screenshot

Features

Capture

  • Lives in the system tray with a global shortcut (default Ctrl+Shift+2, Cmd+Shift+2 on macOS).
  • Freezes every monitor, then you drag a region. Enter captures the whole screen, Escape cancels.
  • Also add images from files (PNG, JPEG, WebP), paste from the clipboard, or drag and drop.

Annotate

  • Arrow, rectangle, ellipse, pen, highlighter, text, numbered steps, and pixelate.
  • Built-in palettes plus a custom color picker for pens and highlighter inks; your custom colors are remembered.
  • Hold Shift for 15° arrow/pen snapping, square rectangles or round ellipses.
  • Select, move, and resize marks; change color, width, and text size; zoom, fit, and 100%.
  • Each screenshot keeps its own annotations and undo history, so you can move between them freely.
  • Exports keep the original pixel dimensions, and pixelation is burned into the pixels.

Report

  • Up to 10 screenshots per session, reorderable and captioned, sent as one issue.
  • Title, description, team, project, assignee, labels, and priority, without leaving the app.
  • Type @ in Description to choose a screenshot. References survive reordering and become clickable image links in Linear.
  • Safe retries: each session has a stable issue ID, so a retry after a network failure checks Linear first and never creates a duplicate.

Keep your work

  • Drafts save automatically and come back after a restart.
  • History to reopen or delete past sessions, with a retention setting.

Keyboard shortcuts

ActionShortcut
Capture (global)Ctrl/Cmd + Shift + 2 (configurable)
Select, Arrow, Rectangle, EllipseV, A, R, E
Pen, Highlighter, TextP, H, T
Numbered step, PixelateN, B
Undo, RedoCtrl/Cmd + Z, Ctrl/Cmd + Shift + Z
Delete selected markDelete
Create issueCtrl/Cmd + Enter
ZoomCtrl/Cmd + mouse wheel

Creator

Snipflag is designed and built by Saqlain Razee (GitHub · LinkedIn).

Getting started

Download v1.2.0 installers from GitHub Releases. All installers are built on GitHub Actions.

Additional development installers are produced by the Development installers workflow:

PlatformArtifactFormats
Windows x64snipflag-development-unsigned-x86_64-pc-windows-msvcNSIS .exe, .msi
macOS Apple Siliconsnipflag-development-unsigned-aarch64-apple-darwin.dmg
macOS Intelsnipflag-development-unsigned-x86_64-apple-darwin.dmg
Linux x64snipflag-development-unsigned-x86_64-unknown-linux-gnu.deb, .AppImage

These builds are not code-signed, so Windows SmartScreen and macOS Gatekeeper will warn before opening them. Actions artifacts expire after 7 days; the release downloads remain available.

On macOS, grant Screen Recording permission when asked. On Linux Wayland, some compositors block direct capture; adding or pasting images still works.

Connecting Linear

Snipflag signs in to Linear with OAuth and PKCE. No client secret is used, and the resulting token is kept in your operating system's credential store.

Choose Connect Linear, approve access in your browser, then return to Snipflag. From v1.2.0, Snipflag also checks for signed updates and offers an Update button; installs from v1.1.0 or earlier need one manual upgrade.

Self-builds can use Settings → Advanced: custom Linear application: register an OAuth application with callback http://127.0.0.1:47839/callback and enter its public client ID. Leave the field blank to use the installer's built-in connection. Maintainers configure that connection through the SNIPFLAG_LINEAR_CLIENT_ID repository variable; no client secret is embedded. More detail is in docs/LINEAR.md.

Privacy

  • Screenshots stay on your computer until you choose Create issue.
  • Linear is contacted only to sign in, load your teams and fields, and create the issue you submit.
  • No analytics, no screenshot cloud, and no account needed to capture or annotate.
  • Use Pixelate for private details. It replaces the area with large averaged color blocks that are burned into every export. For long secrets such as API keys, prefer not capturing them at all.
  • Drafts are stored unencrypted in the app data folder. You can delete them from History or Settings.

Details are in docs/SECURITY.md. To report a vulnerability, see SECURITY.md.

Development

All builds, tests, and packaging run on GitHub Actions. The contributing guide covers the project layout, engineering rules, running the app locally, and how to open a pull request.

Documentation

TopicDocument
Product scope and acceptance criteriadocs/PRODUCT.md
Screens and interaction flowsdocs/UX.md
Visual language and branddocs/DESIGN.md
Architecture and data lifecycledocs/ARCHITECTURE.md
Linear integrationdocs/LINEAR.md
Privacy and command boundariesdocs/SECURITY.md
Builds and releasesdocs/CI.md
Test matrixdocs/TESTING.md
Current status and next stepsdocs/STATUS.md
Name researchdocs/NAME.md
ChangesCHANGELOG.md
HelpSUPPORT.md

License

Snipflag is released under the MIT License.

Linear is a trademark of Linear Orbit, Inc. Snipflag is an independent project and is not affiliated with or endorsed by Linear.

Contributors

Razee4315

75 commits

Razee4315/snipflag

Capture, annotate, and send multiple screenshots to one Linear issue. A focused desktop app for Windows, macOS, and Linux.

TypeScript

0

75 commits

updated Sep 27, 2026

See the code

See what people are saying

SourceMessageScoreDate

Snipping Tool, but it creates the Linear issue. I built this because my team kept skipping bug reports (QA guys!) (r/SideProject)

I work at a small startup and we track everything in Linear. Every time I found a UI bug it was the same routine: Snipping Tool, paste into Paint, draw a red box, Save As, find the file, open Linear, new issue, drag the file in. Then again for the second screenshot. I was opening Linear again and…

1

Sep 27, 2026

README

Snipflag logo

Snipflag

Snip it. Mark it. Flag it.
Turn one or more screenshots into one clear Linear issue.

Features · Getting started · Connecting Linear · Privacy · Contributing


Snipflag is a focused desktop app for reporting visual problems. Capture a region of your screen, mark what matters, capture another, add a title, and send everything to Linear as a single issue with the screenshots in order. It runs on Windows (primary), macOS, and Linux, and is built with Tauri 2, Rust, React, and TypeScript.

Website: razee4315.github.io/snipflag · v1.2.0: Download the release (unsigned installers). Native runtime acceptance and signing are still pending; see verification status.

See it in action

Snipflag in action: capture a checkout page, number and box the problems, pixelate the email and card, create the Linear issue, and open it in Linear

A real recording: capture, annotate, pixelate private fields, create the issue, and open it in Linear.

More screenshots (light and dark)

UI rendered on CI with synthetic sample content. Native window controls and the connected Linear state differ slightly in the desktop app.

Snipflag daylight workspace: a billing screenshot with the email pixelated and the wrong total boxed, next to the issue form

Snipflag after-hours workspace with the same annotated billing screenshot

Features

Capture

  • Lives in the system tray with a global shortcut (default Ctrl+Shift+2, Cmd+Shift+2 on macOS).
  • Freezes every monitor, then you drag a region. Enter captures the whole screen, Escape cancels.
  • Also add images from files (PNG, JPEG, WebP), paste from the clipboard, or drag and drop.

Annotate

  • Arrow, rectangle, ellipse, pen, highlighter, text, numbered steps, and pixelate.
  • Built-in palettes plus a custom color picker for pens and highlighter inks; your custom colors are remembered.
  • Hold Shift for 15° arrow/pen snapping, square rectangles or round ellipses.
  • Select, move, and resize marks; change color, width, and text size; zoom, fit, and 100%.
  • Each screenshot keeps its own annotations and undo history, so you can move between them freely.
  • Exports keep the original pixel dimensions, and pixelation is burned into the pixels.

Report

  • Up to 10 screenshots per session, reorderable and captioned, sent as one issue.
  • Title, description, team, project, assignee, labels, and priority, without leaving the app.
  • Type @ in Description to choose a screenshot. References survive reordering and become clickable image links in Linear.
  • Safe retries: each session has a stable issue ID, so a retry after a network failure checks Linear first and never creates a duplicate.

Keep your work

  • Drafts save automatically and come back after a restart.
  • History to reopen or delete past sessions, with a retention setting.

Keyboard shortcuts

ActionShortcut
Capture (global)Ctrl/Cmd + Shift + 2 (configurable)
Select, Arrow, Rectangle, EllipseV, A, R, E
Pen, Highlighter, TextP, H, T
Numbered step, PixelateN, B
Undo, RedoCtrl/Cmd + Z, Ctrl/Cmd + Shift + Z
Delete selected markDelete
Create issueCtrl/Cmd + Enter
ZoomCtrl/Cmd + mouse wheel

Creator

Snipflag is designed and built by Saqlain Razee (GitHub · LinkedIn).

Getting started

Download v1.2.0 installers from GitHub Releases. All installers are built on GitHub Actions.

Additional development installers are produced by the Development installers workflow:

PlatformArtifactFormats
Windows x64snipflag-development-unsigned-x86_64-pc-windows-msvcNSIS .exe, .msi
macOS Apple Siliconsnipflag-development-unsigned-aarch64-apple-darwin.dmg
macOS Intelsnipflag-development-unsigned-x86_64-apple-darwin.dmg
Linux x64snipflag-development-unsigned-x86_64-unknown-linux-gnu.deb, .AppImage

These builds are not code-signed, so Windows SmartScreen and macOS Gatekeeper will warn before opening them. Actions artifacts expire after 7 days; the release downloads remain available.

On macOS, grant Screen Recording permission when asked. On Linux Wayland, some compositors block direct capture; adding or pasting images still works.

Connecting Linear

Snipflag signs in to Linear with OAuth and PKCE. No client secret is used, and the resulting token is kept in your operating system's credential store.

Choose Connect Linear, approve access in your browser, then return to Snipflag. From v1.2.0, Snipflag also checks for signed updates and offers an Update button; installs from v1.1.0 or earlier need one manual upgrade.

Self-builds can use Settings → Advanced: custom Linear application: register an OAuth application with callback http://127.0.0.1:47839/callback and enter its public client ID. Leave the field blank to use the installer's built-in connection. Maintainers configure that connection through the SNIPFLAG_LINEAR_CLIENT_ID repository variable; no client secret is embedded. More detail is in docs/LINEAR.md.

Privacy

  • Screenshots stay on your computer until you choose Create issue.
  • Linear is contacted only to sign in, load your teams and fields, and create the issue you submit.
  • No analytics, no screenshot cloud, and no account needed to capture or annotate.
  • Use Pixelate for private details. It replaces the area with large averaged color blocks that are burned into every export. For long secrets such as API keys, prefer not capturing them at all.
  • Drafts are stored unencrypted in the app data folder. You can delete them from History or Settings.

Details are in docs/SECURITY.md. To report a vulnerability, see SECURITY.md.

Development

All builds, tests, and packaging run on GitHub Actions. The contributing guide covers the project layout, engineering rules, running the app locally, and how to open a pull request.

Documentation

TopicDocument
Product scope and acceptance criteriadocs/PRODUCT.md
Screens and interaction flowsdocs/UX.md
Visual language and branddocs/DESIGN.md
Architecture and data lifecycledocs/ARCHITECTURE.md
Linear integrationdocs/LINEAR.md
Privacy and command boundariesdocs/SECURITY.md
Builds and releasesdocs/CI.md
Test matrixdocs/TESTING.md
Current status and next stepsdocs/STATUS.md
Name researchdocs/NAME.md
ChangesCHANGELOG.md
HelpSUPPORT.md

License

Snipflag is released under the MIT License.

Linear is a trademark of Linear Orbit, Inc. Snipflag is an independent project and is not affiliated with or endorsed by Linear.

Contributors

Razee4315

75 commits

Languages

TypeScript

44.1%

Rust

19.0%

HTML

16.6%

CSS

12.4%

Python

6.4%

JavaScript

1.6%