---
title: Metaobject limits
description: >-
  Review the limits for metaobject definitions, fields, and entries per shop
  (including apps), and Liquid rendering limits for themes.
source_url:
  html: 'https://shopify.dev/docs/apps/build/metaobjects/metaobject-limits'
  md: 'https://shopify.dev/docs/apps/build/metaobjects/metaobject-limits.md'
---

# Metaobject limits

This document lists how many metaobject definitions, fields, and entries can be created per shop, including apps, by plan. It also covers the limits that apply when a theme renders metaobjects in Liquid.

### Metaobject definition limits

**Note:**

[Standard metaobject](https://shopify.dev/docs/api/admin-graphql/latest/objects/StandardMetaobjectDefinitionTemplate) definitions don't count towards limits.

#### App definitions

Each app installed on a shop can create up to 128 metaobject definitions.

**Note:**

Definitions configured in TOML configuration are app scoped.

#### Merchant definitions

The merchant's Shopify plan limits how many metafield object definitions they can create.

| Plan | Maximum allowed definitions |
| - | - |
| Basic | 128 |
| Shopify | 128 |
| Advanced | 128 |
| Plus | 256 |
| Enterprise | 256 |

#### Fields

Each metaobject definition can have up to 40 fields.

### Metaobject entry limits

**Note:**

[Standard metaobject](https://shopify.dev/docs/api/admin-graphql/latest/objects/StandardMetaobjectDefinitionTemplate) entries don't count towards limits.

Each metaobject definition can have up to 1,000,000 entries. This limit applies to each definition separately. Entries in one definition don't count toward another definition's limit. When a definition reaches its limit, creating another entry fails with a `MAX_OBJECTS_EXCEEDED` error.

List metafields can reference up to 1,024 metaobjects. For more information, refer to [lists type limits](https://shopify.dev/docs/apps/build/metafields/metafield-limits#lists-type-limits).

### Liquid limits

These limits apply to each page render when a theme loads metaobjects in Liquid. They're separate from the storage limits above: a definition can store up to 1,000,000 entries and a list metafield can reference up to 1,024 metaobjects, but a single page can load only some of them.

| Limit | Value |
| - | - |
| Entries returned when you loop over [`metaobject_definition.values`](https://shopify.dev/docs/api/liquid/objects/metaobject_definition#metaobject_definition-values) or a `list.metaobject_reference` or `list.mixed_reference` metafield without the [`paginate`](https://shopify.dev/docs/api/liquid/tags/paginate) tag | 50 |
| Entries per page when you use the `paginate` tag | 250 |
| Unique entries of a single metaobject type that can be loaded per page render | 1,000 |
| Unique handles of a single metaobject type that can be looked up with `metaobjects.TYPE[handle]` per page render, including handles that don't match a published entry | 20 |
| Metaobject definitions that can be accessed through the [`metaobjects`](https://shopify.dev/docs/api/liquid/objects/metaobjects) object per page render | 50 |

**Note:**

The `size` of a `list.metaobject_reference` or `list.mixed_reference` metafield returns the total number of referenced entries, even when a loop without `paginate` returns only the first 50. The `size` of `metaobject_definition.values` and `metaobject_definition.values_count` are subject to the [count limit](https://shopify.dev/docs/storefronts/themes/best-practices/performance/platform#pagination-limits), so they return `25,001` for definitions with more than 25,000 entries. Exceeding the per-type limits renders a Liquid error instead of the entries.

#### Loop over more than 50 entries

To render more than 50 entries from a metaobject list, wrap the loop in the `paginate` tag. Each page returns up to 250 entries. If the list can hold more than 250 entries, then use the `paginate` object or the `default_pagination` filter to render page navigation, or narrow the list before rendering it:

```liquid
{% paginate product.metafields.custom.swatches.value by 250 %}
  {% for swatch in product.metafields.custom.swatches.value %}
    {{ swatch.name.value }}
  {% endfor %}
{% endpaginate %}
```

***
