A screenshot beautifier is a canvas: pick a background, round the corners, add a shadow and a window frame, export a PNG. An agent writes that in one sitting and it can run entirely in your browser, so the screenshot never leaves your machine. What Shots charges for is the finish around it: realistic device mockups, 3D shapes, generated backgrounds and zoom animations rendered as 2K video. A basic zoom clip is a follow-up evening with WebCodecs, but expect neither their library nor their look. A free open-source option already exists, so look at ShotCandy before you build.
Before you buildShots Free already exports PNG with the style tools. If you do not make video, try it and ShotCandy before building anything.
Build me a screenshot beautifier to replace Shots for still images. Requirements: - Vite + React + TypeScript single-page app; `npm run dev` serves http://localhost:5180. Rendering is an HTML canvas with no server, so nothing is ever uploaded. - Input: paste (Cmd or Ctrl+V), drag and drop, or a file picker for PNG, JPEG and WebP; keep the original at full resolution. - Side panel: padding (0 to 200 px), corner radius, shadow (offset, blur, opacity) and a background that is a solid colour, a two-stop gradient with an angle, or an uploaded image with a blur slider. - Frames drawn in code, with no copied artwork: none, a macOS-style window, a browser window with an editable URL text, and a plain phone outline; plus a "glass" border option. - Presets as JSON in ./presets/ (name and every control value): ship 8, and let me save my own in localStorage. - Export: PNG at 1x, 2x or 3x through `canvas.toBlob`, "Copy to clipboard" through the Clipboard API, and size presets 1200x630, 1600x900, 1080x1080 and 1080x1920 that centre the framed image on a canvas of that size. - Batch: drop up to 20 files, apply the current preset and download one ZIP built with `fflate`. - Tests (Vitest): the layout maths is deterministic, and with frame "none" a 2x export of a 1000x600 input with 80 px padding is exactly 2320x1520 pixels. - Single user. No accounts, no telemetry, local-first: the app makes no network calls once it has loaded. - Out of scope: device photos, 3D shapes, AI backgrounds, video and animation, accounts, cloud storage. - README: how to add a frame or a preset, and an honest note that this covers still images only.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Shots.so.
Add a zoom video export to the screenshot beautifier in this folder. Requirements: - Let me drag a rectangle on the framed image to mark the zoom target, and choose a duration of 2 to 6 seconds with an ease-in-out curve. - Render frames to a canvas at 30 fps and encode them with WebCodecs `VideoEncoder` (H.264), muxed into MP4 with `mp4-muxer`. - Show a progress bar and a preview before exporting; refuse to start when `VideoEncoder` is missing and say which browsers work. - Export sizes 1280x720 and 1080x1920. - Update the README with the measured export time for a 4-second clip.
Add annotations to the screenshot beautifier in this folder. Requirements: - Tools: arrow, rectangle, numbered badge, text, and a pixelate rectangle that destroys the pixels underneath rather than hiding them. - Select, move, resize, delete and undo/redo with Cmd or Ctrl+Z. - Annotations are part of the image before the frame and shadow are applied, and survive the batch export of the same preset only when turned on. - Test that pixels inside a pixelate rectangle cannot be recovered from the exported PNG. - Update the README.
Add screen capture to the screenshot beautifier in this folder. Requirements: - A Capture button calls `navigator.mediaDevices.getDisplayMedia`, grabs one frame at the stream's native resolution and loads it as the input; the stream stops straight away. - A crop step with drag handles and an aspect-ratio lock before styling. - Remember the last preset used for captures. - Say clearly in the UI when the browser refuses permission. - Update the README.
Makers of landing pages, launch posts and app listings want a screenshot that looks designed within a minute, without opening Figma. Shots puts templates, devices and motion in one browser tab with nothing to install, and the paid tiers start to matter once you need video or a sharper export. A $10 month is easy to justify before a launch and easy to cancel after it.
Estimate · Runs in your browser for nothing and needs no server. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | $0 | Mockups with the frame, style and background tools and PNG export; the export button starts at 1x. |
| Plus | $10 | $7.92 | 4K images (2x), animation and zoom at 30 fps with parallax effects, 720p video at 30 fps with 10 exports of up to 1 minute each. |
| Pro | $15 | $10.42 | Up to 6K images (3x), 2K video at 60 fps with unlimited exports of up to 3 minutes, transparent video (WebM, 1080p, up to 20 seconds) and WebP export. |
Free lets you build mockups with the style, frame and background tools and export PNG images; video, 4K and 6K output and WebP need a plan.
Yes. An AI coding agent such as Claude Code, Codex or Cursor can build a usable personal version in one session with the prompt on this page, running on your own machine.
About $10 a month on the Plus plan, $120 a year (checked 2026-10-19).
A library of real device mockups (iPhone, Android, iPad, desktop) with correct bezels; 3D shapes, glass backgrounds and effects such as noise, VHS and glitch; Magic backgrounds that are generated from the colours in your media; Animation presets with zoom and parallax rendered as 2K video at 60 fps; Transparent video, WebP and GIF export from the Pro plan. If any of those matter to you, keep paying.
Yes: ShotCandy (open source), Shottr (free).