The Open Source Standard Library for Device Templates - Website
For each device, there is a:
- PNG of the device frame
- PNG of the mask of the frame (grayscale binary screen mask)
- JSON file with metadata
Example of Frame, Template, and Mask

This data is stored within device-frames-output, which has this structure:
device-frames-output/
├── {category}/
│ └── {model}/
│ └── {variant}/
│ ├── frame.png
│ ├── mask.png
│ └── template.json
├── index.json
where category is either Apple iPhone, Android Phone, Android Tablet, Apple iPad,
model is the type of device (ex: 17 Pro Max, iPad mini 8.3, Pixel 9 Pro XL), and
variant is the different colors (ex: Cosmic Orange, Blue, Titanium),
and index.json is a JSON file which contains all frames in a nested lookup structure, each variant in kebab-case with hosted URLs and template metadata:
{
"apple-iphone": {
"17-pro-max": {
"cosmic-orange": {
"frame": "https://jonnyjackson26.github.io/device-frames-media/device-frames-output/Apple%20iPhone/17%20Pro%20Max/Cosmic%20Orange/frame.png",
"mask": "https://jonnyjackson26.github.io/device-frames-media/device-frames-output/Apple%20iPhone/17%20Pro%20Max/Cosmic%20Orange/mask.png",
"screen": {
"x": 100,
"y": 100,
"width": 1320,
"height": 2868
},
"frameSize": {
"width": 1520,
"height": 3068
}
}
}
}
}This data is created from raw PNGs of device frames (device-frames-raw) with the script process_frames.py. Algorithm docs

Please add more device frames to expand the dataset. See CONTRIBUTING.md.
- Add the frame PNG to the appropriate spot in device-frames-raw
- Push your branch (or open a PR) and GitHub Actions will automatically run
process_frames.pyand regenerate the device list below
Apple iPhone:
- 6s
- 8
- 8 Plus
- 12 Pro Max
- 13
- 13 mini
- 14 Pro Max
- 15 Pro Max
- 16
- Black, Pink, Teal, Ultramarine, White
- 16 Plus
- Black, Pink, Teal, Ultramarine, White
- 16 Pro
- 16 Pro Max
- 17 Pro
- 17 Pro Max
- Air
- XS
Apple iPad:
- iPad Air 11 M2 & M3
- iPad Air 13 M2 & M3
- iPad Air - 10.9 M1
- iPad mini 8.3 A17 Pro
- iPad Pro 11 A12X to M2
- iPad Pro 11 M4 & M5
- iPad Pro 13 A12X to M2
- iPad Pro 13 M4 & M5
Android Phone:
- Pixel 8
- Pixel 8 Pro
- Pixel 9 Pro
- Pixel 9 Pro XL
- Samsung Galaxy S21
Android Tablet:
- Pixel Tablet
- Samsung Galaxy Tab S11 Ultra