Skip to main content
Push notification icons are small images that appear alongside your notifications. They help users quickly recognize your brand, understand context, and distinguish your messages from others. Each platform handles icons differently, so following platform-specific standards is critical to ensure your notifications display correctly. This guide covers push notification icons. If you are looking for large images, see Images & Rich Media.

Best practices for push notification icons

  • Use PNG images with transparency whenever possible.
  • Keep icons simple and recognizable at very small sizes.
  • Avoid text or fine details that may become illegible.
  • Follow platform-specific rules for size, color, and transparency.
  • Test notifications on real devices across platforms and OS versions.

Web notification icons

Web push notifications display an icon provided at send time or defined as a default in your site settings.
  • Supported formats: PNG, JPG, GIF (non-animated)
  • Icon must be square. Recommended size is 256x256 pixels.
Different browsers (Chrome, Edge, Safari, Firefox) may crop or scale icons differently depending on device and OS. A square 256x256 icon is recommended to ensure consistent display across all browsers.
Set the default icon in your Dashboard Settings > Push & In-App > Web Settings. You can also override the icon per notification using the dashboard or REST API. See Send notifications with non-default icons for details.

Android web push badge icon

On Android devices, Web Push notifications may display a smaller badge icon defined by the Web App Manifest badge property. The badge icon is used in limited UI contexts (such as the Android status bar) and may not appear on all Android devices. While badge icons are not subject to the same strict alpha-only rules as Android app small notification icons, they are still rendered in system-controlled UI. Best practices:
  • Use a square PNG with a transparent background
  • Keep the design simple and high-contrast
  • Avoid text or fine detail
  • Use monochrome or minimal color for best consistency
A minimum size of 72×72 pixels is recommended. Larger images are acceptable and will be downscaled as needed.
Unlike Android app small notification icons, Web Push badge icons may preserve color on some devices. However, full-color or complex icons may render inconsistently depending on Android version, browser, and device manufacturer.
See Send notifications with non-default icons for details.

iOS notification icons

iOS notifications always use your app icon.
  • The notification icon is automatically derived from your app’s icon asset
  • You cannot change the notification icon per message
  • Changing the icon requires updating your app icon and shipping a new app version
There is no APNs payload field that allows you to specify a custom notification icon on iOS.This behavior is enforced by iOS and applies to standard push notifications, Critical Alerts, and Live Activities.

Communication Notifications

On iOS 15 and newer, Apple supports Communication Notifications. When properly implemented, communication-style notifications (such as messaging or calling apps) may display a contact or sender image instead of the app icon in supported system views.
Communication Notifications are limited to specific use cases and require explicit adoption of Apple’s communication notification APIs. They are not available for general-purpose notifications.

Android notification icons

Android (including Amazon and Huawei devices) supports Small and Large notification icons. Android also supports Conversation Notifications that allow you to change the icon to the user’s profile image.
On Android 8.0+ (API 26+), notification appearance is heavily influenced by system UI, notification channels, and device manufacturer customizations.
Android notification icon placement

Small notification icons

The small notification icon appears in the status bar and the top-left of the notification. If no custom small icon is provided, OneSignal displays a default bell icon. Android renders small notification icons using the icon’s alpha channel, not its color data. The system applies its own tint (or your configured accent color) when displaying the icon. Requirements and best practices:
  • Use a monochrome silhouette icon on a transparent background
  • Design the icon so the shape is defined by transparency, not color
  • Avoid gradients, shadows, or multi-color artwork
  • Keep the design simple and recognizable at very small sizes
A common and recommended approach is to design the icon as white artwork on a transparent background, but technically Android uses the alpha mask, not the white color itself.
Icons with solid backgrounds or full-color artwork may render incorrectly — often appearing as a white square, clipped shape, or unexpected silhouette — depending on the device manufacturer and Android version.Android often ignores color information in small notification icons and derives the final appearance from the alpha channel and system or app-defined tinting.

Small icon accent color

You can change the color shown around the small icon of the notification.
To set a default color, add the following line to your res/values/strings.xml file in your project. If you want a different color for dark mode, add the key to your res/values-night/strings.xml as well. Use the HEX value. Use Android Asset Studio Color scheme for assistance.
<resources>
    <string name="onesignal_notification_accent_color">FF00FF00</string>
</resources>
To set the color on per notification bases, set android_accent_color on our Create notification API call or enter a value in the Accent color field under Messages > New Push > Platform Settings > Google Android Options.
If you’ve very recently added an icon resource to your app, you may want to wait a few days before sending notifications using the icon. This is because it can take many days or even weeks for the majority of your users to update their apps to the latest version which contain your new icons.

Custom non-alpha channel small icon images

Some device manufactures display the image as-is (ignoring the alpha channel rule). You can setup a custom notification layout based on Android’s documentation if you wish to use non-alpha channel images across all devices. We highly recommend following the alpha rule as the icons may not look consistent on all devices. Google designed it this way — the icon is too small to see any meaningful detail, so enforcing a single color helps enforce an easier to recognize icon at a glance.

Large notification icons

The large icon appears on the right side of the Android notification.
  • Recommended size: 256×256 pixels
  • Format: PNG or JPG
  • If not set, Android may reuse the small icon

How to add Android default icons

We strongly recommend configuring default notification icons for every Android-based app (Google Play, Amazon, Huawei). Missing or incorrectly configured icons are the most common cause of broken notification rendering. Android supports two default icons:
  • Small notification icon (required)
  • Large notification icon (optional but recommended)
1

Generate the small notification icon

The small notification icon appears in the status bar and notification header.Requirements:
  • Monochrome silhouette icon
  • Transparent background (alpha channel required)
  • No colors, gradients, or shadows
A common and recommended approach is a white icon on a transparent background, but Android uses the alpha channel, not the white color itself.
The fastest and safest way to generate compliant small icons is using Android Asset Studio – Notification Icons.
Name the icon: ic_stat_onesignal_default
2

Create required small icon sizes

Required: You must include all density variants for the small icon. Missing any size can cause Android to fall back to a system default icon.
Icon nameDensity (dp)Size (px)
ic_stat_onesignal_defaultMDPI24x24
ic_stat_onesignal_defaultHDPI36x36
ic_stat_onesignal_defaultXHDPI48x48
ic_stat_onesignal_defaultXXHDPI72x72
ic_stat_onesignal_defaultXXXHDPI96x96
3

Generate the large notification icon (optional)

Best practices:
  • Square image
  • PNG or JPG
  • Transparent background recommended
  • Recommended size: 256×256 px
Unlike small icons:
  • Color is allowed
  • Alpha-only is not required
  • Only one size is needed
Required file name: ic_onesignal_large_icon_default.png
4

Place icons in the correct project paths

Each icon must be placed in the correct resource directory for your framework. Make sure the following paths exist; create any folders you are missing.Required: Each image must be present in the following paths:
  • res/drawable-mdpi/ (24x24)
  • res/drawable-hdpi/ (36x36)
  • res/drawable-xhdpi/ (48x48)
  • res/drawable-xxhdpi/ (72x72)
  • res/drawable-xxxhdpi/ (96x96)
  • res/drawable-xxxhdpi/ (256x256) (Large Icon)
Your project should look similar to this (depending on your SDK):
If you see a solid square instead of your icon, the image does not have proper transparency.
If you see the OneSignal bell icon, one or more required small icon sizes are missing or placed in the wrong directory.
Your Android app is now correctly configured with default notification icons.

Send notifications with non-default icons

When sending push notifications from the OneSignal dashboard or REST API, you can override the default icons with custom icons for Android, Amazon, Huawei, and Web Push notifications. You cannot override the icon for iOS notifications.

REST API parameters

Android, Amazon, and Huawei REST API parameters:
small_icon
string
Amazon: adm_small_icon Huawei: huawei_small_iconFor the small icon, the image must exist within the same project path as the default small icon. It cannot use a remote URL. See How to add Android default icons for details on where to add your custom icons.Set the icon name without the file extension in the REST API parameters.Example: "small_icon": "my_custom_icon_name_without_extension"
large_icon
string
Amazon: adm_large_icon Huawei: huawei_large_iconFor the large icon, the image can exist within the same project path as the default large icon or as a remote URL. See How to add Android default icons for details on where to add your custom icons.Set the icon name without the file extension in the REST API parameters.Example: "large_icon": "my_custom_icon_name_without_extension"
Web Push REST API parameter:
chrome_web_icon
string
Firefox: firefox_iconThe URL to the image resource. Must be the direct URL to the image resource.Example: "chrome_web_icon": "https://example.com/my_custom_icon.png"
chrome_web_badge
string
The URL to the image resource. Must be the direct URL to the image resource.Example: "chrome_web_badge": "https://example.com/my_custom_icon.png"

Dashboard

In the OneSignal dashboard, using the Messages > Push > New Push form or Templates, navigate to the platform-specific options. For Android, Amazon, and Huawei, if the file exists within the same project path as the default icon, set the icon names without the file extension. With Large Notification Icons, you can also supply a direct URL where the icon will be displayed from.