๐
Governor Limits Cheat Sheet
A clear, filterable table of Salesforce per-transaction limits, with a clean split between the synchronous and asynchronous context.
| Category | Limit | Synchronous | Asynchronous |
|---|---|---|---|
| SOQL | Total SOQL queries | 100 | 200 |
| SOQL | Records retrieved by SOQL | 50,000 | 50,000 |
| SOQL | Records retrieved by Database.getQueryLocator | 10,000 | 10,000 |
| SOSL | Total SOSL queries | 20 | 20 |
| SOSL | Records retrieved by a single SOSL | 2,000 | 2,000 |
| DML | Total DML statements | 150 | 150 |
| DML | Records processed by DML | 10,000 | 10,000 |
| DML | Approval.process / Database.emptyRecycleBin calls | 150 | 150 |
| CPU / Memory |
Maximum CPU time (timeout) CPU time excludes time waiting for callouts and database operations.
|
10,000 ms | 60,000 ms |
| CPU / Memory | Maximum heap size | 6 MB | 12 MB |
| Callouts | Callouts (HTTP / web service) | 100 | 100 |
| Callouts | Cumulative callout timeout | 120 s | 120 s |
| Async |
@future method invocations @future methods cannot be called from an asynchronous context.
|
50 | 0 |
| Async |
Jobs added to the queue (System.enqueueJob) In Queueable/Batch/@future you can chain only 1 more Queueable job.
|
50 | 1 |
| Async |
Batch jobs queued/active Holding/Queued + Active combined.
|
5 | 5 |
| sendEmail method calls | 10 | 10 | |
| Other |
Total executed statements Indirectly bounded by the CPU time limit.
|
no hard limit | no hard limit |
| Other | Maximum describe-recursion stack depth | 100 | 100 |
No results for the given criteria.
Limits apply to a single Apex transaction. Values are for reference โ always verify the current values in the official Salesforce โApex Governor Limitsโ documentation.