{
  "checked": "2026-10-05",
  "source": "Modrinth API v2, GET /v2/projects (fields: environment, client_side, server_side)",
  "mods": [
    {
      "anchor": "3d-skin-layers",
      "slug": "3dskinlayers",
      "id": "zV5r3pPn",
      "name": "3D Skin Layers",
      "aliases": [
        "skinlayers3d"
      ],
      "client_side": "required",
      "server_side": "unsupported",
      "environment": [
        "client_only"
      ],
      "note": "Renders the outer layer of player skins in 3D. Its page says it doesn't need to be installed on servers."
    },
    {
      "anchor": "appleskin",
      "slug": "appleskin",
      "id": "EsAfCjCV",
      "name": "AppleSkin",
      "aliases": [],
      "client_side": "optional",
      "server_side": "optional",
      "environment": [
        "client_or_server_prefers_both"
      ],
      "note": "Food and saturation on the HUD. It has to be on the server too for accurate saturation and exhaustion values."
    },
    {
      "anchor": "architectury-api",
      "slug": "architectury-api",
      "id": "lhGA9TYQ",
      "name": "Architectury API",
      "aliases": [
        "architectury"
      ],
      "client_side": "required",
      "server_side": "required",
      "environment": [
        "client_and_server"
      ],
      "note": "Library for mods that ship on several loaders. Keep it wherever a mod that needs it is installed."
    },
    {
      "anchor": "bluemap",
      "slug": "bluemap",
      "id": "swbUV1cr",
      "name": "BlueMap",
      "aliases": [],
      "client_side": "unsupported",
      "server_side": "required",
      "environment": [
        "dedicated_server_only",
        "server_only"
      ],
      "note": "3D map of your world in a web browser. Set `accept-download: true` in `config/bluemap/core.conf` before it will render (read what that agrees to first).",
      "ports": "TCP 8100 by default for the web map: `port` in `config/bluemap/webserver.conf`. It needs a second open port, so ask your host for one."
    },
    {
      "anchor": "c2me",
      "slug": "c2me-fabric",
      "id": "VSNURh3q",
      "name": "C2ME (Concurrent Chunk Management Engine)",
      "aliases": [
        "c2me"
      ],
      "client_side": "optional",
      "server_side": "required",
      "environment": [
        "server_only_client_optional"
      ],
      "note": "Improves chunk performance on Fabric."
    },
    {
      "anchor": "carpet",
      "slug": "carpet",
      "id": "TQTTVgYE",
      "name": "Carpet",
      "aliases": [
        "fabric-carpet"
      ],
      "client_side": "optional",
      "server_side": "required",
      "environment": [
        "server_only_client_optional"
      ],
      "note": "Fabric server tools, such as live TPS and mob caps with `/log`. Players can install it too, but don't have to."
    },
    {
      "anchor": "chunky",
      "slug": "chunky",
      "id": "fALzjamp",
      "name": "Chunky",
      "aliases": [],
      "client_side": "optional",
      "server_side": "optional",
      "environment": [
        "client_or_server_prefers_both"
      ],
      "note": "Pre-generates chunks. From the server console: `chunky radius 1000`, then `chunky start`. In game, you need to be an operator."
    },
    {
      "anchor": "cloth-config",
      "slug": "cloth-config",
      "id": "9s6osm5g",
      "name": "Cloth Config API",
      "aliases": [],
      "client_side": "optional",
      "server_side": "optional",
      "environment": [
        "client_or_server_prefers_both"
      ],
      "note": "Config screen library. Keep it if any mod on the server lists it as a dependency."
    },
    {
      "anchor": "cobblemon",
      "slug": "cobblemon",
      "id": "MdwFAVRL",
      "name": "Cobblemon",
      "aliases": [],
      "client_side": "required",
      "server_side": "required",
      "environment": [
        "client_and_server"
      ],
      "note": "Pokémon to catch, battle and trade. Current versions require Fabric API on Fabric and Kotlin for Forge on NeoForge.",
      "links": [
        {
          "text": "Cobblemon (Fabric)",
          "href": "/modpacks/cobblemon-fabric/"
        },
        {
          "text": "Cobblemon (NeoForge)",
          "href": "/modpacks/cobblemon-neoforge/"
        }
      ]
    },
    {
      "anchor": "continuity",
      "slug": "continuity",
      "id": "1IjD5062",
      "name": "Continuity",
      "aliases": [],
      "client_side": "required",
      "server_side": "unsupported",
      "environment": [
        "client_only"
      ],
      "note": "Connected textures from resource packs."
    },
    {
      "anchor": "create",
      "slug": "create",
      "id": "LNytGWDc",
      "name": "Create",
      "aliases": [],
      "client_side": "optional",
      "server_side": "required",
      "environment": [
        "server_only_client_optional",
        "client_and_server"
      ],
      "note": "Machines, contraptions and new blocks. On Modrinth, versions before 6.0 are labeled \"optional on client\" and 6.0 onward \"required on both\".",
      "links": [
        {
          "text": "Create: Above and Beyond",
          "href": "/modpacks/create-above-and-beyond/"
        },
        {
          "text": "Create: Arcane Engineering",
          "href": "/modpacks/create-arcane-engineering/"
        }
      ]
    },
    {
      "anchor": "distant-horizons",
      "slug": "distanthorizons",
      "id": "uCdwusMi",
      "name": "Distant Horizons",
      "aliases": [],
      "client_side": "optional",
      "server_side": "optional",
      "environment": [
        "client_or_server_prefers_both"
      ],
      "note": "Renders far terrain as LODs. Works client-only. With it on the server too, the server sends LODs to players who have it and have distant generation turned on."
    },
    {
      "anchor": "dynamic-fps",
      "slug": "dynamic-fps",
      "id": "LQ3K71Q1",
      "name": "Dynamic FPS",
      "aliases": [],
      "client_side": "required",
      "server_side": "unsupported",
      "environment": [
        "client_only"
      ],
      "note": "Lowers resource use while the game is in the background, idle or on battery."
    },
    {
      "anchor": "embeddium",
      "slug": "embeddium",
      "id": "sk9rgfiA",
      "name": "Embeddium",
      "aliases": [],
      "client_side": "required",
      "server_side": "unsupported",
      "environment": [
        "client_only"
      ],
      "note": "Client performance mod for NeoForge and Forge."
    },
    {
      "anchor": "emi",
      "slug": "emi",
      "id": "fRiHVvU7",
      "name": "EMI",
      "aliases": [],
      "client_side": "required",
      "server_side": "optional",
      "environment": [
        "client_only_server_optional"
      ],
      "note": "Item and recipe viewer. Needed on the client; the server copy is optional."
    },
    {
      "anchor": "entity-culling",
      "slug": "entityculling",
      "id": "NNAgCjsB",
      "name": "Entity Culling",
      "aliases": [],
      "client_side": "required",
      "server_side": "unsupported",
      "environment": [
        "client_only"
      ],
      "note": "Skips rendering entities and block entities you can't see. Its page says it does not need to be on the server."
    },
    {
      "anchor": "entity-model-features",
      "slug": "entity-model-features",
      "id": "4I1XuqiY",
      "name": "Entity Model Features (EMF)",
      "aliases": [],
      "client_side": "required",
      "server_side": "unsupported",
      "environment": [
        "client_only"
      ],
      "note": "Custom entity models from resource packs, in the OptiFine format."
    },
    {
      "anchor": "entity-texture-features",
      "slug": "entitytexturefeatures",
      "id": "BVzZfTc1",
      "name": "Entity Texture Features (ETF)",
      "aliases": [
        "entity-texture-features"
      ],
      "client_side": "required",
      "server_side": "unsupported",
      "environment": [
        "client_only",
        "unknown"
      ],
      "note": "Emissive, random and custom entity textures from resource packs."
    },
    {
      "anchor": "essential",
      "slug": "essential",
      "id": "k2ZPuTBm",
      "name": "Essential",
      "aliases": [
        "essential-mod"
      ],
      "client_side": "required",
      "server_side": "unsupported",
      "environment": [
        "client_only"
      ],
      "note": "Friends, chat and free world hosting from inside the game."
    },
    {
      "anchor": "fabric-api",
      "slug": "fabric-api",
      "id": "P7dR8mSH",
      "name": "Fabric API",
      "aliases": [],
      "client_side": "optional",
      "server_side": "optional",
      "environment": [
        "client_or_server_prefers_both"
      ],
      "note": "Library that many Fabric mods depend on. If a mod on the server needs it, the server won't start without it."
    },
    {
      "anchor": "farmers-delight",
      "slug": "farmers-delight",
      "id": "R2OftAxM",
      "name": "Farmer's Delight",
      "aliases": [],
      "client_side": "required",
      "server_side": "required",
      "environment": [
        "client_and_server"
      ],
      "note": "New crops, cooking and food."
    },
    {
      "anchor": "ferritecore",
      "slug": "ferrite-core",
      "id": "uXXizFIs",
      "name": "FerriteCore",
      "aliases": [],
      "client_side": "optional",
      "server_side": "optional",
      "environment": [
        "client_or_server"
      ],
      "note": "Cuts memory use. Its page recommends installing it on both sides, because some of its bigger savings are on the server."
    },
    {
      "anchor": "geckolib",
      "slug": "geckolib",
      "id": "8BmcQJ2H",
      "name": "GeckoLib",
      "aliases": [],
      "client_side": "required",
      "server_side": "optional",
      "environment": [
        "client_only_server_optional"
      ],
      "note": "Animation library for entities, blocks, items and armor. The server copy is marked optional, but a server mod that depends on it won't load without it."
    },
    {
      "anchor": "immediatelyfast",
      "slug": "immediatelyfast",
      "id": "5ZwdcRci",
      "name": "ImmediatelyFast",
      "aliases": [],
      "client_side": "required",
      "server_side": "unsupported",
      "environment": [
        "client_only"
      ],
      "note": "Speeds up immediate-mode rendering."
    },
    {
      "anchor": "iris",
      "slug": "iris",
      "id": "YL57xq9U",
      "name": "Iris Shaders",
      "aliases": [],
      "client_side": "required",
      "server_side": "unsupported",
      "environment": [
        "client_only"
      ],
      "note": "Shader pack loader that works with existing OptiFine shader packs."
    },
    {
      "anchor": "jade",
      "slug": "jade",
      "id": "nvQzSEkH",
      "name": "Jade",
      "aliases": [],
      "client_side": "optional",
      "server_side": "optional",
      "environment": [
        "client_or_server_prefers_both"
      ],
      "note": "Shows what you're looking at. Works client-only, but some details, like container contents, brewing stand fuel and bees in a hive, need Jade on the server."
    },
    {
      "anchor": "journeymap",
      "slug": "journeymap",
      "id": "lfHFW1mp",
      "name": "JourneyMap",
      "aliases": [],
      "client_side": "optional",
      "server_side": "optional",
      "environment": [
        "client_or_server_prefers_both"
      ],
      "note": "Real-time map. The server copy only controls JourneyMap features; the mapping itself happens on the client."
    },
    {
      "anchor": "jei",
      "slug": "jei",
      "id": "u6dRKJwZ",
      "name": "Just Enough Items (JEI)",
      "aliases": [
        "justenoughitems"
      ],
      "client_side": "optional",
      "server_side": "optional",
      "environment": [
        "client_or_server_prefers_both"
      ],
      "note": "Item and recipe viewer. On 1.21.1 and older it works client-only with a few features off. From 1.21.2 the server holds the recipes, so install JEI on the server to send them to players."
    },
    {
      "anchor": "lithium",
      "slug": "lithium",
      "id": "gvQqBUqZ",
      "name": "Lithium",
      "aliases": [],
      "client_side": "optional",
      "server_side": "optional",
      "environment": [
        "client_or_server_prefers_both"
      ],
      "note": "Game logic optimizations. Its page says it works on the client or the server and doesn't need to be on both."
    },
    {
      "anchor": "luckperms",
      "slug": "luckperms",
      "id": "Vebnzrzj",
      "name": "LuckPerms",
      "aliases": [],
      "client_side": "unsupported",
      "server_side": "required",
      "environment": [
        "server_only"
      ],
      "note": "Permissions for servers: admins create groups and assign permissions to control what players can use."
    },
    {
      "anchor": "mod-menu",
      "slug": "modmenu",
      "id": "mOgUt4GM",
      "name": "Mod Menu",
      "aliases": [],
      "client_side": "required",
      "server_side": "unsupported",
      "environment": [
        "client_only"
      ],
      "note": "Adds a screen listing your installed mods. Modrinth uses it as its example of a client-side only mod."
    },
    {
      "anchor": "modernfix",
      "slug": "modernfix",
      "id": "nmDcB62a",
      "name": "ModernFix",
      "aliases": [],
      "client_side": "optional",
      "server_side": "optional",
      "environment": [
        "client_or_server_prefers_both"
      ],
      "note": "Performance, memory and bug fixes."
    },
    {
      "anchor": "mouse-tweaks",
      "slug": "mouse-tweaks",
      "id": "aC3cM3Vq",
      "name": "Mouse Tweaks",
      "aliases": [],
      "client_side": "required",
      "server_side": "unsupported",
      "environment": [
        "client_only"
      ],
      "note": "Extra mouse-button controls for moving items in inventories. Its page says there is no server-side component."
    },
    {
      "anchor": "no-chat-reports",
      "slug": "no-chat-reports",
      "id": "qQyHxfxd",
      "name": "No Chat Reports",
      "aliases": [],
      "client_side": "optional",
      "server_side": "optional",
      "environment": [
        "client_or_server_prefers_both"
      ],
      "note": "Strips chat message signatures. Works on the client, the server or both, and does something different in each case; its page explains each setup."
    },
    {
      "anchor": "noisium",
      "slug": "noisium",
      "id": "KuNKN7d2",
      "name": "Noisium",
      "aliases": [],
      "client_side": "unsupported",
      "server_side": "required",
      "environment": [
        "server_only"
      ],
      "note": "Faster world generation. Its FAQ says only the server needs it, and that it also works in singleplayer."
    },
    {
      "anchor": "oculus",
      "slug": "oculus",
      "id": "GchcoXML",
      "name": "Oculus",
      "aliases": [],
      "client_side": "required",
      "server_side": "unsupported",
      "environment": [
        "client_only"
      ],
      "note": "Unofficial fork of Iris for Forge and NeoForge, for shader packs."
    },
    {
      "anchor": "physics-mod",
      "slug": "physicsmod",
      "id": "Xy8aRQKS",
      "name": "Physics Mod",
      "aliases": [
        "physics-mod"
      ],
      "client_side": "required",
      "server_side": "unsupported",
      "environment": [
        "client_only"
      ],
      "note": "Ragdolls, crumbling blocks and item physics."
    },
    {
      "anchor": "replay-mod",
      "slug": "replaymod",
      "id": "Nv2fQJo5",
      "name": "ReplayMod",
      "aliases": [],
      "client_side": "required",
      "server_side": "unsupported",
      "environment": [
        "client_only"
      ],
      "note": "Records your gameplay so you can replay it and share it."
    },
    {
      "anchor": "rei",
      "slug": "rei",
      "id": "nfn13YXA",
      "name": "Roughly Enough Items (REI)",
      "aliases": [
        "roughlyenoughitems"
      ],
      "client_side": "optional",
      "server_side": "optional",
      "environment": [
        "client_or_server_prefers_both"
      ],
      "note": "Item and recipe viewer, an alternative to JEI. Its page says that to serve both JEI and REI players from one server, install JEI there together with REI Server Component."
    },
    {
      "anchor": "servercore",
      "slug": "servercore",
      "id": "4WWQxlQP",
      "name": "ServerCore",
      "aliases": [],
      "client_side": "unsupported",
      "server_side": "required",
      "environment": [
        "server_only"
      ],
      "note": "Server optimizations."
    },
    {
      "anchor": "simple-voice-chat",
      "slug": "simple-voice-chat",
      "id": "9eGKb6K1",
      "name": "Simple Voice Chat",
      "aliases": [
        "voicechat"
      ],
      "client_side": "optional",
      "server_side": "optional",
      "environment": [
        "client_or_server_prefers_both"
      ],
      "note": "Proximity voice chat. Players need it installed too, or they can join but can't use voice chat.",
      "ports": "UDP 24454 by default: `port` in `config/voicechat/voicechat-server.properties`. Voice uses its own port, separate from the game port, so your host has to open it. Don't set it to -1 (the game's port): the mod's docs warn that can crash the server.",
      "dsn": {
        "verdict": "both",
        "why": "the mod's own install guide says to always install it on both the client and the server.",
        "source": "https://modrepo.de/minecraft/voicechat/wiki/installation"
      }
    },
    {
      "anchor": "sinytra-connector",
      "slug": "connector",
      "id": "u58R1TMW",
      "name": "Sinytra Connector",
      "aliases": [
        "sinytra-connector"
      ],
      "client_side": "optional",
      "server_side": "optional",
      "environment": [
        "client_or_server"
      ],
      "note": "Runs Fabric mods on NeoForge 1.21.1 and 26.1.2 and on Forge 1.20.1. It requires Forgified Fabric API, and its 26.1.2 builds also require Launchpad. If your server loads Fabric mods through it, the server needs it too."
    },
    {
      "anchor": "sodium",
      "slug": "sodium",
      "id": "AANobbMI",
      "name": "Sodium",
      "aliases": [],
      "client_side": "required",
      "server_side": "unsupported",
      "environment": [
        "client_only"
      ],
      "note": "Rendering engine replacement that raises frame rates and cuts stutter."
    },
    {
      "anchor": "sodium-extra",
      "slug": "sodium-extra",
      "id": "PtjYWJkn",
      "name": "Sodium Extra",
      "aliases": [],
      "client_side": "required",
      "server_side": "unsupported",
      "environment": [
        "client_only"
      ],
      "note": "Sodium add-on with extra video options."
    },
    {
      "anchor": "sophisticated-backpacks",
      "slug": "sophisticated-backpacks",
      "id": "TyCTlI4b",
      "name": "Sophisticated Backpacks",
      "aliases": [],
      "client_side": "required",
      "server_side": "required",
      "environment": [
        "client_and_server"
      ],
      "note": "Upgradable backpacks. It requires Sophisticated Core, which also goes on both sides."
    },
    {
      "anchor": "spark",
      "slug": "spark",
      "id": "l6YH9Als",
      "name": "spark",
      "aliases": [],
      "client_side": "optional",
      "server_side": "optional",
      "environment": [
        "client_or_server"
      ],
      "note": "Performance profiler for clients, servers and proxies. On a server, run `/spark profiler start`, then `/spark profiler stop` to see the results."
    },
    {
      "anchor": "terralith",
      "slug": "terralith",
      "id": "8oi3bsk5",
      "name": "Terralith",
      "aliases": [],
      "client_side": "optional",
      "server_side": "required",
      "environment": [
        "server_only"
      ],
      "note": "Almost 100 new biomes built from vanilla blocks. Marked server-side only, so players without it can still join. From version 2.6.0 the mod needs Lithostitched, which goes on the server too."
    },
    {
      "anchor": "waystones",
      "slug": "waystones",
      "id": "LOpKHB2A",
      "name": "Waystones",
      "aliases": [],
      "client_side": "required",
      "server_side": "required",
      "environment": [
        "client_and_server"
      ],
      "note": "Waystone blocks you teleport between. It requires the Balm library, and its 26.3 versions also require Shogi, so keep those on the server too."
    },
    {
      "anchor": "xaeros-minimap",
      "slug": "xaeros-minimap",
      "id": "1bokaNcj",
      "name": "Xaero's Minimap",
      "aliases": [
        "xaerominimap"
      ],
      "client_side": "required",
      "server_side": "optional",
      "environment": [
        "client_only_server_optional"
      ],
      "note": "Minimap with waypoints. On the server it adds server-side settings and more reliable detection of separate worlds."
    },
    {
      "anchor": "xaeros-world-map",
      "slug": "xaeros-world-map",
      "id": "NcUtCpym",
      "name": "Xaero's World Map",
      "aliases": [
        "xaeroworldmap"
      ],
      "client_side": "required",
      "server_side": "optional",
      "environment": [
        "client_only_server_optional"
      ],
      "note": "Full-screen world map. Its page calls it mostly client-sided; on the server it adds features like world identification."
    }
  ]
}
