Your cart is empty
Looks like the spiders padded through here. Pick a plugin and it will show up here. Continue shoppingShrink your pack losslessly so players download it faster when they join your server.
Working…
A smaller pack, pixel for pixel
Lossless: every texture keeps its exact pixels.
The Resource Pack Optimizer shrinks a Minecraft Java resource pack losslessly in your browser: PNGs recompressed, JSON minified, junk files removed. Smaller packs download faster when players join.
When a player joins, their game downloads the server's resource pack before it can be used. A large pack on a slow connection means a long loading screen, and players who give up don't come back. Minecraft also refuses server packs larger than 250 MiB. Most of a typical pack is PNG textures saved by an image editor with default settings, plus pretty-printed JSON. Both can shrink a lot with no visible difference.
| Files | What happens | Safe because |
|---|---|---|
.png |
Metadata chunks are removed and the image data is recompressed with oxipng. | Pixels are bit-for-bit identical, and transparent pixels keep their colour. Bigger results are thrown away. |
.json, .png.mcmeta, .jem, .jpm
|
Whitespace is removed. | The parsed values are identical. Invalid files and numbers too long to rewrite exactly are left untouched. |
pack.mcmeta |
Copied unchanged. | It's the file that identifies the pack. |
.ogg, shaders, text files |
Copied unchanged. | Re-encoding sound would be lossy. |
| Junk and source files | Removed and listed. | Minecraft never loads them. |
The game uses resource-pack-sha1 to check the file it downloaded. Most zip tools write the current time into the archive, so zipping the same folder twice gives a different hash. This optimizer sorts the files and writes a fixed timestamp, so the same pack always produces the same zip and the same SHA-1. Use the Resource Pack Validator to catch missing textures before you publish.
Merge plugin packs first with the Resource Pack Merger, then optimize the merged zip. Optimize again whenever a plugin regenerates its pack.
Yes. PNGs are recompressed with oxipng without changing a single pixel, including the colour of fully transparent pixels, and JSON is only rewritten without whitespace. Every value stays the same. If a recompressed PNG isn't smaller, the original file is kept.
No. The optimizer runs in your browser using WebAssembly. Your pack never leaves your computer, so it also works for paid or private packs.
It depends on how the pack was exported. In our tests, two popular Modrinth packs got 16% and 19% smaller, with PNG textures shrinking by roughly 35–60%. A pack that was already optimized may only lose a few kilobytes.
No. pack.mcmeta is copied byte for byte. If your zip has everything inside an extra folder, the optimized zip moves pack.mcmeta to the top level, which is where Minecraft needs it.
Only files Minecraft never reads: __MACOSX and ._ files, .DS_Store, Thumbs.db, editor sources like .psd, .xcf, .kra, .aseprite, .bbmodel and .blend, backups such as .bak and .tmp, and .git or IDE folders. Each category can be switched off, and every removed file is listed.
The optimizer sorts files and writes a fixed timestamp, so the same input always produces the exact same zip. Your resource-pack-sha1 only changes when the pack's content changes.
OptiFine and other Java packs work, including CEM .jem and .jpm files, which are minified like JSON. Bedrock .mcpack files are not supported.
PackSquash is a command-line program with more aggressive options, such as lossy audio and image compression. This tool needs no install and only makes changes that can't affect how the pack looks or sounds.
Your cart is empty
Looks like the spiders padded through here. Pick a plugin and it will show up here. Continue shopping