nineMinecraft is a joke site.
nineMinecraft is in no way affiliated with Modrinth or 9minecraft. (And frankly, who wants to be affiliated with the latter?)
Inventory Sorting

Inventory Sorting

Mod

Quick, simple, and lightweight inventory sorting

Server StorageUtility

2.77M downloads
1,060 followers
Filter versions...
Filter channels...

NEW FEATURES

First of all, apologies for the late release, life got in the way. However, there are some exciting new features in this release that you need to know of!

Client-Side only support

Inventory Sorter no longer requires server side support! I know a lot of you have been waiting for this! This is still a solution that is much more brittle on the system so please use the server side whenever you can, it will make for a much better experience for the underlying systems.

In client-side only mode, we're simulating a bunch of clicks that you would do to sort at the same time, basically blasting Minecraft with a burst of things it needs to do. This is how all client-side sorters work and it's really not ideal. On the server side, it's much more data driven and way less taxing on Mincraft itself.

Sorting rules!

Sorting rules let you tell Inventory Sorter that some items deserve special treatment, without having to replace the normal sorting mode.

For example, you can put all shulker boxes first, send bundles to the end, keep named tools in place, or move anything with container-like item data away from the middle of your sorted inventory.

Rules live in the settings screen under Sort Priority Rules. Each rule has two parts:

  • a match expression, which decides which stacks the rule applies to
  • a position, which decides what happens to those matching stacks

The available positions are:

  • First: matching stacks sort before everything else
  • Default: matching stacks use the normal sort order
  • Last: matching stacks sort after everything else
  • Ignore: matching stacks are not sorted at all, and stay in their current slots

Ignore is the odd one out, and it is intentionally stronger than the others. If an item matches an ignore rule, it is removed from the sorting process before the first/default/last rules are considered. This is useful for "do not touch this" cases, such as tools, a named kit, or a special item you always keep in a specific chest slot.

Rule order matters

Rules are checked in the order they appear in the list.

If two rules use different positions, the position decides the broad placement. First items go first, normal/default items stay in the middle, and Last items go last.

If two rules use the same position, the rule higher in the list wins the tie. For example:

[
  { "match": "#minecraft:shulker_boxes", "position": "first" },
  { "match": "#minecraft:bundles", "position": "first" }
]

With this setup, shulker boxes come before bundles because the shulker rule is first. Both groups still sort internally using your selected sort type, such as name, mod, category, or id.

Ignore rules do not work like normal priority ties. If an item matches any ignore rule, it stays in its original slot even if it also matches a first or last rule.

Matching item ids

The simplest rule is an item id:

minecraft:bundle

This matches only bundles. For vanilla Minecraft items, the minecraft: part can be left out:

bundle

For modded items, use the full id:

some_mod:example_item

Matching item tags

Tags match whole groups of items:

#minecraft:shulker_boxes

This matches every shulker box color, not just one specific shulker box item.

Useful vanilla examples include:

#minecraft:shulker_boxes
#minecraft:bundles

Tags are especially useful for modpacks because datapacks and mods can add more items to a tag without needing to rewrite every sorting rule.

Matching item data components

Component rules match items that carry a specific kind of Minecraft item data:

@minecraft:container

This can be useful for broad categories of items that store something internally. For example, an item with container data can be sent to the end so filled storage-like items do not mix into the middle of ordinary blocks and materials.

Another useful example is:

@minecraft:bundle_contents

That matches bundle stacks that have bundle contents data.

Matching names

Name rules match the display name shown for the item:

name:"Meza's *"

The * means "any text here", so this matches names like:

Meza's Pickaxe
Meza's Fortune Pickaxe
Meza's Axe

Name matching is case-insensitive, so MEZA'S Axe and Meza's Axe both match the same rule.

Name patterns must match the whole displayed name. This matters:

name:"Meza's"

That only matches an item whose whole name is exactly Meza's. It does not match Meza's Pickaxe.

Use * when you want a prefix, suffix, or contains-style match:

name:"Meza's *"
name:"*Pickaxe"
name:"*meza's*"

Name rules can match custom item names and vanilla display names. On multiplayer servers, the server's language is what matters for vanilla translated names, so name rules based on translated vanilla names are best treated as a convenience rather than the most portable option. Item ids, tags, and components are more reliable for shared servers and modpacks.

Combining rules with logic

Match expressions can be combined:

name:"Meza's *" & !minecraft:diamond_pickaxe

This means "items named Meza's ..., but not diamond pickaxes".

Supported operators are:

  • ! for not
  • & for and
  • | for or
  • parentheses for grouping

For example:

#minecraft:shulker_boxes | #minecraft:bundles

matches shulker boxes or bundles.

@minecraft:container & !#minecraft:shulker_boxes

matches items with container data, except shulker boxes.

Invalid rules

Invalid rules are ignored while sorting. They do not stop the whole inventory from sorting.

The config screen and commands try to report syntax problems so you can fix them, but if an invalid rule makes it into the config file, Inventory Sorter skips that rule and continues with the rest.

Examples

Put all shulker boxes first:

{ "match": "#minecraft:shulker_boxes", "position": "first" }

Put bundles last:

{ "match": "#minecraft:bundles", "position": "last" }

Keep any item named Vault ... exactly where it already is:

{ "match": "name:\"Vault *\"", "position": "ignore" }

Put your named tools last, except one specific kind of tool:

{ "match": "name:\"Meza's *\" & !minecraft:diamond_pickaxe", "position": "last" }

Put shulker boxes first, then bundles first after them:

[
  { "match": "#minecraft:shulker_boxes", "position": "first" },
  { "match": "#minecraft:bundles", "position": "first" }
]

Swap those two rules if you want bundles before shulker boxes.

Bundle Sorting

Bundle sorting lets Inventory Sorter use bundles during a sort, instead of treating them only as ordinary items.

If a bundle already contains an item, loose stacks of that same item can be moved into the bundle while the inventory is being sorted. For example, a bundle that already contains apples can collect loose apple stacks from the same inventory, as long as Minecraft says there is enough space.

This uses Minecraft's own bundle rules. Inventory Sorter does not try to invent a separate capacity system, so bundle fullness, nested bundle weight, item restrictions, and component matching follow vanilla behavior.

Existing contents decide what goes in

Bundles only pull in items they already directly contain.

An empty bundle does not become a general "dump everything into this" target during sorting. This keeps bundle sorting predictable, because the contents of the bundle tell Inventory Sorter what that bundle is for.

For example:

  • a bundle containing apples can receive more apples
  • a bundle containing string can receive more string
  • an empty bundle stays empty during bundle sorting
  • a bundle containing apples does not receive sticks, redstone, or unrelated items

The match is exact. If a bundle contains a named apple, it matches the same named apple, not every apple. The same applies to other Minecraft item data such as damage, enchantments, custom names, and components.

Small stacks go first

Bundles work best with smaller stacks, so Inventory Sorter tries the lowest-count matching stacks first.

If there are several loose stacks that could go into a bundle, the small ones get the first chance. If one bundle fills up, Inventory Sorter can continue into the next matching bundle if there is one.

Minecraft still decides how much actually fits. If only part of a stack fits, the remainder stays in the inventory and continues through the normal sort.

Nested bundles are not expanded

Only the direct contents of a bundle are considered.

If a bundle contains another bundle, and that inner bundle contains string, the outer bundle is not treated as a string bundle. That keeps the behavior understandable and avoids Inventory Sorter trying to reason through every nested storage item.

Non-empty bundles are also not moved into other bundles as part of this feature. If you have a bundle that already contains items, Inventory Sorter treats that bundle as its own meaningful item rather than trying to pack it away inside another bundle.

Player inventory and hotbar bundles

When sorting the player inventory, bundles on the hotbar can also be used as bundle targets. This is controlled by the Use Hotbar Bundles When Sorting Player Inventory setting.

This only applies to player inventory sorting. Sorting a chest or another container will not pull items from that container into bundles sitting on your hotbar.

Sorting rules still apply

Bundle sorting happens as part of the normal sort, so sorting rules still matter.

Ignore rules win. If a loose item matches an ignore rule, it is not moved into a bundle. This lets you keep "do not touch this" items exactly where they are, even if a matching bundle exists.

First, Default, and Last rules still affect the final top-level inventory order after bundle insertion has been planned. For example, you can still put bundles first or last with a sorting rule while also allowing matching loose items to be packed into them.

Client-side only support

Bundle sorting works with server-side support and in client-side only mode.

With server-side support, Inventory Sorter can apply the result directly on the server. In client-side only mode, it performs the same kind of vanilla clicks a player would use manually: pick up the loose stack, click the bundle, let Minecraft insert what fits, then continue sorting.

The server-side path is still the better path when available, but bundle sorting does not require the server to have the mod installed.


Changelog

3.0.0-beta.1 (2026-05-06)

âš  BREAKING CHANGES

  • 26.1 support. Dropping active development for anything before 26.1

Features

  • added display name based sorting rules (f1ae5f8)
  • adding sorting ignore rule closes #232 (6607345)
  • adding sorting rules closes #190 (25eede3)
  • client side sorting fallback (185f031)
  • sorting can now pack into bundles that contain the same item (52f2ba5)

Bug Fixes

  • 26.1 support. Dropping active development for anything before 26.1 (38377f0)
  • Adding compatibility hiding for CC:Tweaks Turtles closes #99 (277f2c6)
  • l10n: additional Italian translations (#245) (10d07d9)
  • l10n: additional Korean translations (#244) (452f4f4)
  • l10n: additional translations (95bf8ba)
  • l10n: additional translations (f2ff2ca)

Changelog

2.1.4 (2025-12-22)

Bug Fixes

  • l10n: additional translations (3b162f5)
  • l10n: additional translations (c9076ab)

Changelog

2.1.3 (2025-12-13)

Bug Fixes

  • fixed the cloth config issues (53a3e04)

Changelog

2.1.2 (2025-12-12)

Bug Fixes

  • added 1.21.11 support (ff089f2)
  • removed e2e classes from the final build (18e7971)

Changelog

2.1.1 (2025-12-04)

Bug Fixes

  • l10n: additional translations (c607ab1)

External resources


Project members

kyrptonaught

Owner

meza

Maintainer


Technical information

License
MIT
Client side
optional
Server side
required
Project ID