Guide

How to Make a Terraria Texture Pack

A Terraria texture pack (officially a β€œresource pack”) swaps the game's built-in sprites for your own artwork β€” no mods and no coding. This guide covers the fast way with our editor and the full manual method, current as of Terraria 1.4.5.

Quick answer

The fastest way to make a Terraria texture pack is to use our free browser editor:

  1. Open the editor and pick a sprite to change β€” an item, NPC, tile, boss, or UI element.
  2. Recolor or redraw it pixel-by-pixel in your browser.
  3. Click download. You get a correctly-structured resource pack (right folder layout, valid pack.json) that's ready to drop into Terraria.

Prefer to build it by hand? The rest of this page is the complete manual method.

What a texture pack actually is

A resource pack is just a folder of .pngfiles that use the same names and the same pixel dimensions as Terraria's built-in sprites. When the pack is enabled, the game loads your image instead of the original. Only the sprites you include are overridden β€” everything else stays vanilla. Packs are purely cosmetic: they can't change stats, drops, or world generation, so they never affect achievements. Resource packs have been an official feature since update 1.4.0.1 (they were called β€œtexture packs” until 1.4.2 renamed them), so there's nothing to mod or install.

The folder structure

Every pack follows the same layout. A pack can live either as a plain sub-folder or as a single .zip β€” Terraria reads both.

My Pack Name/                 ← pack root (this folder, or the .zip root)
β”œβ”€β”€ pack.json                 ← REQUIRED
β”œβ”€β”€ icon.png                  ← optional (square PNG, e.g. 256Γ—256)
└── Content/
    β”œβ”€β”€ Images/               ← your .png sprites go here (the bulk of a pack)
    β”œβ”€β”€ Music/                ← optional (.wav / .mp3 / .ogg)
    β”œβ”€β”€ Sounds/               ← optional
    └── Localization/         ← optional (.json language files)

Sprites are the heart of a texture pack, so Content/Images/is where you'll spend your time. The other Content/sub-folders (Music, Sounds, Localization) are optional and only matter if you're replacing audio or text.

pack.json β€” the one required file

Without a valid pack.jsonat the root, your pack won't appear in the menu at all. Here's a complete, working example:

{
  "Name": "Blue Slime Repaint",
  "Author": "terrariapackcreator.com",
  "Description": "Recolors the Blue Slime and Iron Pickaxe.\nMade with Terraria Pack Creator.",
  "Version": {
    "major": 1,
    "minor": 0
  }
}

The keys use exact PascalCase spelling, and there are two rules that silently break loading if you get them wrong:

  • Version is an object with major and minor, not a string.
  • Those numbers must be bare integers β€” "major": 1, never "major": "1".

Watch out

It must be valid JSON: no trailing commas and no comments. A single quoted version number is the most common reason a perfect-looking pack never shows up.

Naming sprites: where vanilla assets live

Each replacement file is named after the game's internal asset. Most sit directly in Content/Images/; a handful (like town NPCs) live in sub-folders that mirror the game's own tree β€” match whatever path the original uses. The common ones are keyed by numeric ID:

AssetFile nameExample
ItemItem_<ID>.pngItem_1.png = Iron Pickaxe
NPC / enemyNPC_<ID>.pngNPC_1.png = Blue Slime
ProjectileProjectile_<ID>.pngProjectile_1.png
Tile (block)Tiles_<ID>.pngTiles_0.png = Dirt
WallWall_<ID>.pngWall_1.png
Buff iconBuff_<ID>.pngBuff_1.png
Armor (worn)Armor_Head_<ID>.pngArmor_Head_0.png

File names are case-sensitive and exact. item_1.png, Item1.png, or IronPickaxe.png are all ignored. If you use our editor you never type these names β€” it picks the right one for every sprite you touch.

The one inviolable rule: keep the exact size

A replacement image must have the exact same canvas dimensionsas the original it replaces. Terraria never rescales β€” a mismatched size renders as garbage or fails to load. A typical item is only 32Γ—32 pixels, which is what makes repainting approachable, but you have to respect whatever the original's size is.

Animated NPCs, projectiles, and some items aren't a single frame β€” they're sprite sheetswith every animation frame stacked in one image. Keep the full sheet dimensions and the same frame layout, or the animation shears apart. To find an original's size, open it in any image editor and read the pixel dimensions. In our editor the canvas is already locked to the correct size for the sprite you selected, so you can't get this wrong.

A complete minimal pack

Putting it together β€” a pack that recolors one enemy and one item:

Blue Slime Repaint/
β”œβ”€β”€ pack.json
β”œβ”€β”€ icon.png                  (256Γ—256, optional)
└── Content/
    └── Images/
        β”œβ”€β”€ NPC_1.png         (Blue Slime β€” keep the sheet's exact size)
        └── Item_1.png        (32Γ—32 β€” Iron Pickaxe)

That's a valid, shippable pack. If you'd rather not create the folders yourself, start from our free blank texture pack template β€” it already has the correct structure and a ready-to-edit pack.json.

Testing your pack in-game

  1. Put the pack folder (or .zip) in Documents\My Games\Terraria\ResourcePacks.
  2. Launch Terraria. From the main menu open Workshop (or the Resource Packs option shown directly on the menu), then choose Resource Packs.
  3. You'll see two columns β€” Available Packs on the left and Enabled Packs on the right. Click your pack to move it into Enabled.
  4. Load a world and check your sprite. If several enabled packs edit the same sprite, the one highest in the Enabled list wins.

Need the full walkthrough (mobile/console notes, load order)? See how to install Terraria texture packs.

Publishing to Steam Workshop

Since update 1.4.2 you can upload straight from the game β€” no Steam website step:

  1. Confirm the pack loads correctly (the testing steps above).
  2. Main menu β†’ Workshop β†’ Publish Resource Packs.
  3. Pick your pack from the list of loaded packs and choose Publish.
  4. Set a custom icon, choose visibility (Public, Friends-only, Unlisted, or Private), add tags so people can find it, and confirm the upload.

It then appears under your Steam Workshop items for Terraria and anyone can subscribe to it.

Common mistakes

  • The double-nested folder. The #1 reason a valid-looking pack shows nothing: your .zip or folder must expose pack.json and Content/ at its root, not MyPack/MyPack/pack.json. When zipping, zip the contents of the pack folder, not the folder itself.
  • Wrong file name or canvas size.A case-typo in the name or a resized image means the sprite silently won't change β€” see texture pack not working.
  • Quoting the version numbers. "major": "1" breaks pack.json and the pack never appears in the menu.
  • Expecting it to retexture mods. A vanilla resource pack works while you play with tModLoader, but it only changes vanillasprites β€” a mod's own items (like Calamity's weapons) keep the mod's textures.

Ready to start

Skip the manual setup entirely β€” open the editor, pick a sprite, repaint it, and download a pack that's already built correctly.