๐ธ Snap2Link
Paste screenshots into Claude Code, Cursor, or any terminal AI, in one keystroke.
Shortcut, drag a region, and a public share link lands in your clipboard. Done.
๐ snap2link.app
Why Snap2Link?
You're working with Claude Code, Cursor, or ChatGPT in a terminal, maybe on a remote VPS, maybe locally, and you need to show the model a UI bug, a design mockup, an error screen. The usual workflow is painful: screenshot, save, open the browser, upload to Imgur or Drive, copy the link, paste it. Every single time.
Snap2Link collapses that whole sequence into one keystroke. Press your shortcut, drag a region, and a public link is already in your clipboard, ready to paste straight into your AI prompt.
You choose where captures go:
- Snap2Link hosting (default): nothing to set up and no account needed. Links expire on their own after 24 hours. A free account, with an email code or Google, keeps them for 48 hours, gives 20 captures a day and 6 links at once, and lets you keep the ones that matter.
- Your own Google Drive: captures stay in your Drive, with access limited to the files Snap2Link creates, and old ones are cleaned up after 30 days by default.
No telemetry, no monthly fee.
Screenshots without the clutter
Developers, support teams and designers receive screenshots all day from clients and colleagues. Each one lands in the phone's gallery, the Downloads folder or the chat, and stays there long after the bug is fixed. A Snap2Link capture arrives as a link instead: the receiver opens it in the browser, on a phone or a computer, and nothing is saved on their device. The same link works on every device, since the capture lives in the cloud, and it expires on its own. Only the sender needs Snap2Link.
โจ Features
| |
|---|
| ๐ค Built for AI workflows | Paste screenshots into Claude Code, Cursor, ChatGPT, Aider, or any tool that accepts an image URL |
| ๐ Reads links over SSH | The Snap2Link MCP server lets Claude Code and opencode see the image itself, even on a remote machine |
| ๐ฑ๏ธ Region, screen or window | Drag a region with a live size readout, take the screen under the mouse, or pick a window. R / F / W switch, Esc cancels |
| โจ๏ธ Up to 3 shortcuts | Default Ctrl + Print Screen. Each shortcut has its own capture mode and next step: ask, share at once, or annotate |
| โ๏ธ Annotator | Pen, rectangle, circle, arrow, text and blur before sharing |
| โก Instant share link | Upload, make public, copy, all in the background, under a second on broadband |
| ๐๏ธ History | Every link of your host with its thumbnail and time left: copy, delete, view full size, or keep it so a new capture or the cleanup leaves it alone |
| ๐ค Online account | With a Snap2Link account, snap2link.app/account shows your links, devices and profile from any browser |
| โ๏ธ Your choice of host | Snap2Link hosting with or without an account, or your own Google Drive with the drive.file scope |
| ๐ 20 languages | Follows your system language, with right-to-left layouts for Arabic, Hebrew and Persian |
| ๐ฅ๏ธ Cross-platform | Windows, macOS and Linux from a single codebase, native everywhere |
| ๐ Built-in auto-updater | Signed updates pulled from GitHub Releases: Settings, then Check for updates |
| ๐ช Start with your OS | Toggle it in Settings, so a capture is always one keystroke away |
๐ Quick Start
# 1 ยท Install (see Installation section for your OS)
# 2 ยท Launch: captures go to Snap2Link hosting, nothing to set up
# (or pick Google Drive in the wizard and grant access in your browser)
# 3 ยท Press the shortcut, drag a region, paste anywhere
That's it. Three steps, zero configuration.
๐ฆ Installation
Windows
Via winget (recommended, Windows 10+)
winget install snap2link
# or, fully qualified:
winget install amys94fr.Snap2Link
Direct download: grab the .exe installer from the Releases page. Until Windows code signing is in place, SmartScreen may flag it as an "unrecognised app": click More info โ Run anyway. See the code signing policy.
macOS
Download the universal .dmg from the Releases page, open it, and drag Snap2Link into Applications. A single binary runs natively on both Apple Silicon and Intel.
The app is not yet notarised, so the first launch needs a manual override: right-click the app in Finder โ Open โ Open in the dialog. Subsequent launches behave normally.
The first capture will prompt for Screen Recording permission in System Preferences โ Security & Privacy โ Screen Recording. Grant it and re-launch.
Linux
One-liner install (recommended)
curl -fsSL https://raw.githubusercontent.com/amys94fr/Snap2Link/main/scripts/install.sh | bash
The script detects your distro, picks the right package (.deb, .rpm, or .AppImage as fallback), downloads it from the latest release, and installs it. Read it before running if you'd like โ it's in the repo.
Manual install โ grab the file you want from the Releases page:
# Debian/Ubuntu (resolves dependencies automatically)
sudo apt install ./snap2link_*_amd64.deb
# Fedora/RHEL
sudo dnf install ./snap2link-*.x86_64.rpm
# Any distro (AppImage โ portable, no install needed)
chmod +x snap2link_*_amd64.AppImage
./snap2link_*_amd64.AppImage
The system tray icon requires libayatana-appindicator3-1, which is preinstalled on most desktop environments.
Uninstall
- Windows: Settings โ Apps โ Installed apps โ Snap2Link โ Uninstall, or
winget uninstall amys94fr.Snap2Link.
- macOS: quit Snap2Link from the menu bar, then drag it from Applications to the Trash.
- Linux:
sudo apt remove snap2link (.deb), sudo dnf remove snap2link (.rpm), or delete the AppImage. The install script puts it in ~/.local/bin/snap2link.AppImage.
Settings and sign-in tokens stay in a Snap2Link folder: %APPDATA%\Snap2Link on Windows, ~/Library/Application Support/Snap2Link on macOS, ~/.local/share/Snap2Link on Linux. Delete it to remove them too. Captures on Snap2Link hosting expire on their own, and you can delete your account from the app or from your account page.
Build from source
You'll need Rust (stable), Node.js 20+, and the Tauri CLI (cargo install tauri-cli --version "^2").
git clone https://github.com/amys94fr/Snap2Link
cd Snap2Link
pnpm install
pnpm tauri dev # hot-reload dev build
pnpm tauri build # produces a signed installer in src-tauri/target/release/bundle/
opencode
To let opencode read your links, even over SSH or in a VM, run:
opencode mcp add snap2link --url https://i.snap2link.app/mcp
See integrations/opencode for the optional skill and details.
Claude Code plugin
To let Claude Code read your links directly, even over SSH, type this at its prompt:
/plugin install snap2link --marketplace amys94fr/Snap2Link
See integrations/claude-code for details. To run everything on your own machine, with a notification when you paste a link, install Snap2Link local instead.
๐ก Use Cases
- AI prompts: paste the link directly into Claude Code, Cursor, ChatGPT, or Aider when you need visual context
- Client feedback without the clutter: ask clients to send screenshots as Snap2Link links, and read them on any device without filling your phone or your Downloads folder
- Bug reports: capture the broken UI, paste the link in Jira or GitHub Issues
- Design feedback: share mockup snippets in Slack, Discord or Notion in seconds
- Documentation: drop image links straight into READMEs, blog posts, support tickets
- Remote support: guide a colleague through their screen without launching a screen-share session
- Meeting notes: snap a slide, link it next to your notes, move on with the meeting
๐ง Configuration (Google OAuth)
End users have nothing to configure. Snap2Link hosting works out of the box. If you choose Google Drive, the app opens Google's consent page in your browser; pick your account and you're done.
For developers / forks wanting to ship under their own OAuth credentials:
- Create a project on console.cloud.google.com
- Enable the Google Drive API
- Credentials โ Create OAuth client โ Desktop application
- Download the JSON, rename it
credentials.json, drop it at the repo root (gitignored)
pnpm tauri build
Snap2Link only requests the minimum scopes:
| Scope | Why |
|---|
drive.file | Read/write only the files Snap2Link itself creates โ never the rest of your Drive |
userinfo.email | Display the connected account in Settings (so "Switch Account" makes sense) |
๐ฃ๏ธ Roadmap
- โ
Region capture ยท clipboard ยท tray ยท auto-updater ยท winget
- โ
Cross-platform: Windows, macOS, Linux
- โ
In-app annotations before upload: pen, rectangle, circle, arrow, text, blur
- โ
Full-screen and window capture alongside region selection
- โ
Up to 3 shortcuts, each with its own mode and next step
- โ
Snap2Link hosting, with or without a free account
- โ
20 languages, right-to-left included
- โ
History page with kept links, and an online account at snap2link.app
- โ
MCP server and Claude Code plugin to read links over SSH
- ๐ Google Drive links on the online account
- ๐ Paid plans with longer-lived links
- ๐ More clouds: Dropbox, OneDrive, S3-compatible
- ๐ Signed Windows installers
- ๐ macOS notarisation, then a Homebrew cask
- ๐ Scoop package
Got an idea? Open an issue โ I read every one.
If Snap2Link saves you time in your AI workflow, consider sponsoring its
development on GitHub Sponsors.
Even $3/month covers the cost of code-signing certificates and keeps
the project actively maintained.
A huge thank you to everyone who supports the work.
๐ค Contributing
PRs welcome. Quick start for contributors:
git clone https://github.com/amys94fr/Snap2Link
cd Snap2Link
pnpm install
pnpm test # frontend tests (Vitest)
cd src-tauri && cargo test --lib # app backend tests (Rust)
cd relay && pnpm test # Snap2Link hosting tests (Cloudflare Worker)
cd android && ./gradlew testDebugUnitTest # Android app tests (Kotlin)
CI (test.yml) runs on every push and PR โ tests must stay green for a merge.
The full guide (bug reports, feature proposals, coding style, PR checklist) is in CONTRIBUTING.md. For the release procedure (signing, manifest, GitHub release, winget bump), see docs/RELEASE.md.
Project layout
src/ React + TypeScript interface
windows/ SetupWizard ยท Settings (and settings/ pages) ยท Overlay ยท Annotator ยท Toasts ยท About
components/ AnnotatorCanvas ยท HotkeyRecorder ยท RetentionControl ยท UpdateChecker
i18n/ i18next + 20 locales
store/ Zustand state
lib/ Config helpers ยท KeyboardEvent โ Tauri shortcut format
src-tauri/ Rust backend (Tauri v2)
src/commands/ account ยท auth ยท config ยท drive ยท guest ยท history ยท relay ยท screenshot ยท updater ยท upload
src/hotkey.rs Global shortcut registration
src/tray.rs System tray icon and menu
src/toast.rs "Link copied" message
relay/ Snap2Link hosting: Cloudflare Worker (D1, R2) at i.snap2link.app
integrations/ Claude Code plugin, local version, and opencode setup
android/ Android app (Kotlin, Jetpack Compose): share an image, get its link
Code signing policy
Windows installers are not code-signed yet. SignPath Foundation, which signs open source projects for free, asks for more public visibility than Snap2Link has today, so the project will apply again later. The release workflow is ready to sign through SignPath as soon as it's enabled.
Only installers built by this repository's GitHub Actions from its own source are signed, and each signing is approved by hand. Snap2Link sends data only to the services you choose or that keep it working, listed with what they receive in the privacy policy. Full policy: snap2link.app/code-signing.
๐ License
MIT ยฉ 2025 Steven Abittan.
Built with Tauri v2, Rust, React, Tailwind CSS, Cloudflare Workers and Vitest.