Limits and quotas
Every plan gate and hard limit in one place.
On this page
Two different kinds of number apply to a workspace. Plan gates change when you change plan. Platform limits are the same on every plan, including Enterprise.
Plan gates
| Free | Starter | Pro | Enterprise | |
|---|---|---|---|---|
| Monthly price | $0 | $25 | $50 | Custom |
| Annual price | $0 | $240 | $480 | Custom |
| Included AI credits | 30 at signup, then 5 a day for 4 days | 100 per month | 100 per month | 1,000 per month |
| Credits reset monthly | No | Yes | Yes | Yes |
| Credit rate | $0.25 | $0.25 | $0.50 | $0.25 |
| Included sites | 1 | 1 | 1 | Unlimited |
| Buy extra sites | No | Yes | Yes | Not needed |
| Raise the monthly credit allowance | No | Yes | Yes | Arranged with the team |
| Buy credit top ups | After a paid plan | Yes | Yes | Yes |
| Included emails a site sends each month | 50 | 10,000 | 30,000 | 50,000 |
| Each extra 2,000 emails | Not available | 8 credits | 4 credits | 8 credits |
| Email domains | No | 3 per site | 3 per site | 3 per site |
| Custom domains | No | 10 per site | 10 per site | 10 per site |
| Hide the Modulify badge | No | Yes | Yes | Yes |
| Export code, data, storage, analytics | No | Yes | Yes | Yes |
| Daily storage backups | No | Yes | Yes | Yes |
| Restore a storage backup | No | Yes | Yes | Yes |
| Daily database backups | No | Yes | Yes | Yes |
| Team members | No | No | Yes | Yes |
| Dedicated support | No | No | No | Yes |
The credits on Free are not a monthly allowance. A new account gets 30 when it is created and 5 more a day for the next 4 days, each landing 24 hours after the last, counted from the moment the account was created. After the last one the free allowance never grows again and never resets, and accounts created before the daily top up existed already hold all of it. Every other plan refills at the start of each calendar month, except a cancelled plan in the month it ends.
An account created through a Share and Earn invite link starts with 5 credits on top of that, in the top up pool rather than the allowance, so they survive the reset. Nothing there is capped: a workspace can hold any number of earned or purchased top up credits.
Included emails are counted per site and per calendar month, they reset on the 1st, and they cost no credits. A recipient is a send, so one message to five people uses five. A paid workspace can send past its included emails: each further block of 2,000 sends costs 8 credits on Starter and Enterprise and 4 on Pro, charged automatically the moment a send crosses the line, and sends left over from a block carry over to the next month. Once the workspace has no credits for the next block, sending pauses until credits are added, and the workspace owner gets an email. A free workspace stops at 50, and a message that needs more sends than are left is refused whole. An email that chat or a connected AI client sends for you counts the same way. A test email never counts, on any plan, and a site can send one every 10 seconds. See Emails.
Email domains let a site send and receive email at a domain of your own. Adding one needs a paid plan, and a site holds at most 3. Using them needs one too: once the plan ends and the workspace is on Free, the domains a site already has are paused. They stay on the site and can still be removed, but email goes out from the built-in address and mail sent to them is not forwarded until the workspace is on a paid plan again, when they come back on their own, see When your plan ends. A workspace can add up to 10 email domains an hour and 30 a day across all its sites. Every add that passes the checks on the domain, the plan and the limit of 3 counts, including one that then fails because the mail provider is busy and a domain removed since, and an add past that is refused with how long to wait. See Use your own domain.
Custom domains put a site on addresses you own. Adding one, or the www variant of one, needs a paid plan, and a site holds at most 10, each with its own www variant on top. One more is refused with A site can have up to 10 custom domains! Serving them needs the paid plan too: once the plan ends and the workspace is on Free, the domains a site already has are paused. They stay on the site and can still be removed, but none of them shows the site until the workspace is on a paid plan again, when they come back on their own. See When your plan ends.
Sites
A site counts against the workspace it lives in, and a deleted site frees its slot straight away. An archived site still counts and is billed the same, because archiving only takes it off your lists.
| Limit | Value |
|---|---|
| Sites included with Starter | 1 |
| Sites included with Pro | 1 |
| Extra site, monthly | $10 per month each |
| Extra site, annual | $120 per year each |
| Maximum sites with extra sites on Starter or Pro | 10 |
Extra sites stop at that maximum, counting the sites the plan includes. The Sites dropdown on the plan cards goes no higher than 10, and the API refuses more with You can have at most 10 sites in total!
Going over the limit does not delete anything. Sites past the limit are locked, keeping the most recently updated ones open. Archived sites take part in that like any other, so an archived site can be locked or can keep a slot open. A locked site shows a padlock and the words Locked Item, cannot be opened, and refuses to publish. Chat refuses new messages for it too, including ones sent by a connected AI client, and a message queued for it waits until the site is unlocked.
Monthly credit allowance
The AI credits dropdown on a Starter or Pro card offers six amounts.
| Credits per month | Extra cost on Starter | Extra cost on Pro |
|---|---|---|
| 100 | Included | Included |
| 200 | $25.00 | $50.00 |
| 600 | $125.00 | $250.00 |
| 1,000 | $225.00 | $450.00 |
| 3,000 | $725.00 | $1,450.00 |
| 5,000 | $1,225.00 | $2,450.00 |
Those are the monthly figures, added to the plan price. Anything above the included 100 is charged at the plan's per-credit rate. Choosing annual billing applies the same discount to the extra credits as to the plan.
An increase takes effect at your next renewal, not immediately.
Credit packs
One-off packs, available on every paid plan. On Free they unlock once the workspace owner has been on a paid plan. See Buy credits.
| Pack | Free, Starter, Enterprise | Pro |
|---|---|---|
| 100 | $25.00 | $50.00 |
| 200 | $50.00 | $100.00 |
| 600 | $150.00 | $300.00 |
| 1,000 | $250.00 | $500.00 |
| 3,000 | $750.00 | $1,500.00 |
| 5,000 | $1,250.00 | $2,500.00 |
Workspaces and people
| Limit | Value |
|---|---|
| Workspaces you can own | 5 |
| Members in one workspace | 50 |
| Custom roles in one workspace | 10 |
| Pending invitations listed | 50 |
| Workspace name | 2 to 48 characters |
| Email domain adds, across the workspace's sites, failed ones included | 10 an hour, 30 a day |
| Email domain verification restarts, across the workspace's sites | 10 an hour |
Inviting members needs Pro or Enterprise. On Free or Starter the invite button opens an upgrade prompt reading "You need the Pro plan to invite members to your workspace." Over the member limit, the invite is refused with This workspace has reached its 50-member limit. Contact support to increase it!
Per site
None of these change with your plan.
| Limit | Value |
|---|---|
| Scheduled jobs per site | 10 |
| Steps per scheduled job | 1 |
| Headers per job step | 20 |
| Webhooks per site | 10 |
| Deploy hooks per site | 10 |
| Deploy hook calls per minute, per hook | 10 |
| Deploy hook call log kept for | Until you clear it |
| Analytics API requests per minute, per site | 120 |
| Analytics API lookups per hour, per site | 1,200 |
| Analytics lookups per hour from access tokens, shared by MCP clients and the HTTP API, per site | 1,200 |
| Recipients on one email | 50 |
| Emails a minute, per site, counted per recipient | 60 |
| Test emails, per site | 1 every 10 seconds, free |
| Attachments on one email | 10, up to 7 MB in total |
| Email history kept for | Until you clear it |
| Emails forwarded from one sender to one site | 10 an hour |
| Emails forwarded for one site | 30 an hour, 200 a day |
| Emails forwarded to one forwarding address, across every site it gets mail from | 100 an hour, 500 a day |
| Largest email that can be forwarded | 25 MB |
| Forwarding addresses per site | 5 |
| Forwarding addresses one workspace can add | 30 an hour |
| Forwarding confirmation links to one address | 1 a minute from the same site, 5 a day across all sites |
| Forwarding confirmation links per site | 20 a day |
| Forwarding confirmation links per workspace | 50 a day |
| Forwarding confirmation link valid for | 7 days |
| Environment variables per site | 200 |
| Variable name | 255 characters |
| Variable value | 10,000 characters |
| Skills enabled per site | 10 |
| Connectors enabled per site | 10 |
| Version history page size | 10 |
| Manual storage backups per 24 hours | 10 |
| Storage backup size, files before zipping | 4 TB |
| Files and folders in one storage backup | 100,000 |
| Storage backups kept for | 1 year |
| Failed storage backups kept for | 1 day |
| Storage restores running at once | 1 |
| Files and folders selected in one storage restore | 200 |
| Text file previewed in Storage or in a backup | 5 MB |
| Text shown when previewing a file | 256 KB |
| Media previewed from a storage backup | 25 MB |
| Backup file read as text from chat or MCP | 32 KB |
| Manual database backups per 24 hours | 10 |
| Database size for one database backup | 100 MB |
| Exported SQL in one database backup | 150 MB |
| Export time for one database backup | 6 minutes |
| Database backups kept for | 1 year |
| Failed database backups kept for | 1 day |
| Database size for a clone or duplicate that copies content, newer database | 25 MB |
| Exported SQL for a clone or duplicate that copies content, newer database | 150 MB |
| Time to copy the content for a clone or duplicate, newer database | 100 seconds |
Going over shows the limit in the message, for example Cron limit reached! You can have a maximum of 10 crons per site! or You can enable up to 10 skills per project! A deploy hook called more than 10 times in a minute answers This deploy hook was called more than 10 times in a minute. Wait a minute and call it again! See Deploy hooks. An analytics API request over either limit answers 429 with a Retry-After header. See Analytics HTTP API. Access tokens, through MCP clients or the HTTP API, count their analytics lookups apart from the site's API key, so neither can use up the other's hour, and over it an analytics tool fails with Access tokens, through MCP clients or the API, used their 1,200 analytics lookups for this site this hour. Wait and try again! See Tokens and scopes. A site that sends to more than 60 recipients in a minute answers This site sent more than 60 emails in a minute. Wait a minute and send again! See Emails. Mail sent to a site over one of the forwarding limits is held and tried again every 10 minutes, oldest first, for up to 6 days. A sender is counted by the domain of their address, or by the address itself at a large shared mail provider such as Gmail or Outlook, and mail from the site's own sending address has no sender limit. Modulify also caps how many emails it forwards across the whole platform each hour and each day, see Forwarding limits.
Storage and database backups are the exception to the line above the table. Their limits do not change with your plan, but they need a paid plan to run at all, and the newest archive of a site is kept even once it is older than the table above keeps backups for. Database backups also cover sites on the newer database only. Manual backups are counted per site and per kind, and a backup taken from chat or over MCP counts against the same allowance as Backup. Daily backups are on for every site and can be turned off per site and per kind, which stops only the daily run and changes none of these limits. Restoring a storage backup needs a paid plan as well, while browsing one, previewing its files and downloading them work on every plan. Chat and a connected AI client meet the same gates: they browse a backup and read a text file out of it on any plan, up to 32 KB of one file at a time, and a restore they start needs the paid plan and the Delete projects permission. See Backups.
Files and text
| Limit | Value |
|---|---|
| Attachments on one chat message | 30 |
| Chat attachment size | 100 MB |
| Storage upload size | 1 GB |
| Storage upload sent in one request | 100 MB |
| Files in one storage move | 5,000 |
| Attachments on one comment | 5 |
| Comment attachment size | 30 MB |
| Comment text | 1,000 characters |
| Rewrites with the comment wand, per person | 20 an hour, 100 a day |
The Storage panel sends a large file in parts, so it takes a file up to the storage upload size, and so does chat when it stores a file from the site's own files. An upload sent in one request is held to the one request size instead: /put on the Storage HTTP API and putObject in your site's storage helper, upload_storage_file from an AI client over MCP, and files and images uploaded in the CMS.
Executable file types are blocked as chat attachments.
Comments from a read-only link
These apply only to people outside the workspace commenting through a site's read-only link, once you have turned on Viewers can comment. Nobody in the workspace is ever held to them.
| Limit | Value |
|---|---|
| Comments, replies, edits and deletions from a read-only link, per person | 10 a minute, 200 a day |
| New comments and replies from a read-only link, per site | 300 an hour from guests, and 300 an hour from signed in viewers |
| Reactions from a read-only link, per person | 60 in 10 minutes, 500 a day |
| Reactions from a read-only link, per site | 600 an hour |
| Comments, replies, edits, deletions and reactions from a read-only link, per network | 60 a minute |
| Requests of any kind from a read-only link, per network | 120 a minute |
| Guest commenters, per site | 60 an hour |
| Guest commenters, per network | 20 an hour |
| Open comment threads from viewers, per site | 200 |
| Open comment threads from viewers, per person | 20 |
Each limit counts in a fixed window, so a minute, an hour or a day starts on the clock rather than at your first comment, and a day starts at midnight UTC. A guest commenter is counted when a browser without an account writes its first comment, reply or reaction and is given a made up name.
Going over one of the counted limits says how long to wait, for example You are commenting too fast. Try again in 42 seconds! The open thread limits wait for threads to be resolved or deleted instead, and read This site has too many open comments from viewers right now! or You have too many open comments on this site. Wait for the team to resolve some! If the limits cannot be checked for a moment, a comment from the link is refused with Comments cannot be saved right now. Try again in a moment! rather than let through.
Names and addresses
| Field | Length |
|---|---|
| Project name | 3 to 64 characters |
| Project description | 640 characters |
| Folder name | 2 to 84 characters |
| Subdomain | 3 to 63 characters |
| Custom domain | 4 to 253 characters |
| Storage backup name | 2 to 84 characters |
| Database backup name | 2 to 84 characters |
| Webhook name | 64 characters |
| Webhook URL | 2,048 characters |
| Deploy hook name | 64 characters |
Next
- Plans explains the page these gates are set from.
- Credits covers how the allowance is spent.
- Share and Earn adds credits without paying, 5 for every person you invite and 50 the first time each of them pays.