Skip to main content
Network performance directly affects player experience through latency, bandwidth usage, and packet processing. Paper provides extensive network optimizations and configuration options.

Chunk Send Rate Limiting

Paper limits how quickly chunks are sent to players to prevent network congestion and client lag. File: config/paper-global.yml

Configuration

For servers with gigabit connections and players on fast internet, increase to 100-150 for smoother teleportation and flight.
Unlimited chunk send rate (-1) can overwhelm clients with slow connections or cause network buffer buildup.

Auto-Configure Send Distance

File: config/paper-global.yml
When enabled, Paper matches the chunk send radius to each client’s configured view distance (if lower than the server’s). Example:
  • Server view distance: 10 chunks
  • Player A’s client: 8 chunks
  • Player B’s client: 12 chunks
With auto-config-send-distance: true:
  • Player A receives 8 chunks (saves bandwidth)
  • Player B receives 10 chunks (server maximum)
This significantly reduces bandwidth usage without affecting player experience, as clients with low view distance can’t render additional chunks anyway.

Packet Rate Limiting

Paper includes packet rate limiting to prevent packet spam exploits and reduce processing overhead. File: config/paper-global.yml

Global Packet Limiting

  • interval: Time window for rate measurement
  • max-packet-rate: Maximum packets allowed in the interval
  • action:
    • KICK: Disconnect the player
    • DROP: Silently drop excess packets
With interval: 7.0 and max-packet-rate: 500.0:The player can send up to 500 packets in a 7-second window, averaging ~71 packets/second.If exceeded, the configured action is taken.

Per-Packet Type Overrides

Configure specific packet types differently:
Common packets to limit:
Use DROP for non-critical packets to avoid kicking players experiencing network issues. Use KICK for potential exploit packets.

Spam Limiters

File: config/paper-global.yml

Tab-Complete Spam

Limits tab-completion requests (e.g., typing commands).
  • increment: Violation points added per request
  • limit: Maximum points before action taken

Recipe Spam

Limits recipe book interactions.

Incoming Packet Threshold

Kick players exceeding this many packets per second.
  • Default: 300
  • Disabled: Set to -1
Setting too low can kick legitimate players during intensive actions (e.g., inventory sorting). Keep at 300 or higher.

Network Compression

File: config/paper-global.yml

Compression Level

Controls network packet compression (zlib).
For servers on localhost or LAN, disable compression (-1) to reduce CPU usage. For internet servers with limited bandwidth, use 6-7.
Configuration:
Or let Paper auto-configure:

Region File Compression

File: config/paper-global.yml
Changing compression format is an unsupported setting. Backup your world before changing. Existing chunks remain in their original format until resaved.

Entity Tracking and Network Updates

Entity Tracking Range

Controls the distance at which entity position updates are sent to clients. File: config/spigot.yml
Reducing tracking ranges decreases network bandwidth: Bandwidth optimization example:
Players won’t see entities beyond tracking range, which may affect gameplay (e.g., not seeing distant mobs or players).

Full Position for Hard-Colliding Entities

File: config/paper-global.yml
Sends full position updates for entities involved in collisions.
  • Enabled: More accurate collisions, slightly higher bandwidth
  • Disabled: Saves bandwidth, may cause collision issues
Keep enabled unless bandwidth is extremely limited.

Player Connection Limits

File: config/paper-global.yml
Limits how many players can join per tick, preventing join spam lag.
  • Default: 5 players per tick
  • High traffic: Increase to 10-20
  • DDoS protection: Reduce to 1-2

Proxy Configuration

BungeeCord

File: config/paper-global.yml
File: spigot.yml
Never enable BungeeCord mode without a properly configured firewall. Exposed servers with BungeeCord enabled allow player UUID spoofing.

Velocity

File: config/paper-global.yml
Or use environment variable:
Velocity is recommended over BungeeCord for better performance and modern features.

HAProxy / Proxy Protocol

Enable when using HAProxy or other proxy protocol-compatible proxies.

Network Performance Monitoring

Monitor Network Usage

Use system tools to monitor bandwidth:

Spark Profiling

Profile packet handling:
Look for:
  • NetworkManager - Packet processing
  • PacketEncoder / PacketDecoder - Packet serialization

Optimization Strategies

1. High-Bandwidth Server

2. Limited-Bandwidth Server

3. DDoS Protection

Troubleshooting

Slow Chunk Loading for Players

Symptoms: Chunks load slowly during teleportation or flight Solutions:
  1. Increase player-max-chunk-send-rate to 100+
  2. Enable auto-config-send-distance
  3. Reduce network compression level

Players Getting Kicked

Symptoms: “Exceeded packet rate limit” kicks Solutions:
  1. Increase max-packet-rate in packet-limiter
  2. Increase incoming-packet-threshold
  3. Change action from KICK to DROP for specific packets

High Bandwidth Usage

Symptoms: Server using excessive bandwidth Solutions:
  1. Reduce entity tracking ranges
  2. Reduce player-max-chunk-send-rate
  3. Increase compression level to 6-7
  4. Enable auto-config-send-distance

Compression CPU Usage

Symptoms: High CPU usage in packet encoding Solutions:
  1. Reduce compression level to 3-4
  2. Ensure you’re not on localhost with compression enabled

Advanced: Client Interaction Validation

File: config/paper-global.yml
Controls server-side validation leniency for player interactions.
  • Default: Use vanilla validation
  • Higher values: Allow interactions from slightly farther (helps with lag)
  • Lower values: Stricter anti-cheat

See Also