Fri, Feb 7, 2025Will Hackett

Friday night code sessions - a lazy CleanShot X alternative

Featured image for Friday night code sessions - a lazy CleanShot X alternative

I've been using CleanShot for a bit over five years. I have no complaints except that it's attached to my SetApp subscription, something that I was fine paying for until some of my favorite apps left the service. I essentially now only use Lungo, TablePlus and CleanShot X – the first two of which I now have one-off licenses for.

I've come up with an "alternative" which is more like a "work-around" to fill in for the workflows I primarily used CleanShot for.

This means:

  1. I'm a macOS user
  2. I use CleanShot X primarily for taking screenshots
  3. I don't use any of its editing tools
  4. I only really upload to the cloud if I'm not dragging it into a Slack message.

The cloud part

Storing and serving stuff on the cloud has been a solved problem since even before a famous place to buy books started selling cloud storage. For this, I won't be using the bookstore, but Cloudflare R2 which is a great storage solution and uses the bookstore's S3 API.

I wanted nice previews too, so I'm using Cloudflare Workers to render a HTML page with a file preview and download link.

There's a handy built-in called HTMLRewriter which I'm using to inject attributes into a pre-made HTML template. This allows me to easily inject dynamic elements, such as a download link and preview image, into the HTML template.

I'm not using any fancy libraries to control the previews, just browser built-ins which work fine:

  • Images, a good old <img> tag
  • Videos, a <video> tag
  • Audio, an <audio> tag
  • PDFs, an <embed> tag

Basically, when you hit the worker at https://cloudwrap.example.com/your-file.jpg, it'll serve a HTML page with a preview of the image and a download link.

I've open-sourced the project and you can find it here.

The screenshot part

I've been using Siri Shortcuts to automate all sorts of things on my iPhone for a while now. It's on my Mac too, but I've never really used it.

I decided to use it for this project. The key reason is that it lets me add a quick action to Finder and the share sheet.

Screenshot of the quick action

I came up with this shortcut which:

  1. Accepts an input from the share sheet or quick action menu

  2. Uploads the file to the above worker

  3. Copies the URL to the clipboard

  4. Shows a share sheet which you can dismiss if you're just going to paste the URL

How does it feel?

While it's not as smooth as CleanShot X, it's not bad. I can take a screenshot, right click the file, hit the quick action, and then paste the URL. It's a few more steps than I'd like, but it's not bad.

Given how infrequently I used the cloud upload feature of CleanShot X, I'm happy with this solution. It's free, it's fast, and it's mine (ish).

The future

This was a fun Friday night project and I'm happy with the results. I will probably polish it a bit as needed, but for now it does what I need it to do - upload screenshots to the cloud and give me a URL to share.

I added a Deploy to Workers button to the GitHub repo, so you can deploy it to your own Cloudflare account if you want to use it.

About the Author

Will Hackett

CTO at Flowstate, building thoughtful AI products. Previously co-founded Pragmatic and Pactio, and led engineering teams at Blinq and Linktree. Passionate about distributed systems, product engineering, and helping teams ship great software.