The short answer
For a vanilla or Paper server, budget roughly 1 GB for the server itself plus a little over 100 MB per concurrent player, then round up. That puts a group of friends at 2 GB, a small public server at 4 GB, and a busy plugin-heavy community at 6 GB or more.
Modded servers work differently. A modpack loads thousands of extra items, blocks and world-generation rules into memory before a single player joins, so the baseline is far higher and player count matters comparatively less.
- 2 GB, a private survival world for up to about 10 players
- 4 GB, a small public Paper server with a normal plugin set
- 6 to 8 GB, a busy community server, or a mid-sized modpack
- 8 to 12 GB and up, large modpacks and networks behind a proxy
What actually consumes the memory
Three things dominate. First, loaded chunks: every area a player visits stays in memory for a while, so exploration is what usually spikes usage rather than player count alone. Second, entities, which means mobs, dropped items and anything in a farm; a large automatic farm can cost more memory than several extra players. Third, plugins and mods, which hold their own data structures for as long as the server is running.
This is why two servers with the same player count can have very different needs. Ten players standing in a spawn town use a fraction of what ten players exploring in different directions do.
Why more RAM is not always the fix
Minecraft runs its main game loop on a single thread. Once the server has enough memory to avoid constant garbage collection, adding more does nothing for tick rate, because the bottleneck moves to how fast one CPU core can process the world.
If your server has free memory and still lags, look at CPU-bound causes instead: a plugin doing heavy work on the main thread, a redstone or mob farm running flat out, or a view distance set higher than the hardware can sustain. Dropping view distance from 12 to 8 often does more for tick rate than doubling RAM.
Signs you have outgrown your plan
The clearest symptom is periodic freezing: the server pauses for a second, then catches up. That is garbage collection running because memory is nearly full. In the console it shows up as "Can't keep up! Is the server overloaded?" messages, and on the StormNodes panel the memory graph will be sitting near the top of its range rather than moving up and down.
If that describes your server, moving to a larger plan takes a few minutes and your world moves with it. It is worth confirming the cause first though, because the same stutter can come from a single misbehaving plugin, and upgrading will not fix that.
Picking a plan without over-buying
Start with the smallest plan that matches the server you are running today, not the one you hope to run next year. Minecraft communities grow unevenly, and it is far easier to move up once you can see real usage in the panel than to guess in advance and pay for headroom you never touch.