# Change icons globally

**URL:** https://meta.discourse.org/t/change-icons-globally/87751
**Category:** Developer Guides
**Tags:** how-to
**Created:** [May 17, 2018, 3:45pm UTC](https://meta.discourse.org/t/change-icons-globally/87751 "2018-05-17T15:45:00Z")
**Posts on this page:** 7
**Page:** 2

<div class="post-metadata">

### Author: ![tomtjes](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tomtjes/32/131271_2.png) [@tomtjes](https://meta.discourse.org/u/tomtjes)
#### Post date: [July 30, 2020, 1:06pm UTC](https://meta.discourse.org/t/change-icons-globally/87751/22 "2020-07-30T13:06:38Z")

</div>

Yes, follow this guide: [Replace Discourse's default SVG icons with custom icons in a theme](https://meta.discourse.org/t/replace-discourses-default-svg-icons-with-custom-icons-in-a-theme/115736)

---

<div class="post-metadata">

### Author: ![cogdog](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/cogdog/32/116536_2.png) [@cogdog](https://meta.discourse.org/u/cogdog)
#### Post date: [September 17, 2020, 5:17pm UTC](https://meta.discourse.org/t/change-icons-globally/87751/23 "2020-09-17T17:17:20Z")

</div>

Bump, please. I have the same question.

Out of the box, discourse uses the link icon at the bottom of post as a “share” button (it’s more than the link, it offers social media sharing) yet the same icon is used in the editor to edit a link.

These really ought to be different; they are different functions. OR if anyone has a way to override the global change in the post editor, I’d appreciate it.

---

<div class="post-metadata">

### Author: ![timjbanks](https://avatars.discourse-cdn.com/v4/letter/t/ce73a5/32.png) [@timjbanks](https://meta.discourse.org/u/timjbanks)
#### Post date: [July 1, 2021, 4:12pm UTC](https://meta.discourse.org/t/change-icons-globally/87751/24 "2021-07-01T16:12:30Z")

</div>

Recently changed the Like icon from the “heart” to " book-reader".

Had great success changing all of the Like icons, except the one in the notifications, drop-down list

![Capture166](https://global.discourse-cdn.com/meta/original/3X/8/8/88e1075154643d245f184d798d3ab5c6b518ea14.jpeg)

I’ve used the following header, adding all possible options I could think of:

```plaintext
   <script type="text/discourse-plugin" version="0.8">
        api.replaceIcon('d-unliked', 'book-reader');
        api.replaceIcon('d-liked', 'book-reader');
        api.replaceIcon('heart', 'book-reader');
        api.replaceIcon('new read', 'book-reader');
        api.replaceIcon('d-icon-heart', 'book-reader');
        api.replaceIcon('notification.liked', 'book-reader'); // notifications 
        api.replaceIcon('notification.liked_2', 'book-reader'); // notifications 
        api.replaceIcon('notification.liked_many', 'book-reader'); // notifications 

    </script>

```

The heart has been replaced everywhere on the platform, except for the notification drop-down list…

Any thoughts?

---

<div class="post-metadata">

### Author: ![dax](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dax/32/244677_2.png) [@dax](https://meta.discourse.org/u/dax)
#### Post date: [July 1, 2021, 5:00pm UTC](https://meta.discourse.org/t/change-icons-globally/87751/25 "2021-07-01T17:00:49Z")

</div>

Try to add also

`api.replaceIcon('notification.liked_consolidated', 'book-reader');`

> <https://github.com/discourse/discourse/blob/dc6b547ed89f652b5406489d76140b76cf8e0d1d/app/assets/javascripts/discourse-common/addon/lib/icon-library.js#L13>

---

<div class="post-metadata">

### Author: ![timjbanks](https://avatars.discourse-cdn.com/v4/letter/t/ce73a5/32.png) [@timjbanks](https://meta.discourse.org/u/timjbanks)
#### Post date: [July 1, 2021, 5:20pm UTC](https://meta.discourse.org/t/change-icons-globally/87751/26 "2021-07-01T17:20:42Z")

</div>

Thanks for the response, Daniela!

Added it, but still no change. The heart still shows as the notification icon.

```plaintext
   <script type="text/discourse-plugin" version="0.8">
        api.replaceIcon('d-unliked', 'book-reader');
        api.replaceIcon('d-liked', 'book-reader');
        api.replaceIcon('heart', 'book-reader');
        api.replaceIcon('new read', 'book-reader');
        api.replaceIcon('d-icon-heart', 'book-reader');
        api.replaceIcon('notification.liked', 'book-reader');  
        api.replaceIcon('notification.liked_2', 'book-reader');  
        api.replaceIcon('notification.liked_many', 'book-reader');  
        api.replaceIcon('notification.liked_consolidated', 'book-reader');  

    </script>
    

```

Other than this instance, the book-reader icon has replaced all heart icons everywhere.

Thought it might be an icon conflict, so I changed from “book-reader” to “pencil”, since I know notifications can use that icon. Didn’t work, still a heart.

Any thoughts?

---

<div class="post-metadata">

### Author: ![jrgong](https://avatars.discourse-cdn.com/v4/letter/j/c57346/32.png) [@jrgong](https://meta.discourse.org/u/jrgong)
#### Post date: [October 5, 2025, 11:56am UTC](https://meta.discourse.org/t/change-icons-globally/87751/27 "2025-10-05T11:56:09Z")

</div>

I tried to replace the `envelope` icon with the `inbox` icon, but the changes are not applied to the icons inside the user menu panel. Do they have to be targeted in a specific way?

My snippet:

```js
// {theme}/javascripts/discourse/api-initializers/init-theme.gjs

import { apiInitializer } from "discourse/lib/api";

export default apiInitializer((api) => {
  api.replaceIcon("envelope", "inbox");
});

```

---

<div class="post-metadata">

### Author: ![Don](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/don/32/228726_2.png) [@Don](https://meta.discourse.org/u/Don)
#### Post date: [October 5, 2025, 1:10pm UTC](https://meta.discourse.org/t/change-icons-globally/87751/28 "2025-10-05T13:10:20Z")

</div>

Hello @jrgong 👋

Here you can find the icon replacements what contains the notifications.

> <https://github.com/discourse/discourse/blob/5012d213e0e8a964b609d62bbd05162c36f61a4c/app/assets/javascripts/discourse/app/lib/icon-library.js#L38>

Add this line to your snippet:

```js
api.replaceIcon("notification.private_message", "inbox");

```

[Previous page](https://meta.discourse.org/t/change-icons-globally/87751.md?page=1)
