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:
- Open the editor and pick a sprite to change β an item, NPC, tile, boss, or UI element.
- Recolor or redraw it pixel-by-pixel in your browser.
- 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:
Versionis an object withmajorandminor, 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:
| Asset | File name | Example |
|---|---|---|
| Item | Item_<ID>.png | Item_1.png = Iron Pickaxe |
| NPC / enemy | NPC_<ID>.png | NPC_1.png = Blue Slime |
| Projectile | Projectile_<ID>.png | Projectile_1.png |
| Tile (block) | Tiles_<ID>.png | Tiles_0.png = Dirt |
| Wall | Wall_<ID>.png | Wall_1.png |
| Buff icon | Buff_<ID>.png | Buff_1.png |
| Armor (worn) | Armor_Head_<ID>.png | Armor_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
- Put the pack folder (or
.zip) inDocuments\My Games\Terraria\ResourcePacks. - Launch Terraria. From the main menu open Workshop (or the Resource Packs option shown directly on the menu), then choose Resource Packs.
- You'll see two columns β Available Packs on the left and Enabled Packs on the right. Click your pack to move it into Enabled.
- 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:
- Confirm the pack loads correctly (the testing steps above).
- Main menu β Workshop β Publish Resource Packs.
- Pick your pack from the list of loaded packs and choose Publish.
- 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
.zipor folder must exposepack.jsonandContent/at its root, notMyPack/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"breakspack.jsonand 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.