Roblox DataStore limits: requests per minute, size per key, key names
Short answer
Per server, Roblox allows 60 + numPlayers × 40 GetAsync calls a minute, the same for SetAsync, IncrementAsync and UpdateAsync, and 5 + numPlayers × 2 GetSortedAsync calls. Each key holds up to 4,194,304 characters (4 MB) and every key across all servers has a 4 MB-per-minute write limit. Key names and data store names can be up to 50 characters.
Copy-paste code
Check the remaining budget before a burst of writes
local DataStoreService = game:GetService("DataStoreService")
local function canWrite(n)
local left = DataStoreService:GetRequestBudgetForRequestType(Enum.DataStoreRequestType.SetIncrementAsync)
return left >= n
end
-- UpdateAsync uses the SetIncrementAsync budget too
if canWrite(5) then
-- safe to save five keys now
else
task.wait(6) -- the budget refills every minute; try again shortly
end| Limit | Value |
|---|---|
| GetAsync per server | 60 + numPlayers × 40 per minute |
| SetAsync / IncrementAsync / UpdateAsync | 60 + numPlayers × 40 per minute |
| RemoveAsync | 60 + numPlayers × 40 per minute |
| GetSortedAsync (OrderedDataStore) | 5 + numPlayers × 2 per minute |
| Data per key | 4,194,304 characters (stored as a JSON string) |
| Writes to one key, all servers | 4 MB per minute |
| Key name / data store name | 50 characters each |
Source: https://create.roblox.com/docs/cloud-services/data-stores/error-codes-and-limits
Good to know
Size: data is JSON-encoded, so a table of 10,000 small items can reach the 4 MB limit faster than you expect. Check with #game:GetService("HttpService"):JSONEncode(data).
If you hit the per-key write limit, you are writing the same key too often (for example, saving on every coin pickup). Save on a timer and on leave instead.
Studwright: Roblox systems that never lose saves
from $12Studwright's SaveData is tested against an engine mock with DataStore outages and request budgets, so saves keep working when Roblox throttles.
Secure checkout · 14-day fix-or-refund if it doesn't work as described (terms)Questions
What happens when I go over the budget?
Requests are queued and then throttled; the call can wait or fail with an error code. Wrap every DataStore call in pcall.
Is there a limit on the number of keys?
Not on the count of keys in the docs' table; the limits are per request, per key size and per key write rate.
Do OrderedDataStores have the same limits?
Their sorted reads (GetSortedAsync) have a much smaller budget: 5 + numPlayers × 2 a minute, so cache leaderboard pages.
Free: the Roblox Starter Kit
7 free Luau modules (damage, pets, shop formatting, admin audit log, tycoon guards and more) plus 3 free calculators, then 5 short emails with the scripting fixes we see go wrong most often.