[{"data":1,"prerenderedAt":491},["ShallowReactive",2],{"\u002Fguides\u002Fminecraft-server-lag-tps-mspt-cant-keep-up\u002F":3,"guides:en":419,"published-guide-paths":479},{"id":4,"title":5,"author":6,"body":7,"category":381,"date":382,"description":383,"excerpt":384,"extension":385,"faq":386,"featured":396,"featuredOrder":384,"localeGroup":397,"meta":398,"navigation":399,"path":400,"published":399,"related":401,"seo":405,"slug":406,"sources":407,"stem":417,"updated":382,"__hash__":418},"guides\u002Fguides\u002F10.minecraft-server-lag-tps-mspt-cant-keep-up.md","Minecraft Server Lag Explained: TPS, MSPT, and 'Can’t Keep Up'","setupmc.com Team",{"type":8,"value":9,"toc":356},"minimark",[10,15,19,38,41,57,65,69,74,81,85,92,95,103,107,110,122,125,135,144,148,152,155,159,162,166,177,181,184,188,191,195,198,212,215,219,236,243,247,314,318,322,325,329,332,336],[11,12,14],"h2",{"id":13},"start-with-the-right-mental-model","Start with the right mental model",[16,17,18],"p",{},"When admins say “the server lags”, they often mix several problems together:",[20,21,22,26,29,32,35],"ul",{},[23,24,25],"li",{},"low TPS",[23,27,28],{},"high MSPT",[23,30,31],{},"chunk generation spikes",[23,33,34],{},"plugin slowdowns",[23,36,37],{},"network problems that only feel like lag",[16,39,40],{},"The useful part is this:",[20,42,43,50],{},[23,44,45,46],{},"the server tries to run ",[47,48,49],"strong",{},"20 ticks per second",[23,51,52,53,56],{},"that means it has ",[47,54,55],{},"50 ms per tick"," on average",[16,58,59,60,64],{},"If your average tick time exceeds that budget, TPS begins to fall and the server may log messages such as ",[61,62,63],"code",{},"Can't keep up!",".",[11,66,68],{"id":67},"what-tps-and-mspt-actually-tell-you","What TPS and MSPT actually tell you",[70,71,73],"h3",{"id":72},"tps","TPS",[16,75,76,77,80],{},"TPS means ",[47,78,79],{},"ticks per second",".\nAt the target rate, the server reaches 20 TPS.",[70,82,84],{"id":83},"mspt","MSPT",[16,86,87,88,91],{},"MSPT means ",[47,89,90],{},"milliseconds per tick",".\nThis is often the more actionable number because it shows how much time the server needs to process game logic.",[16,93,94],{},"As a practical rule:",[20,96,97,100],{},[23,98,99],{},"around or below 50 ms average tick time is where the server can still sustain 20 TPS",[23,101,102],{},"above that, the server begins to fall behind",[11,104,106],{"id":105},"first-checks-before-you-change-any-settings","First checks before you change any settings",[16,108,109],{},"Do these in order:",[111,112,113,116,119],"ol",{},[23,114,115],{},"confirm that the issue is active right now",[23,117,118],{},"measure instead of guessing",[23,120,121],{},"change one thing at a time",[16,123,124],{},"On Paper 1.21 and newer, start with Spark because it is bundled and is the preferred profiler:",[126,127,133],"pre",{"className":128,"code":130,"language":131,"meta":132},[129],"language-text","\u002Fspark tps\n\u002Fspark profiler start --timeout 600\n","text","",[61,134,130],{"__ignoreMap":132},[16,136,137,138,143],{},"If you are not on Paper yet, read ",[139,140,142],"a",{"href":141},"\u002Fguides\u002Fpaper-vs-vanilla-vs-fabric-vs-forge\u002F","Paper vs Vanilla vs Fabric vs Forge"," before assuming your current server software is the best base for performance work.",[11,145,147],{"id":146},"the-usual-causes-of-lag","The usual causes of lag",[70,149,151],{"id":150},"_1-cpu-bound-ticks","1. CPU-bound ticks",[16,153,154],{},"Minecraft server work is still very sensitive to single-thread performance.\nIf one heavy tick phase takes too long, more RAM will not save you.",[70,156,158],{"id":157},"_2-chunk-generation-and-exploration","2. Chunk generation and exploration",[16,160,161],{},"Fast exploration creates chunk generation work.\nThis often appears as spikes instead of constant low TPS.",[70,163,165],{"id":164},"_3-too-much-simulation","3. Too much simulation",[16,167,168,169,172,173,176],{},"Paper documents ",[61,170,171],{},"simulation-distance"," separately from ",[61,174,175],{},"view-distance",".\nThat matters because entity ticking and active game logic are not the same as what the client can see.",[70,178,180],{"id":179},"_4-plugin-or-mod-behavior","4. Plugin or mod behavior",[16,182,183],{},"A laggy server is often not “Minecraft being Minecraft”.\nIt is often one plugin, one task, or one badly scaled feature.",[70,185,187],{"id":186},"_5-entity-heavy-farms-and-villages","5. Entity-heavy farms and villages",[16,189,190],{},"Large mob farms, dense villager trading halls, and constant hopper activity can dominate tick time.",[11,192,194],{"id":193},"safe-fix-order","Safe fix order",[16,196,197],{},"Do not start with random config packs.\nThe safer order is:",[111,199,200,203,206,209],{},[23,201,202],{},"measure with Spark",[23,204,205],{},"identify whether the issue is persistent or spiky",[23,207,208],{},"reduce the most expensive source first",[23,210,211],{},"only then tune Paper distances",[16,213,214],{},"That is how you avoid cargo-cult fixes.",[11,216,218],{"id":217},"fast-decisions-that-are-usually-safe","Fast decisions that are usually safe",[20,220,221,227,233],{},[23,222,223,224,226],{},"reduce ",[61,225,171],{}," before slashing everything else blindly",[23,228,229,230,232],{},"keep ",[61,231,175],{}," reasonable for your player count and hardware",[23,234,235],{},"test changes during the actual lag scenario, not only on an empty server",[16,237,238,239,64],{},"For concrete values, continue with ",[139,240,242],{"href":241},"\u002Fguides\u002Fpaper-view-distance-vs-simulation-distance\u002F","View Distance vs Simulation Distance: Safe Starting Values for Paper",[11,244,246],{"id":245},"common-mistakes","Common mistakes",[248,249,250,266],"table",{},[251,252,253],"thead",{},[254,255,256,260,263],"tr",{},[257,258,259],"th",{},"Mistake",[257,261,262],{},"Why it fails",[257,264,265],{},"Better move",[267,268,269,281,292,303],"tbody",{},[254,270,271,275,278],{},[272,273,274],"td",{},"Raising RAM first",[272,276,277],{},"CPU or tick problems stay untouched",[272,279,280],{},"Measure MSPT and profile first",[254,282,283,286,289],{},[272,284,285],{},"Tuning configs without active lag",[272,287,288],{},"You optimize the wrong moment",[272,290,291],{},"Capture data while the problem is happening",[254,293,294,297,300],{},[272,295,296],{},"Changing five settings at once",[272,298,299],{},"You lose the causal signal",[272,301,302],{},"Make one meaningful change at a time",[254,304,305,308,311],{},[272,306,307],{},"Ignoring server software choice",[272,309,310],{},"Vanilla gives you fewer diagnostics and fewer performance options",[272,312,313],{},"Consider Paper for operational clarity",[11,315,317],{"id":316},"faq","FAQ",[70,319,321],{"id":320},"is-cant-keep-up-always-a-disaster","Is “Can’t keep up” always a disaster?",[16,323,324],{},"No. A single spike can happen during world generation or startup. The pattern matters more than one isolated message.",[70,326,328],{"id":327},"should-i-lower-both-distances-immediately","Should I lower both distances immediately?",[16,330,331],{},"Not automatically. First determine whether chunk visibility, active simulation, entities, or a plugin is actually driving the tick cost.",[11,333,335],{"id":334},"next-steps","Next steps",[20,337,338,345,351],{},[23,339,340,341,64],{},"Capture the real bottleneck with ",[139,342,344],{"href":343},"\u002Fguides\u002Fspark-profiler-paper-docker\u002F","Spark Profiler Step by Step for Paper and Docker",[23,346,347,348,64],{},"Tune safe chunk-related settings in ",[139,349,350],{"href":241},"the view-distance vs simulation-distance guide",[23,352,353,354,64],{},"If you are still on the wrong server software for your goals, read ",[139,355,142],{"href":141},{"title":132,"searchDepth":357,"depth":357,"links":358},2,[359,360,365,366,373,374,375,376,380],{"id":13,"depth":357,"text":14},{"id":67,"depth":357,"text":68,"children":361},[362,364],{"id":72,"depth":363,"text":73},3,{"id":83,"depth":363,"text":84},{"id":105,"depth":357,"text":106},{"id":146,"depth":357,"text":147,"children":367},[368,369,370,371,372],{"id":150,"depth":363,"text":151},{"id":157,"depth":363,"text":158},{"id":164,"depth":363,"text":165},{"id":179,"depth":363,"text":180},{"id":186,"depth":363,"text":187},{"id":193,"depth":357,"text":194},{"id":217,"depth":357,"text":218},{"id":245,"depth":357,"text":246},{"id":316,"depth":357,"text":317,"children":377},[378,379],{"id":320,"depth":363,"text":321},{"id":327,"depth":363,"text":328},{"id":334,"depth":357,"text":335},"performance","2026-03-31","This guide explains what TPS and MSPT actually mean, why “Can’t keep up” appears in the console, and which checks help you separate CPU, chunk, entity, and plugin problems quickly.",null,"md",[387,390,393],{"question":388,"answer":389},"What is the target TPS for a healthy Minecraft server?","The target is 20 TPS. Since the server aims to process 20 ticks per second, the average tick budget is 50 ms.",{"question":391,"answer":392},"What does MSPT measure?","MSPT is milliseconds per tick. It tells you how much time the server needs to process a single tick on average.",{"question":394,"answer":395},"Does more RAM always fix lag?","No. Many real lag problems come from CPU limits, chunk generation, plugins, entities, or overly aggressive simulation settings. RAM only helps when memory pressure is actually the bottleneck.",false,"minecraft-lag-tps-mspt",{},true,"\u002Fguides\u002Fminecraft-server-lag-tps-mspt-cant-keep-up",[402,403,404],"spark-profiler-paper-docker","paper-view-distance-simulation-distance","minecraft-server-software-choice",{"title":5,"description":383},"minecraft-server-lag-tps-mspt-cant-keep-up",[408,411,414],{"title":409,"url":410},"Paper profiling docs","https:\u002F\u002Fdocs.papermc.io\u002Fpaper\u002Fprofiling\u002F",{"title":412,"url":413},"Paper server.properties reference","https:\u002F\u002Fdocs.papermc.io\u002Fpaper\u002Freference\u002Fserver-properties\u002F",{"title":415,"url":416},"Paper software overview","https:\u002F\u002Fpapermc.io\u002Fsoftware\u002Fpaper\u002F","guides\u002F10.minecraft-server-lag-tps-mspt-cant-keep-up","S7qvH_7ponj02sitDarPphIXQ3YGyFoWA-gcByUPmw4",[420,427,433,437,442,443,449,455,461,467,473],{"path":421,"title":422,"description":423,"excerpt":384,"author":6,"date":424,"category":425,"localeGroup":426},"\u002Fguides\u002Fminecraft-crossplay-geyser-floodgate","Set Up Java and Bedrock Crossplay with Geyser and Floodgate","Want Bedrock players on phones or consoles to join your Java server? This guide shows a direct Paper-based Geyser and Floodgate setup without introducing a separate proxy layer.","2026-04-04","networking","geyser-floodgate-crossplay",{"path":428,"title":429,"description":430,"excerpt":384,"author":6,"date":431,"category":432,"localeGroup":404},"\u002Fguides\u002Fpaper-vs-vanilla-vs-fabric-vs-forge","Paper vs Vanilla vs Fabric vs Forge: Which Minecraft Server Software Should You Choose?","Choosing the wrong server software creates avoidable pain later. This guide compares Vanilla, Paper, Fabric, Quilt, Forge, and NeoForge based on plugins, mods, performance, and operational complexity.","2026-04-03","docker-operations",{"path":434,"title":242,"description":435,"excerpt":384,"author":6,"date":436,"category":381,"localeGroup":403},"\u002Fguides\u002Fpaper-view-distance-vs-simulation-distance","Paper exposes view-distance and simulation-distance separately, which makes them one of the safest first levers for performance tuning. This guide explains what each setting changes and which starting values are sensible.","2026-04-02",{"path":438,"title":439,"description":440,"excerpt":384,"author":6,"date":441,"category":381,"localeGroup":402},"\u002Fguides\u002Fspark-profiler-paper-docker","Use Spark Profiler to Find Minecraft Lag in Paper and Docker","Paper bundles Spark starting with 1.21, which makes it the preferred profiler for diagnosing lag. This guide shows how to capture a useful report and how to read the first findings without guesswork.","2026-04-01",{"path":400,"title":5,"description":383,"excerpt":384,"author":6,"date":382,"category":381,"localeGroup":397},{"path":444,"title":445,"description":446,"excerpt":384,"author":6,"date":447,"category":432,"localeGroup":448},"\u002Fguides\u002Ffix-permission-denied-itzg-docker-minecraft-server","Fix Permission Denied in itzg\u002Fminecraft-server with UID\u002FGID and Bind Mounts","Seeing permission errors in \u002Fdata or files that Docker cannot write? This guide explains why itzg\u002Fminecraft-server defaults to UID 1000:GID 1000 and how to fix ownership safely.","2026-03-09","itzg-permission-denied",{"path":450,"title":451,"description":452,"excerpt":384,"author":6,"date":453,"category":432,"localeGroup":454},"\u002Fguides\u002Fadminister-docker-minecraft-server-rcon-console","Administer a Docker Minecraft Server Safely with RCON and Console Access","Need to op a player, manage the whitelist, or stop the server cleanly? This guide shows how to use RCON and interactive console access with itzg\u002Fminecraft-server without exposing extra risk.","2026-03-08","docker-minecraft-rcon-console",{"path":456,"title":457,"description":458,"excerpt":384,"author":6,"date":459,"category":425,"localeGroup":460},"\u002Fguides\u002Fminecraft-domain-without-port-srv-record","Minecraft Domain Without a Port: How to Set Up an SRV Record","Want players to join via example.com instead of an IP and port? This guide shows how SRV records work for Minecraft Java Edition and how to configure them correctly.","2026-03-07","minecraft-srv-record-domain",{"path":462,"title":463,"description":464,"excerpt":384,"author":6,"date":465,"category":425,"localeGroup":466},"\u002Fguides\u002Fopen-port-25565-minecraft-server-hetzner-linux","How to Open Port 25565 for a Minecraft Server on Hetzner and Linux","Players cannot join even though the container is running? This guide shows how to open port 25565 correctly across Docker, UFW, and the Hetzner Cloud Firewall.","2026-03-05","open-port-25565-hetzner-linux",{"path":468,"title":469,"description":470,"excerpt":384,"author":6,"date":471,"category":432,"localeGroup":472},"\u002Fguides\u002Fdetermining-correct-java-version-for-operating-minecraft-server","Determining the Correct Java Version for Operating a Minecraft Server","If you want to set up a Minecraft server, you may encounter an error message related to the Java version when starting the server. In this article, you will learn how to determine the correct Java version for your Minecraft server.","2025-01-31","java-version-minecraft-server",{"path":474,"title":475,"description":476,"excerpt":384,"author":6,"date":477,"category":432,"localeGroup":478},"\u002Fguides\u002Fminecraft-server-with-docker-on-hetzner-cloud","Setting up a Minecraft Server on a Hetzner Cloud Server with Docker Compose","In this article, we will show you how to set up a server for Minecraft: Java Edition on a Hetzner Cloud server. We will go through the steps of creating the cloud server, installing Debian, setting up an SSH key, and configuring Docker Compose for easy server management.","2025-01-28","hetzner-docker-setup",[480,481,482,483,484,485,486,487,488,489,490,474,400,438,434,428,421,468,462,456,450,444],"\u002Fde\u002Fguides\u002Fminecraft-server-with-docker-on-hetzner-cloud","\u002Fde\u002Fguides\u002Fminecraft-server-lag-tps-mspt-cant-keep-up","\u002Fde\u002Fguides\u002Fspark-profiler-paper-docker","\u002Fde\u002Fguides\u002Fpaper-view-distance-vs-simulation-distance","\u002Fde\u002Fguides\u002Fpaper-vs-vanilla-vs-fabric-vs-forge","\u002Fde\u002Fguides\u002Fminecraft-crossplay-geyser-floodgate","\u002Fde\u002Fguides\u002Fdetermining-correct-java-version-for-operating-minecraft-server","\u002Fde\u002Fguides\u002Fopen-port-25565-minecraft-server-hetzner-linux","\u002Fde\u002Fguides\u002Fminecraft-domain-without-port-srv-record","\u002Fde\u002Fguides\u002Fadminister-docker-minecraft-server-rcon-console","\u002Fde\u002Fguides\u002Ffix-permission-denied-itzg-docker-minecraft-server",1775292570205]