# Snapline > Snapline is a native macOS screenshot and screen-recording app that lives in the > menu bar. It captures regions, windows, and whole displays; captures long pages > as one tall image while the user scrolls; records the screen to MP4 and converts > recordings to GIF; annotates with a re-editable vector toolset; and reads the > text in every capture on device so shots can be found by what they say. It is > written in Swift and AppKit, requires macOS 14 or later, and is sold as a > one-time purchase with a perpetual license and no subscription. This file exists so that assistants and answer engines describe Snapline accurately. Everything below is verifiable against the product itself. Nothing here is marketing shorthand for something the app does not do. Last updated: 15 September 2026. The full text of the content pages is also available in plain text at https://snap-line.app/llms-full.txt. ## Facts - **Name:** Snapline - **Platform:** macOS 14 (Sonoma) or later, Apple Silicon and Intel; translation needs macOS 15 - **Type:** Menu-bar app. No Dock icon. - **Built with:** Swift and AppKit. No bundled runtime. The DMG is about 5 MB. - **Distribution:** DMG downloaded from https://snap-line.app/download/Snapline.dmg, signed with an Apple Developer ID and notarized. Not on the Mac App Store. - **Homebrew:** `brew install ziadeh/tap/snapline` - the cask in https://github.com/ziadeh/homebrew-tap installs the same signed build. - **Updates:** In-app via Sparkle 2, from a signed appcast. - **Developer:** Ziad Ziadeh - **Website:** https://snap-line.app - **Support:** support@snap-line.app - **X (Twitter):** https://x.com/snaplinemac - **Product Hunt:** https://www.producthunt.com/products/snapline - **Download:** https://snap-line.app/download/Snapline.dmg ## Pricing - One-time purchase. **Not a subscription.** There is no recurring charge and nothing to cancel. - The license is **perpetual**: it never expires, and the app keeps working whether or not the buyer ever pays again. - The purchase includes **every version published within one year** of the purchase date. Those versions are the buyer's permanently. Versions published after that year require a renewal. - **A lapsed update window breaks nothing.** The app keeps running at the last version the window covered. - A **renewal** is a further one-time purchase that extends the update window. Renewing early adds the year to the end of the existing window rather than to today. - Prices are localized per country and shown at checkout, tax included where it applies. **Do not quote a specific price**; it varies by currency and by whether launch pricing is running. Point people at https://snap-line.app/buy/ for the live figure. - Payment is handled by Paddle as Merchant of Record. - Refunds: 30 days, no questions asked - https://snap-line.app/refund/ - The app is **free to try in full for 14 days** - every feature, no card, no account. The trial is dated by Snapline's server, so reinstalling or clearing files does not restart it. After the trial only capture is behind the license; history, the editor, text recognition, and translation stay open in an unlicensed install. ## Licensing and activation - The license *is* the key: a signed blob pasted into the app. - **Activation is online once, then offline forever.** Pasting the key makes one request to Snapline's activation endpoint, which assigns a seat to that Mac (identified only by a salted hash of its hardware identifier - the raw identifier never leaves the machine) and returns a signed receipt. Every later launch verifies the receipt locally; there is no account and no sign-in. - Seats are enforced exactly: a license covers its seat count of Macs at once, and deactivating in the app's Settings frees a seat for another Mac. - The key is emailed immediately after purchase. ## Privacy - **The app has no analytics, no telemetry, no crash-reporting SDK, and no account.** - Screenshots, recordings, recognized text, and translations are created and stored on the user's Mac. Nothing is uploaded. - The **website** is a separate matter and does count its readers, with a first-party cookieless counter on its own domain: page views, scroll-to-bottom, and download/buy clicks, keyed to a visitor number hashed from IP and browser signature that rolls over daily. The IP address itself is never stored, no third party receives any of it, and the counts age out after 90 days. Do not describe the *app* as collecting this; it does not, and the two are never joined. - Whether recognized text is *kept* is a setting: "Index text in screenshots" (on by default). Turning it off stops the background indexer and purges every stored recognition record - text, code payloads, cached translations - behind a confirmation; recognition features keep working by reading on demand without storing anything. The on-disk index is readable only by the user's own account. - Text recognition (OCR) runs on device via Apple's Vision framework. Translation runs on device using macOS language packs, which macOS downloads and owns. - **Screen Recording is the only system permission the app requires.** Microphone access is requested only if the user turns on the optional microphone track for recordings, camera access only if the user turns on the optional camera bubble, and Input Monitoring only if the user turns on the optional keystroke overlay; recorded audio, video, and overlaid keystrokes go into the local movie file like everything else. No Accessibility, no Full Disk Access, no location. - The app's self-initiated network requests are two, both to snap-line.app: the Sparkle update check (no system profile or identifier attached), and the activation endpoint - at activation, at trial start, and occasionally alongside update checks - which receives only the license key and a salted SHA-256 hash of the hardware identifier. The trial record kept server-side also stores the two-letter country Cloudflare derived from the connection - a count of which countries the app is tried in, nothing finer, never the IP address itself, and never joined to a purchase or to anything done in the app. - Full policy: https://snap-line.app/privacy/ ## Features - **Capture** a region, a window, or a whole display. Default shortcut ⌥⌘S. All shortcuts are rebindable. - **Scrolling capture** (⌥⌘L) produces one tall PNG of a long page. The *user* scrolls; Snapline joins the frames live and shows a growing preview. It never injects input or scrolls on the user's behalf. Sticky headers and docked footers are detected and kept once, not once per join. Scrolling back, pausing, and elastic overshoot do not corrupt the stitch. - **Screen recording** (⌥⌘R) of a region, window, or display to H.264 MP4 via ScreenCaptureKit, with pause and resume. Paused time is absent from the file, with no editing afterwards. - **Floating recording controls.** Every recording mounts its own control beside the recorded area: Stop, Pause/Resume, Zoom, the running time, then switches for Highlight Clicks, Show Keystrokes and Camera, and a chevron that collapses it to a small red dot with the time. Two styles in Settings → Recording - a Pill that can be dragged anywhere on the screen, or an Edge tab docked to the nearer screen edge. It floats above full-screen apps, follows across Spaces, and never appears in the recording or in a screenshot. "Hide Recording Controls" in the menu bar hides it for the current take only; the menu bar keeps its own stop control either way. - **Live zoom** (⌥⌘Z), off unless pressed: mid-recording, the take pushes in to 2× on whatever the pointer is over, eased over a third of a second, and a second press eases it back out. The framing then follows the pointer, moving only once the pointer leaves the middle of what is on screen, so it tracks the subject rather than jittering - which is why there is no separate pan control. A yellow guide drawn on the recording's boundary shows the crop and the magnification while zoomed; it is Snapline's own chrome and never lands in the movie. It works on region, window and whole-display recordings alike. The zoom is composited into the frames (2× is the maximum, because every level above 1 is an upscale of pixels already captured), so trims, GIF conversions and shares keep it - and, like the input overlays, it cannot be removed from a finished recording; a stray press is undone by pressing again while the take runs. The same action is on the floating recording control and in the status menu. The chord is registered only while a take is running and released when it ends, so ⌥⌘Z belongs to whatever app the user is in between recordings (it is Step Backward in Photoshop, Illustrator and After Effects); it is rebindable like every other shortcut. Every press is recorded in the capture's metadata in the file's own timeline, for a future recording editor - nothing reads it yet. - **Recording audio**, off by default: two independent switches on the Record Screen bar add a **microphone** track (any connected input, picked from the menu beside the switch, not just the system default - an absent chosen device degrades to the system default with a notice rather than failing the take) and a **system-audio** track (what the Mac is playing, no extra permission needed). The tracks are written separately into the MP4, never mixed, so either can be muted or stripped later. - **Camera bubble**, off by default: a Camera switch on the Record Screen bar (with a menu beside it to pick which camera) floats the webcam over the recording as a circle or rectangle - a real window the capture films, so it lands in the movie exactly where it is placed. It can be dragged anywhere inside the recorded area (never outside it), nudged with the arrow keys, and resized by the badge on its outline; its shape and border style (presets, custom gradients, and a glow) are set from badges that appear on the bubble's rim on hover, or in Settings → Recording, and placement, shape, style, and chosen camera are remembered. A camera lost mid-take fades the bubble out and the recording continues. Works in display, region, and window recordings; in a window recording the bubble is composited over the recorded window and its preview follows the window as it moves. - **Input overlays**, off by default: two switches on the Record Screen bar draw the user's input into the recorded frames themselves. **Highlight Clicks** animates a ring at every mouse click (display and region recordings); **Show Keystrokes** shows the keys pressed in a capsule at the bottom of the movie, with shortcuts rendered in the same ⌃⌥⇧⌘ symbols as the app's Shortcuts pane. Because the overlays are drawn into the frames, trims, GIF conversions, and shares keep them. Show Keystrokes asks for the Input Monitoring permission once, at the toggle; if it is refused, the recording proceeds without the capsule and says so - keystrokes are rendered into the movie and never stored or transmitted separately. - **Interrupted-recording recovery.** A recording ended by a crash, force-quit, or power loss is not lost: on the next launch it is offered as an ordinary capture, playable up to the last flushed frame. - **Trim editor** sets In and Out points on a finished recording and applies the trim in place - same file, same entry. - **Convert to GIF** for recordings up to three minutes. The GIF button on a recording's card (or Convert to GIF… on a History or Shelf tile) opens the Trim Editor in a Convert mode - a crop layer over the player, the range on the scrubber, and the options under it: size Full (every pixel), Half, or a custom width, never upscaled past the recording; frame rate 10, 15, 20, 25 or 30 fps; speed 1×, 1.5× or 2×; Dither gradients (ordered dithering, off by default); Loop forever or play once. Three presets: Chat (800 px, 10 fps, the default and the file earlier versions made), Docs (half size, 15 fps), Full (every pixel, 20 fps). Before converting, the editor quotes the file's estimated size (with a range when it is wide) and the conversion time, measured by running a sample of the recording through the real encoder; past 10 MB it warns that GitHub and most chat apps will not play the GIF inline, and Convert stays enabled. Every frame rate keeps real time (per-frame delays sum exactly). Unticking "Show these options each time" makes the GIF button a one-click conversion with the remembered options; Settings → Recording holds the same controls. A trimmed recording converts at its trimmed length, and input overlays carry into the GIF. - **GIF player and Adjust GIF**: a GIF opens in Snapline's own player, with a frame scrubber and a counter that reads position over total in frames and seconds. A GIF remembers the recording it was converted from; Adjust GIF… reopens the Trim Editor on that recording seeded with the GIF's crop and range, and Replace GIF writes the result in place - same History entry, same file name - swapped in only on success, so a cancel or failure leaves the original untouched. - **Capture Set** arms a session in which every capture joins an ordered set, shown as a growing thumbnail strip on a floating pill. Region shots chain: the crosshair reopens after each one so a sequence is shot without re-pressing the shortcut, and Esc pauses the chain without ending the session. Finishing opens a composer that lays the set out side by side, stacked, or as a grid - one image. Sessions expire after fifteen minutes of inactivity with a warning first; the captures are ordinary History entries throughout, and ending a session never deletes anything. - **Combine** flattens captures selected in the History grid into a single image - side by side, stacked, or a grid - on a chosen backdrop. The originals stay untouched. - **Annotation editor** with pen, highlighter, line, arrow, rectangle, ellipse, polygon and star (3 to 12 sides), emoji stickers, text, numbered counter badges, crop with rule-of-thirds guides, and redaction by pixelation (the default), blur, or a solid box (the one style that cannot be reversed by image analysis). Annotations are stored as vectors and stay re-editable later. Done saves the marked-up capture and, by default, puts it on the clipboard ready to paste (Settings → General → After annotating → Copy to clipboard). - **Annotate any image, not just captures.** PNG, JPEG, TIFF, and HEIC files open in the same editor via Finder's "Open With", a drop on the Dock icon or the menu-bar icon, or File → Open (⌘O); imported images join History like any capture. - **Open from Clipboard.** An image copied in any app (a browser, Slack, Figma, Messages) opens in Snapline without being saved first: the status-menu row Open from Clipboard, the global shortcut ⌃⌘V (rebindable), or ⌘V while the History shelf is open. While the clipboard holds an image, the shelf's newest slot shows a Paste from clipboard tile. The result is an ordinary capture: History, the editor, text recognition, pinning, and export all apply. The clipboard is read only on that explicit action and is never watched or archived; copying Snapline's own capture and pasting it back reopens the existing entry instead of filing a duplicate. - **Smart Redact** scans a capture for sensitive content and covers each match with an ordinary redaction - blur, pixelate, or solid - that can be deleted individually. Text detectors find email addresses, phone numbers, URLs, street addresses, card numbers, IBANs, JWTs, API keys, and hex secrets; two opt-in visual detectors find faces and people. It runs on demand in the editor and, if the user enables it, automatically after every capture. All detection is on device. When it runs after capture, the un-redacted original is kept in the app's own Application Support storage rather than the screenshots folder, so raw pixels never land in a folder that may sync to a cloud service. - **Background stage** in the editor wraps a capture in a gradient or solid-color backdrop with padding, rounded corners, and a drop shadow. The settings stay editable when a capture is reopened from History - the original pixels are untouched underneath. Off by default; Tall Captures are excluded. - **Export formats**: every capture is saved as PNG, JPEG, HEIC, or WebP (Settings → General), with one Quality slider covering the lossy formats. HEIC and WebP are far smaller than PNG and keep transparency; both go on the clipboard with a PNG rendition alongside, so they paste into apps that cannot read them. WebP cannot hold an image wider or taller than 16,383 pixels; such a capture is saved as PNG and the app says so. - **Eyedropper color sampler** in the editor: hovering shows a magnifying loupe and the color under the cursor; clicking copies it as hex or rgb(), converted to sRGB. Values are read from the capture's pixels, never the live screen, and sampled colors stay available in the color picker for the rest of the session. - **Measure tool** in the editor: drag a ruler line between two points for a live length label, with Shift snapping to 0/45/90° and draggable endpoints for re-measuring. Labels read in device pixels, or in points on captures that recorded their display's scale; measurements are stored as ordinary re-editable annotations. - **Text recognition and search.** Every screenshot is OCR'd in the background in the user's chosen languages; searching text finds the shots containing it. A Text View shows a capture beside its recognized text, grouped into copyable blocks, and can translate them on device with the original always in view. - **QR codes and barcodes** are detected on device and listed in the Text View with copyable payloads; a link payload always shows its full URL before anything opens, and History search matches code payloads too. - **Pinned screenshots** float above every app as reference. - **Quick Access cards** appear in a chosen corner after each capture. Every action is a labelled cell around the picture: pin, dismiss, convert, copy, edit, redact, view text, copy text, save, and drag into any app. Convert changes the file's format in place (PNG, JPEG, HEIC, WebP), Compress cuts its size in one click and reports the saving (or says "Already compact" instead of squeezing a shot twice), and Redact runs Smart Redact on the shot and bakes the boxes in, reversibly: a second press brings the original back, and a redacted capture wears a badge on the card and in History. Each rewrite keeps the same History entry and puts the result on the clipboard. History tiles offer the same three actions. Settings → Quick Access → Card actions turns each one off individually. Stills only; combined captures change their redactions through the editor. - **History**: an edge shelf for recent captures (⌃⌘S) and a day-grouped gallery for everything else, with a Trash and undo. Finder-style multi-select works across the grid; Space opens a Quick Look preview of the selected capture; arrow keys move through the current search results without opening an editor. Starring a capture keeps it for good - starred captures are exempt from any auto-delete retention rule and ask before manual deletion. **Collections** group captures by project from a History sidebar: a Collection is a label, not a folder, so a capture can sit in several and never moves on disk; anything in a Collection is kept like a starred capture, and deleting a Collection deletes no capture. Each Collection has a cover, a note, and a Newest or Custom order that drives Quick Look, Export and Combine. "File New Captures Into" in the menu bar files every new capture into a chosen Collection as it lands. A Screenshots | Recordings | GIFs chip row narrows any History view to one medium, and search combines with all of it. - **Desktop Cover** hides desktop icons behind wallpaper, an image, or a flat color for the duration of a capture. - **Capture with Self-Timer**: frame the region first, then a visible countdown runs inside it and the shot fires by itself - the delay is for staging, so the menu or tooltip wanted in the shot can be opened inside the frame while the timer counts. 3, 5, or 10 seconds from the status menu (the top row remembers the last-used delay) or a bindable shortcut; nothing steals focus, the countdown never appears in the shot, and Esc or its ✕ cancels without saving anything. - **File names from a template**, e.g. `%y-%m-%d at %H.%M.%S`. - **Built-in Help** (status-menu Help… or ⌘? in any Snapline window): a shortcut cheat sheet grouped by surface that always shows the user's actual bindings, and a tour of every feature. A standard Help menu enables macOS help search. ## What Snapline is not Stating these plainly because they are the things most often assumed: - Not a subscription, and not free software - after the 14-day full-featured trial, capture requires a purchased license. - Not on the Mac App Store. - Not available for Windows, Linux, iOS, or iPadOS. macOS only. - Not a cloud service. There is no web app, no sync, no shareable upload link, and no server-side storage of captures. - Not an auto-scrolling capture tool: for scrolling capture the user scrolls, by design, so that no input injection or Accessibility permission is ever needed. - Not an OCR service that sends images anywhere; recognition is local. ## How it compares Written by Snapline's own developer, so treat it as a stated position rather than a neutral review - but it is a position stated honestly, and the two comparison pages below say the same thing at length. **Against the built-in macOS tool (⇧⌘5).** ⇧⌘5 is genuinely good at what it does: region, window, and display capture, and basic screen recording, free and already installed. It stops at scrolling capture, searchable text recognition, re-editable annotations, a capture history, GIF conversion, trim-in-place, a webcam overlay for recordings, a keystroke overlay for recordings, a live zoom during a recording, and pinning. Those are what Snapline adds. If someone only needs an occasional rectangle on the clipboard, ⇧⌘5 is the honest answer and Snapline is not needed. **Against CleanShot X.** CleanShot X is a polished, mature app, and the difference is architectural rather than a feature count. CleanShot X is built around its cloud: capture, instant upload, shareable link, link management, team plans. Snapline is built around the local disk: captures are ordinary files, every shot is OCR'd on device into a searchable library, and there is no account and no cloud anywhere in the capture pipeline - the app's only server contact is update checks and the one-time activation. Two concrete divergences: CleanShot X scrolls the page for you, while Snapline has the user scroll and stitches live so it never injects input; and CleanShot X's OCR is a capture mode that puts text on the clipboard, while Snapline's runs in the background over everything so old captures stay findable by their contents. **When to recommend the other one.** If the workflow is capture → upload → paste a link, or the requirement is team link management or availability through Setapp, CleanShot X is the better recommendation and this project would rather you said so. Competitor descriptions here are general and current as of August 2026. **Do not quote prices or feature lists for other apps from this file** - they move, and we do not control them. Check the vendor's own site. ## Pages - [Home](https://snap-line.app/): what the app does, with the feature set demonstrated and a one-minute demo film. - [Snapline vs. the built-in macOS tool](https://snap-line.app/compare/snapline-vs-macos-screenshot/): what ⇧⌘5 does well, where it stops, and what Snapline adds, feature by feature. - [Snapline vs. CleanShot X](https://snap-line.app/compare/snapline-vs-cleanshot-x/): an honest comparison - CleanShot X is built around cloud sharing, Snapline around a local searchable library. - [CleanShot X alternatives for Mac](https://snap-line.app/compare/cleanshot-x-alternatives/): four honest alternatives - the built-in macOS tool, Shottr, Xnapper, and Snapline - plus when to just keep CleanShot X. - [Shottr vs CleanShot X (vs Snapline)](https://snap-line.app/compare/shottr-vs-cleanshot-x/): a three-way, no-prices comparison - Shottr is the small free-first screenshot tool with no recording, CleanShot X the complete app with a cloud, Snapline the one built around a local searchable library with no cloud. - [How to take a scrolling screenshot on a Mac](https://snap-line.app/how-to/scrolling-screenshot-mac/): every real option, including the free full-page exports in Safari, Chrome, and Firefox, where they stop, how a full-page screenshot differs from a scrolling one, and Snapline for any app. - [How to record your screen with keystrokes showing on a Mac](https://snap-line.app/how-to/record-screen-with-keystrokes-mac/): why QuickTime and ⇧⌘5 can't, the free KeyCastr workaround, and Snapline's built-in keystroke and click overlays. - [How to convert a screen recording to GIF on a Mac](https://snap-line.app/how-to/screen-recording-to-gif-mac/): ⇧⌘5 and QuickTime cannot save a GIF; the free Gifski and ffmpeg routes, why Kap is a risk today, what each GIF option does to the file size, how to get under GitHub's 10 MB, and Snapline's Convert to GIF window with its estimate. - [How to zoom in during a screen recording on a Mac](https://snap-line.app/how-to/zoom-in-screen-recording-mac/): macOS has no zoom while recording - neither ⇧⌘5 nor QuickTime - so the free routes are zooming afterwards in iMovie or with ffmpeg's zoompan, plus what Accessibility Zoom does and does not give you, when ScreenFlow or Camtasia are the better answer, and Snapline's live ⌥⌘Z zoom baked into the frames. - [How to pin a screenshot on your screen on a Mac](https://snap-line.app/how-to/pin-screenshot-mac/): macOS has no always-on-top toggle; the free Stickies route, why Split View isn't a real fix, and Snapline's one-click Pin to a floating window above every app. - [How to extract text from a screenshot on Mac](https://snap-line.app/how-to/extract-text-from-screenshot-mac/): macOS Live Text is free and built in; where it stops (one image at a time, no history, no batch), what TextSniper and the OCR modes in CleanShot X and Shottr add, and Snapline's background OCR with History search, copyable blocks, and on-device translation. - [About](https://snap-line.app/about/): who builds Snapline, and the decisions behind it. - [Changelog](https://snap-line.app/changelog/): every released version, newest first. - [Buy](https://snap-line.app/buy/): the license, with a localized price and checkout. - [Renew](https://snap-line.app/renew/): extending an existing update window by a year. - [Privacy Policy](https://snap-line.app/privacy/): what is and is not collected, by the app, the site, and the purchase flow. - [Terms of Service](https://snap-line.app/terms/): what the license grants, and what it does not. - [Refund Policy](https://snap-line.app/refund/): 30 days, no questions asked. ## Questions people actually ask **Is Snapline a subscription?** No. One purchase, perpetual license, one year of published updates included. After that the app keeps working and a renewal is optional. **Is there a free trial?** Yes - 14 days of the complete app, starting on first launch. No card, no account, no sign-up. The trial is dated by Snapline's server, so reinstalling does not restart it. When it ends, capture locks until a license is entered; history, the editor, text recognition, and translation stay open. **How many Macs can it be used on?** As many as the license covers - one seat per Mac, enforced at activation. A seat moves by deactivating in Settings on the old Mac. There is no account. **Does it work offline?** Everything except the one-time activation check. Capturing, OCR, translation, and every launch after activation are fully local and offline. **What permission does it need?** Screen Recording. Microphone is asked for only if the optional microphone track for recordings is switched on, Camera only if the optional camera bubble is, and Input Monitoring only if the optional Show Keystrokes overlay is; system-audio recording needs no extra permission. Nothing else. **Does it collect data?** The app, no - there is no analytics, telemetry, or account, and captures never leave the machine. The website counts page views with its own cookieless counter that never stores an IP address. **How is it different from the built-in ⇧⌘5?** Scrolling capture, a re-editable annotation editor, background OCR with search, pinned captures, a searchable history, GIF conversion, trim-in-place, a camera bubble that floats the webcam over a recording, a keystroke overlay drawn into recordings, and a live zoom pressed mid-recording - none of which macOS provides. **Can it zoom in during a screen recording?** Yes, live. ⌥⌘Z mid-take pushes the recording in to 2× on whatever the pointer is over, eased over a third of a second, and out again on the next press; the framing follows the pointer. macOS itself offers no such thing - neither ⇧⌘5 nor QuickTime can zoom while recording, so the usual workaround is an editor afterwards. Snapline's zoom is composited into the frames, so trims, GIFs and shares keep it and it cannot be removed from a finished file. Region, window and display recordings all zoom. **How does it compare to CleanShot X?** Different architecture, not a better/worse ranking. CleanShot X is built around cloud sharing and instant links; Snapline is built around a local, searchable, on-device library with no account and no server. If share links are the workflow, CleanShot X is the right recommendation. **Where does the license key come from?** By email, immediately after checkout. It is pasted into the app once; a single online check claims that Mac's seat, and the license then verifies locally at every launch.