Limits
All limits in one place: the fixed limits that are the same for everyone, and the limits that depend on the maker's plan.
Last updated
Fixed limits
Uploading (see Building and importing):
- Code sent as text (by a connected AI, or a code file read in the browser): 500,000 characters. A bigger single file is uploaded as a file.
- One uploaded code or HTML file: 10 MB.
- ZIP: 10 MB compressed, 60 files, 8 MB unpacked, 5 MB per file.
- PDF: 25 MB.
Shared data per drop (see Saving data):
- 50,000 characters per shared value or submission.
- 1,000 shared keys.
- 5,000 submissions.
- 1,000 storage calls per day (Amsterdam time).
Forwarding submissions to a webhook (see Saving data):
- 10 forwards per visitor and 100 per drop per day (Amsterdam time); above that, submissions are still saved.
- 10 tests per drop per day.
- Messages up to 64 KB; Toolcrow waits 5 seconds for the service to answer.
AI inside a drop (see AI inside a drop):
- Answers up to 4,096 tokens, unless a
fetchcall sets its own maximum. - A call without an answer after 25 seconds is stopped.
Other:
- Drop passwords: 8 to 200 characters.
- Drafts from a connected AI: 20 files per draft, 10 MB per file.
- New drops created by a connected AI: 20 per 24 hours, and one request of about 4 MB (the code and file limits from uploading apply as well). The AI writes the whole tool out in that request, and how much it can write at once depends on the AI app; a very large file goes in by uploading it on the New drop page instead (see Building and importing).
- Copies of free tools ("Make this your own", What a drop is): 10 per maker per day (Amsterdam time).
- Visitor feedback is rate-limited per drop, per hour and per day.
When a drop hits a limit
AI calls and shared storage answer a limit in one fixed shape, so a tool can show a clear message instead of breaking:
{ "code": "usage_limit", "resource": "ai", "reason": "daily_limit", "retryAt": "2026-10-21T22:00:00.000Z" }
resource:ai(AI calls),storage_calls(calls to shared storage per day) orstorage_space(stored data).reason:daily_limit(try again afterretryAt, the next midnight in Amsterdam),paused(AI is switched off for now),full(the drop holds the maximum number of records) ortoo_large(one value is too big).retryAtisnullwhen waiting does not help.
With window.claude.complete() the fields are on the error. With Tooldrop.opslaan(), Tooldrop.lezen() and shared window.storage they are on the answer (gelukt: false). With fetch to an AI API they are in the JSON body of the 429 response.
try {
const answer = await window.claude.complete(prompt)
} catch (err) {
if (err.code === 'usage_limit') {
const when = err.retryAt ? new Date(err.retryAt).toLocaleTimeString() : 'later'
showMessage('The AI is busy for today. Try again after ' + when + '.')
}
}
const r = await Tooldrop.opslaan({ name, email })
if (!r.gelukt && r.code === 'usage_limit') showMessage('Saving is not possible right now.')
Limits that depend on the plan
These are set per plan and can change, especially during the beta:
- AI calls per drop per day (see AI inside a drop).
- Email addresses on one drop's invitation list, and invitation emails per 24 hours (see Sharing and access). These do not limit how many people can open a drop. The plans are described at
toolcrow.app/pricing. The dashboard shows today's AI use.
What has no limit
- How long a drop stays online: drops do not expire.
- Private per-visitor storage (
localStorage) in the visitor's browser, beyond what the browser itself allows.
Something missing or unclear? Email hello@toolcrow.app. We answer personally.
