There are a zillion ways to frame iOS app screenshots in device bezels. I've tried a bunch of them and they all let me down in one way or another. Some want you to pay for the privilege. Some don't work exactly the way they should. Some require too many steps. And some include all sorts of other junk you don't need.
So I built my own.
If you're an iOS developer, you know the drill. You take a screenshot on your device or simulator, and then you need to put it inside a device frame for your App Store listing, your marketing site, or a blog post. It should be simple, but somehow it never is.
The paid tools are fine, but paying a subscription to put a rectangle around another rectangle feels wrong. The free tools tend to be clunky or unreliable. And the manual Photoshop/Figma approach works but is tedious, especially if you're iterating quickly on designs and need to re-export frequently.
Bezelbub is a macOS app that does one thing well: drop in a screenshot or screen recording and it automatically detects the matching device and composites it into a pixel-perfect framed image or video.
That's it. No subscription. No account. No upsells. No ads. No fifty other features you didn't ask for. Just drag, detect, frame.
Bezelbub is free and open source. I built it because I needed it for my own projects—Countdowns and CD Wally both needed framed screenshots—and once it was working, there was no reason to keep it to myself.
The iOS developer community has given me a lot over the years: open source libraries, blog posts, Stack Overflow answers, WWDC videos. Bezelbub is a small way to give something back.
Bezelbub analyzes the resolution and aspect ratio of your screenshot or screen recording to identify the source device. It then composites the image or video into the correct device bezel at pixel-perfect alignment. Screenshots export as clean PNGs; screen recordings export as MOV files with audio preserved. You can also rotate videos to fix incorrect orientation.
The app supports current iPhone and iPad models, including iPhone 17 and iPhone Air. If you drop in a screenshot it doesn't recognize, it'll tell you rather than silently producing garbage.
Bezelbub is available now on GitHub: github.com/cwooddgr/bezelbub
Clone it, build it, use it. If you find it useful, that's all the payment I need.