Firefox Extension Icons: Sizes, Formats, and SVG vs PNG
The icon is the first thing users see in AMO search results and the add-ons bar. Getting it right matters.
Required Sizes
For a complete Firefox extension, provide icons at these sizes:
{
"icons": {
"16": "icons/icon-16.png",
"32": "icons/icon-32.png",
"48": "icons/icon-48.png",
"96": "icons/icon-96.png",
"128": "icons/icon-128.png"
}
}
| Size | Where Used |
|---|---|
| 16px | Browser toolbar (compressed) |
| 32px | Browser toolbar (HiDPI / retina) |
| 48px | AMO listing thumbnail, Extensions page |
| 96px | Extensions page (HiDPI) |
| 128px | AMO listing detail page |
AMO also accepts a standalone 512px marketing icon uploaded separately in the developer dashboard.
SVG Support
Firefox supports SVG icons in the manifest:
{
"icons": {
"48": "icons/icon.svg",
"96": "icons/icon.svg"
}
}
SVG advantages:
- Single file, scales perfectly to any size
- Usually smaller file size than multiple PNGs
- Easy to edit
SVG disadvantage:
- Not supported by Chrome (if you ever cross-publish)
- AMO marketing icon upload requires PNG/JPG
For Firefox-only extensions: use SVG. For cross-browser: use PNG.
Designing for Small Sizes
At 16px, detailed icons become mush. Design principles:
- Bold, simple shapes — fine lines disappear
- High contrast — works in both light and dark browser themes
- Recognizable silhouette — squint test: can you tell what it is?
- Test at actual size — designers always zoom in too much
Dark/Light Browser Theme Awareness
Firefox can use different icons for dark vs light toolbar themes:
{
"action": {
"default_icon": "icons/icon.svg",
"theme_icons": [
{
"light": "icons/icon-dark.png",
"dark": "icons/icon-light.png",
"size": 16
},
{
"light": "icons/icon-dark.png",
"dark": "icons/icon-light.png",
"size": 32
}
]
}
}
Note the naming: light key means "icon for light toolbar", dark key means "icon for dark toolbar".
Generating PNG Sizes from SVG
# Using Inkscape (Linux/Mac)
for size in 16 32 48 96 128; do
inkscape --export-type=png \
--export-width=$size \
--export-height=$size \
--export-filename="icons/icon-${size}.png" \
icons/icon.svg
done
# Using ImageMagick
for size in 16 32 48 96 128; do
convert -background none -resize ${size}x${size} \
icons/icon.svg icons/icon-${size}.png
done
# Using sharp (Node.js)
const sharp = require('sharp');
const sizes = [16, 32, 48, 96, 128];
await Promise.all(sizes.map(size =>
sharp('icons/icon.svg')
.resize(size, size)
.png()
.toFile(`icons/icon-${size}.png`)
));
AMO Screenshot Requirements
AMO requires screenshots for your listing. Requirements:
- At least 1 screenshot
- Minimum 600 × 400 pixels
- PNG or JPG
- Shows the extension in use
For a new tab extension, take a screenshot of:
- The new tab page in dark mode
- The new tab page in light mode
- The settings/configuration panel
Quick Icon Checklist
- [ ] 48px icon (minimum for AMO)
- [ ] 96px icon (HiDPI)
- [ ] 128px icon (AMO detail page)
- [ ] Works on both dark and light backgrounds
- [ ] Recognizable at 16px
- [ ] AMO 512px marketing icon (PNG, separate upload)
- [ ] Screenshots: 1+ images of extension in action
Weather & Clock Dashboard — free Firefox new tab with weather, world clocks, search. MIT licensed.
Top comments (0)