# Record block limits and byte size limits

Records are subject to technical limits that apply regardless of your DatoCMS pricing plan. These limits are in place to protect the reliability and performance of our shared infrastructure.

## Record Block Limits

### Maximum number of blocks per record

Each record can have **up to 500 blocks, shared between all of a record's locales.** Examples:

-   A single locale can use all 500 blocks for itself
-   Two locales can split it 250 each, or 400 for one locale and 100 for the other
    
-   Five locales can split it 100 each, or any way they want, as long as the record total is less than 500
    

You do not need to "pre-assign" a particular number of blocks per locale. The limit is dynamically calculated as you type, and if you use more blocks in one locale, the others will naturally have fewer remaining. There is only ever one **per-record total blocks limit, not a per-locale one**.

### **How to see the number of blocks currently used**

**The record sidebar always shows the Currently used blocks**, e.g. `90/500 (18%)`.

Additionally, the system will show you a warning at the top of the record if you are at risk of hitting the record limit.

(Image content)

### Maximum block nesting depth

You can nest up to **5 layers of blocks** inside each other**.** If you reach the limit, you will see a "Reached maximum blocks depth!" warning:

(Image content)

### How to avoid hitting the blocks limit

We recommend keeping these limits in mind when you design your schema. Consider splitting up overly complex/long models into several smaller ones, and use a Link field to reference them from one another. Not only does this help you avoid reaching the limits, it also makes the editor experience more pleasant — it's generally easier to work on a few well-organized, mid-sized records than a single huge, long one.

## Record Byte Size Limits

Records must stay under **300 KB**, including the content in all of its **blocks, fields and locales.**

Please note that hidden content, such as invisible markup & metadata (most commonly found in HTML fields), also count towards this limit. You will see a warning below the field if we detect a field with excessive hidden content.

(Image content)

In that case, you should edit the source code to make sure there is no unnecessary metadata or other hidden content in the field. **The most frequent source of unexpected hidden content is copying & pasting from other desktop or web apps, such as word processors or design tools**, which can add metadata to their copied text for their internal use. Such metadata is not useful in the context of DatoCMS and your frontends and can usually be safely deleted.

## What to do if you hit the record block or size limits

First, please consider whether your model schema and fields can be modified to better fit within the limits. You can split up overly an complex model with too many fields into several smaller ones, for example, and use Link fields to reference them from one another.

For the cases where an extremely long page (privacy policy, legal terms & conditions, etc.) cannot be further subdivided and must have very long text and blocks in multiple locales, you can consider making one record per locale. This makes for a slightly awkward editor and developer experience, but it is better than running out of space or blocks altogether.

As a last resort, in exceptional cases, we *may* raise these limits after a technical evaluation of your project. Please [contact support](https://www.datocms.com/support.md?topics=technical-support%2Fgeneral-request) and we'll review your model schema and record contents. If we cannot find a suitable workaround, we may *slightly* increase the limits — but only if we determine, in our judgment, that doing so would not degrade performance or reliability for you or other customers.

## Related content in "Content modelling"

- [Introduction to Content Modeling](https://www.datocms.com/docs/content-modelling.md)
- [Single instance models](https://www.datocms.com/docs/content-modelling/single-instance.md)
- [Record ordering](https://www.datocms.com/docs/content-modelling/record-ordering.md)
- [Hierarchical sorting (Tree-like collections)](https://www.datocms.com/docs/content-modelling/hierarchical-sorting.md)
- [Record block limits and byte size limits](https://www.datocms.com/docs/content-modelling/record-block-limits-and-byte-size-limits.md)
- [Blocks](https://www.datocms.com/docs/content-modelling/blocks.md)
- [Modular content fields](https://www.datocms.com/docs/content-modelling/modular-content.md)
- [Structured text fields](https://www.datocms.com/docs/content-modelling/structured-text.md)
- [Link fields](https://www.datocms.com/docs/content-modelling/links.md)
- [SEO fields](https://www.datocms.com/docs/content-modelling/seo-fields.md)
- [Slugs and permalinks](https://www.datocms.com/docs/content-modelling/slug-permalinks.md)
- [External video field](https://www.datocms.com/docs/content-modelling/external-video-field.md)
- [Validations](https://www.datocms.com/docs/content-modelling/validations.md)
- [Data consistency: key concepts and implications](https://www.datocms.com/docs/content-modelling/data-migration.md)