← Back to Guides
PART_05

Branding Your WoW Addon: Custom Logos, Icons & Textures

Published: March 30, 2026
#Branding#Textures#LuaScripting#GameDev

You have built a functional addon for World of Warcraft. It works, it solves a real problem, and you are proud of it. But is it reallyfinished if it does not have its own custom branding? A unique minimap button, a professional icon in the AddOns list, and custom in-game textures are what separate a "script someone threw together" from a polished, studio-quality addon. In this guide, we walk through the exact process we use at The Lav Forge to brand our addons.

1. File Format Requirements

The WoW engine is an old-school renderer with strict requirements for its graphics. If your image does not meet these criteria, it will either appear as a solid green box or not render at all.

Dimensions: Power of 2

Your image must have dimensions that are a power of 2. This is a hard requirement inherited from old-school GPU texture memory alignment.

Valid Sizes16x16, 32x32, 64x64, 128x128, 256x256
Invalid Sizes100x100, 50x50, 48x48, 200x200

File Format Options

  • .TGA (Truevision Graphics Adapter): The most common and reliable choice. Save it as 32-bit to include an alpha channel for transparency, and make sure it is uncompressed. Most image editing software (Photoshop, GIMP, Paint.NET) supports TGA export.
  • .BLP (Blizzard Texture): This is WoW's proprietary texture format. It offers better compression and integration with the game engine, but you will need a conversion tool like BLPConverter to create them. BLP is what Blizzard uses internally for all game textures.

2. Folder Structure

Keeping your files organized is critical, especially once your addon grows past a single Lua file. We recommend creating a dedicated UI subfolder inside your addon directory for all custom textures:

Interface/
  AddOns/
    YourAddonName/
      YourAddonName.toc
      YourAddonName.lua
      UI/
        logo.tga        -- Your addon icon (64x64)
        minimap.tga     -- Minimap button icon (32x32)
        banner.tga      -- Optional: settings panel header
Best PracticeAlways place custom textures inside your own addon's folder. Never reference textures from another addon's directory, as this creates fragile dependencies that break when the other addon updates or gets uninstalled.

3. The TOC File: Addon List Icon

To make your custom icon appear in the Interface Options menu and the AddOns list at the character select screen, you need to add the ## IconTexture tag to your .toc manifest file.

## Before (generic Blizzard icon ID):
## IconTexture: 134400
## After (your custom texture):
## IconTexture: Interface\AddOns\YourAddonName\UI\logo
Restart RequiredChanges to the .toc file are only read when the game client first launches. You cannot simply /reload to see metadata changes. You must fully close and restart WoW.

4. Lua Integration: Minimap Button Icons

Now for the exciting part: putting your custom logo on the actual in-game minimap button. In your UI Lua code, you reference the texture path using the SetTexture API method:

-- Create a texture on your minimap button framelocal icon = minimapButton:CreateTexture(nil, "ARTWORK")

-- Point to your custom TGA/BLP file (omit the file extension!)icon:SetTexture("Interface\\\\AddOns\\\\YourAddonName\\\\UI\\\\logo")

-- Size and position it relative to the buttonicon:SetSize(20, 20)
icon:SetPoint("TOPLEFT", minimapButton, "TOPLEFT", 7, -6)

Notice the double backslashes (\\) in the Lua path. A single backslash is an escape character in Lua strings, so you must double it. Also notice that you omit the file extension (.tga or .blp). WoW resolves the correct file automatically.

5. Testing Your Changes

How you test depends on what you changed:

  • Lua code only (e.g., changed the SetTexture path): Type /reload in game chat. Your minimap button and in-game textures will update instantly.
  • Added new files or changed the .toc: You must close WoW completely and restart the game client. The .toc manifest is only parsed at launch.
Debugging TipIf your texture appears as a solid green box, it almost always means one of two things: the file dimensions are not a power of 2, or the file path in your Lua code has a typo. Double-check both before anything else.

Want a professionally branded addon?

Custom icons, polished minimap buttons, and studio-quality textures. We handle the branding so your addon looks as good as it performs.

Request a Custom Build