| [Clipboard Normalizer in Mac App Store](https://www.jefftk.com/p/clipboard-normalizer-in-mac-app-store) | September 28th, 2026 |
| | *[ai](https://www.jefftk.com/news/ai)* ,*[tech](https://www.jefftk.com/news/tech)* |
wrote a programto normalize your clipboard, removing fonts / colors / sizes and mostly leaving semantic information: anything that can't be represented in Markdown was dropped. Now that I can have
[walk me through](https://www.jefftk.com/p/teleoperated-humans)things, however, I've made it available as a free app
[on the Mac App Store](https://apps.apple.com/us/app/clipboard-normalizer/id6809465278):
It's now a single menu bar app, which offers a few options:
In addition to normalizing your clipboard, it can also convert copied rich text to markdown and back again.
Video demo:
youtube It's amazing how much software development has changed in the last few months. In December, when I made the first version, it was simple enough that I think I still wrote it by hand (with some asking questions to Claude) and then Claude walked me through using Platypus to package the script as a Mac app. This time I just said I wanted it in the Mac App Store and Claude rewrote it to be compatible. This included:
- Replacing [Pandoc](https://pandoc.org/) (GPL and so
incompatible the the App Store TOS) with[SwiftSoup](https://github.com/scinfu/SwiftSoup) .
- Writing Swift code to wrap SwiftSoup.
- Merging the separate "Normalize Clipboard" and "Markdownify Clipboard" apps into a single menu bar app.
- Making it show a little toast describing what it had just done, including an FYI if you tried an impossible conversion.
- Adding tests, including ones for XSS and others for very strange formatting.
- Fixing a few edge cases the old one mishandled.
- Walking me through the App Store review process.
I needed to provide a little guidance, in telling it where I wanted to draw the line on which formatting to keep, and I did notice a few small conversion bugs.
It failed the review process the first time, mostly because I was lazy and skipped Claude's recommendation to make a demo video. The second time it got through fine.
Referenced in: