Valheim "Failed to send data k_EResultLimitExceeded" Fix
If your Valheim dedicated server freezes the whole world for several seconds on a regular cycle, and the server console logs a line like the one below, you have hit Steam's networking send-rate limit. This is not a corrupt world and it is not your internet connection.
valheim-server: Failed to send data k_EResultLimitExceeded
During the freeze, players take damage they cannot react to, builds stop responding, and entities rubber-band. The pattern is the giveaway: it repeats on a timer rather than during random combat. This page explains exactly what the error means and the four fixes that actually stop it, in the order worth trying.
What k_EResultLimitExceeded actually means
Valheim's networking runs over Steam's datagram transport (the same ISteamNetworkingSockets layer Valve ships with the game). Steam enforces a per-connection send-rate cap. When the server tries to push more data than that cap allows, the send call returns the result code k_EResultLimitExceeded and the packet is dropped instead of queued. To the players, dropped packets look like a hard network stall.
The reason the limit gets hit at all is that Valheim ships with a low hard-coded send/receive limit, historically around 64 KB/s per direction. That ceiling was fine for two friends in the Meadows. It is not fine once you have a full lobby, a large map being explored, lots of dropped items on the ground, or a modded server pushing extra ZDO (networked object) traffic. The moment the server needs to sync more than the cap allows, Steam starts rejecting sends and you get the freeze.
Why it happens on a regular cycle
The "every few minutes" rhythm is the world-save cycle colliding with the send limit. By default a Valheim server autosaves every 30 minutes (-saveinterval 1800, value in seconds), and it also writes rolling backups. Around each save, the server has a burst of disk I/O and a burst of state to re-sync to clients. If the host has slow storage or the connection is already near the send cap, that burst tips it over the edge and the limit error fires. People running shorter custom save intervals (every 10 to 15 minutes) report the freeze on exactly that shorter cadence, which confirms the link. The official save and backup arguments are:
-saveinterval 1800: seconds between autosaves (default 30 minutes).-backups 4: how many automatic backups to keep.-backupshort 7200: interval for the first backup (default 2 hours).-backuplong 43200: interval for later backups (default 12 hours).
Fix 1: Raise Valheim's send/receive limit
The most direct fix is to lift the hard-coded 64 KB/s ceiling so the server stops saturating it. The community-standard approach, documented in detail by the long-running James A. Chambers Valheim server guides, modifies the send/receive rate the game requests from Steam. After raising it, the server can push the full sync volume without Steam rejecting packets, and the periodic freeze disappears.
Two practical routes:
- Mod route (easiest, recommended for modded servers): install the BetterNetworking mod (by CW-Jesse) on both the server and every client. It raises the configurable send/receive limits and compresses traffic. Because it changes how data is packed, all connected clients must run a matching version. See our BetterNetworking setup notes for the exact config keys.
- Manual route (vanilla servers): follow the send/receive-limit edit described in the Chambers guide for your platform. This avoids requiring clients to install anything, at the cost of a more involved server-side change that you must re-apply after game updates.
Important: if you raise the limit with a mod, the limit only helps when both ends agree. A server with raised limits talking to vanilla clients still negotiates down. Confirm every player is on the same BetterNetworking version, or you will still see drops.
Fix 2: Tune the operating-system UDP buffers (Linux)
On a self-hosted Linux box, the kernel's default socket buffers are small. When Valheim bursts traffic around a save, an undersized buffer drops packets before Steam even gets them, which compounds the limit error. Raise the UDP buffer ceilings:
sudo sysctl -w net.core.rmem_max=26214400
sudo sysctl -w net.core.wmem_max=26214400
To make this survive a reboot, add the same two lines (without sysctl -w) to /etc/sysctl.conf or a file in /etc/sysctl.d/, then run sudo sysctl --system. These values are a safe starting point; the exact numbers matter less than moving off the tiny defaults.
Fix 3: Fix Docker / NAT networking
A large share of these reports come from servers running in Docker with bridge networking. Bridge mode puts the container behind an extra NAT layer, which mangles the UDP path Steam relies on and makes rate-limiting far more likely. The fix is to take the container off the NAT:
- Run the container in host network mode (
--network host) instead of the default bridge. - If you must use bridge mode, explicitly forward UDP ports 2456 to 2458 to the container, not just 2456 to 2457. Valheim uses three consecutive UDP ports.
- Check for packet loss between the host and the wider network. Even 1 to 2 percent loss on the server's uplink will trigger this error under load.
This is consistent with what server operators report: switching the popular Valheim Docker images to host networking, forwarding the full 2456 to 2458 range, and bumping UDP buffers resolves the freeze on otherwise healthy hardware.
Fix 4: Ease the save and storage pressure
If the freeze tracks your save cycle, reduce how violent each save is:
- Use fast storage. NVMe SSD instead of SATA or a network share cuts the I/O stall that each save introduces. A save on a slow disk is the single most common cause of the periodic version of this freeze.
- Do not over-shorten the save interval. Dropping
-saveintervalbelow the 1800-second default means more frequent bursts, more chances to hit the limit. Leave it at default unless you have a reason not to. - Keep backup counts sane. Writing many large backups stacks I/O. The defaults above are reasonable; see creating backups for a safe schedule.
- Watch free disk space. A server low on disk will stall hard during saves. Out-of-disk is a silent killer on small VMs.
How to confirm the fix worked
After applying a change, watch the server console for a full save cycle (at least one -saveinterval period). You want to see the periodic World saved lines appear without a matching Failed to send data k_EResultLimitExceeded burst, and no client report of a freeze at that moment. If the error still fires, you have not raised the effective limit on both ends, or a client is still on a mismatched mod version.
Quick decision path
- Modded server, all players cooperative: install BetterNetworking on server and every client. Done in most cases.
- Vanilla server you control fully: apply the manual send/receive-limit edit, then bump UDP buffers.
- Running in Docker: switch to host networking and forward UDP 2456 to 2458 before anything else.
- Freeze tracks the save timer: move the world to NVMe and stop shortening the save interval.
Related guides
- BetterNetworking mod setup
- Dedicated server desync fixes
- Ashlands performance tuning
- Full troubleshooting guide
- Dedicated server setup guide
If you would rather not maintain kernel buffers, Steam limits, and Docker network modes by hand, Supercraft Valheim hosting runs every server on host networking with the send/receive limits already raised and NVMe storage for fast saves, so the k_EResultLimitExceeded freeze cycle never appears. Hourly backups, 5 regions, Ryzen X3D hardware, cancel any time.